Baixe o app para aproveitar ainda mais
Prévia do material em texto
28/08/2019 Disciplina Portal estacio.webaula.com.br/Classroom/index.html?id=2642009&courseId=13042&classId=1185233&topicId=0&enableForum=S&enableMessage=S… 1/9 Algoritmos Aula 9 - Funções INTRODUÇÃO Um dos grandes objetivos da programação de computadores é criar programas simples e que sejam facilmente entendidos por outras pessoas. Porém, é muito comum que os programas tenham 500, 1000 ou mais linhas de código. Às vezes este número é necessário; outras vezes percebemos que ele pode ser reduzido. Será que não existem partes de um programa que poderíamos separar e tratar como um programa à parte, ou um subprograma? Desta forma, toda vez que aquela parte fosse necessária, chamaríamos somente ela. Isso é possível e tem um nome: procedimentos e funções. E é isso que vamos ver nesta aula. Bons estudos! OBJETIVOS 28/08/2019 Disciplina Portal estacio.webaula.com.br/Classroom/index.html?id=2642009&courseId=13042&classId=1185233&topicId=0&enableForum=S&enableMessage=S… 2/9 Aplicar os conhecimentos adquiridos para criar programas em C++ que usam funções e procedimentos e para utilizar as funções e procedimentos já existentes nos seus programas. 28/08/2019 Disciplina Portal estacio.webaula.com.br/Classroom/index.html?id=2642009&courseId=13042&classId=1185233&topicId=0&enableForum=S&enableMessage=S… 3/9 SITUAÇÃO-PROBLEMA Para começar a nossa aula, vamos imaginar a seguinte situação... Imagine que você acabou de ser contratado por uma grande empresa que fabrica smartphones e você será um dos responsáveis por criar o software do telefone. Como o Android é bem popular aqui no Brasil, imagine que você vai ter que criar uma versão do Android para embutir no mais novo celular da empresa. Como você pensaria em desenvolver esse programa? Veja bem, o celular funciona como um grande laço: • Enquanto o botão de desligar não for acionado, espere algum comando do usuário; • Se o ícone de fazer ligação for pressionado, então abra a tela de chamadas; • Se o ícone do navegador for pressionado, então abra o navegador; • E assim por diante. Acontece que o programa do celular não é sequencial. Não podemos prever o que o usuário vai fazer, então precisamos criar subprogramas que são chamados à medida que o usuário faz uma determinada ação. Exemplo 28/08/2019 Disciplina Portal estacio.webaula.com.br/Classroom/index.html?id=2642009&courseId=13042&classId=1185233&topicId=0&enableForum=S&enableMessage=S… 4/9 , Por exemplo: executar o navegador, e depois que ele foi executado, o programa volta ao laço inicial, onde o programa espera a próxima ação ou o botão desligar é acionado. Basicamente é isso que fazemos quando temos um programa muito grande e temos a possibilidade de simpli�cá-lo: usando subprogramas,chamados de funções ouprocedimentos. Aliás, as funções são o grande diferencial da linguagem C, que originou a linguagem C++. Ou seja, quando você tiver um problema muito grande, até mesmo em questões pessoais, tente dividi-lo em problemas menores, e desta forma, solucionando cada pequeno problema, a parte maior também será resolvida. COMO AS FUNÇÕES E PROCEDIMENTOS FUNCIONAM? Observe a �gura a seguir: A �gura basicamente explica o funcionamento de uma função ou procedimento. O procedimento é um grupo de comandos que realiza uma determinada tarefa especí�ca que é executada quando o procedimento é chamado. Quando o programa principal chama o procedimento, o �uxo do programa é desviado para o procedimento, o qual é executado em seguida, e após a sua �nalização, o procedimento volta à execução do programa principal normalmente. Já usamos um procedimento em alguns de nossos programas anteriores. Lembra-se do system(“cls”)? O que este comando faz? Na verdade é hora de ajustarmos nosso vocabulário: na verdade, system(“cls”) é um procedimento. Sendo assim, o que este procedimento faz? Veja o código a seguir: No código anterior, o programa segue o seu �uxo normal, imprime a mensagem “Digite o seu nome”, lê o valor do usuário e chama em seguida o procedimento system(“cls”). 28/08/2019 Disciplina Portal estacio.webaula.com.br/Classroom/index.html?id=2642009&courseId=13042&classId=1185233&topicId=0&enableForum=S&enableMessage=S… 5/9 Internamente, a execução do programa é interrompida, o �uxo é desviado para o código do procedimento system(“cls”), o qual usa vários comandos internos para limpar a tela, e depois devolve o �uxo para o programa principal e imprime a mensagem “Olá... tudo bem?”. É que isso ocorre tão rápido e transparente para o usuário que dá a sensação de que o programa está ocorrendo sequencialmente, mas não está. Atenção , É igual ao programa do celular de que falamos no início. Parece que é um programa sequencial, não é? Mas, no fundo, um programa para celular é na verdade um grande looping cheio de chamadas a procedimentos especí�cos, como por exemplo, fazer ligação, navegar na internet, executar a calculadora etc. DIFERENÇAS ENTRE FUNÇÕES E PROCEDIMENTOS Agora, vamos supor que você está desenvolvendo um programa que vai trabalhar com algumas operações matemáticas, como por exemplo, calcular o MDC entre dois números, veri�car se um número é primo etc. Poderíamos criar procedimentos para isso, correto? Mas temos algumas melhorias que podemos fazer nos procedimentos. Por exemplo, criar procedimentos que funcionariam assim: Esse retorno pode ser então usado no programa que chamou o procedimento. Então, temos aqui a função. A função é um procedimento que possui obrigatoriamente um retorno. O procedimento não possui retorno. Lembra que o system(“cls”) é um procedimento? Que retorno ele devolve ao programa principal? Nenhum! Logo, é um procedimento. Atenção , Daqui para a frente, não vamos mais usar no nosso vocabulário de C++ a palavra “procedimento”. Uma vez que o procedimento é uma função, mas que não retorna valor, então vamos usar apenas “função”, combinado? POR QUE USAMOS FUNÇÕES? Existem várias vantagens de se usar funções. Vejamos: Para uma melhor legibilidade, como já citamos; Para modularizar o programa em partes menores e mais funcionais; Para melhorar a manutenção e permitir a alteração de uma determinada parte do código de uma maneira mais rápida; Para evitar que uma parte do código seja repetida várias vezes em um programa; Para o reaproveitamento de código: uma função que você faz pode ser usada por outro programador. FUNÇÕES EM C++ 28/08/2019 Disciplina Portal estacio.webaula.com.br/Classroom/index.html?id=2642009&courseId=13042&classId=1185233&topicId=0&enableForum=S&enableMessage=S… 6/9 A sintaxe de uma função em C++ é a seguinte: Vejamos um exemplo aqui (glossário) PARÂMETROS Na função teclac() que �zemos, você deve ter notado que a chamada dela no programa principal é muito simples. É como chamar a função getch() (glossário): basta usá-la e pronto! Mas algumas funções precisam receber valores para serem executadas. Como já vimos, uma função para calcular a raiz quadrada de um número precisa receber o número para que a função seja executada. Algumas funções, como o exemplo do MDC, precisam de dois ou mais parâmetros, en�m, para a linguagem C++ �car mais versátil, o uso de parâmetros é permitido. Os parâmetros possibilitam que seja de�nido sobre quais dados a função deve funcionar. Para de�nir os parâmetros de uma função, é preciso que o tipo da variável seja declarado antes do nome da variável. Se houver mais do que um, os outros parâmetros são separados por vírgulas. Veja o exemplo a seguir: 28/08/2019 Disciplina Portal estacio.webaula.com.br/Classroom/index.html?id=2642009&courseId=13042&classId=1185233&topicId=0&enableForum=S&enableMessage=S… 7/9 Os parâmetros da função, quando estão na declaração da função, são chamados de parâmetros formais (como o �oat a, int b na função anterior). Na chamada da função, são chamados de parâmetros reais ou argumentos.Atenção , Os parâmetros devem ser passados de acordo com sua posição. Ou seja, o tipo do primeiro argumento (na chamada) tem que “casar” com o tipo do primeiro parâmetro formal (na declaração da função); o tipo do segundo argumento “casa” com o segundo tipo do parâmetro formal, e assim por diante. Os nomes das variáveis da chamada e da declaração não precisam ser os mesmos. Vejamos um exemplo aqui (glossário) RETORNO DE UMA FUNÇÃO A função soma que acabamos de mostrar apresenta uma mensagem informando o resultado da conta dentro da função (veja a linha 7). A função tem que fazer exatamente o que o nome dela propõe. Se estamos fazendo uma soma, então ela deveria fazer somente a soma, e o resultado, o próprio programa principal se encarrega de fazer. Porém, dessa forma vamos precisar que a função retorne um valor para quem a chamar (neste caso, o programa principal). Essa palavra é obrigatória para as funções que não retornam valor. As que retornam valor, no lugar da palavra void, terão que indicar o tipo do retorno, como mostra a função soma() abaixo, agora modi�cada: Veja que agora a declaração da função, na linha 4, tem o tipo do retorno da função: �oat. E obrigatoriamente temos que ter a palavra reservada return dentro da função para indicar o valor que será devolvido como resultado da função. Nesse caso, o valor é devolvido e atribuído à variável retorno na linha 13.Portanto, quando não tiver valor de retorno, a função tem um void na sua declaração. Quando retornar algum valor, ela tem que ter o tipo do retorno e usar o return dentro da função. 28/08/2019 Disciplina Portal estacio.webaula.com.br/Classroom/index.html?id=2642009&courseId=13042&classId=1185233&topicId=0&enableForum=S&enableMessage=S… 8/9 ESCOPO DE VARIÁVEIS O escopo de uma variável é o bloco de código onde a variável é válida. Desta forma, temos algumas considerações a fazer: As variáveis são válidas nos blocos em que foram de�nidas As variáveis que são de�nidas dentro de uma função são chamadas de variáveis locais Os parâmetros formais de uma função valem somente dentro da função Uma variável que foi de�nida dentro de uma função não é acessível em outras funções, mesmo se os nomes forem exatamente iguais Vejamos um exemplo aqui (glossário) FINALIZANDO O estudo das funções em C++ é muito amplo, e nosso objetivo aqui é iniciar os seus estudos. Ao longo de todas as aulas, usamos as funções o tempo todo, e talvez você não tenha notado que o próprio programa principal em C++ é uma função. Por isso usamos o return 0 no �nal dos programas: para retornar o valor 0 a quem chamou o programa; neste caso, o sistema operacional. O possui milhares de funções prede�nidas, e saber usá-las é muito importante. Desta forma, evitamos a “reinvenção da roda”, como por exemplo, desenhar �guras de funções matemáticas, funções de estruturas de dados, de manipulação de strings etc. Já existe muita coisa pronta. Basta saber em qual biblioteca a função desejada se encontra e incluir a biblioteca corretamente dentro do programa. Como foi o caso da função getch(). ATIVIDADES 1. Para testar seus conhecimentos do que estudamos até aqui, que tal fazermos uns exercícios? Clique no link (glossário) e resolva as questões. Boa sorte! Resposta Correta 28/08/2019 Disciplina Portal estacio.webaula.com.br/Classroom/index.html?id=2642009&courseId=13042&classId=1185233&topicId=0&enableForum=S&enableMessage=S… 9/9 Glossário FUNÇÃO GETCH() Tem como objetivo ler uma tecla digitada pelo usuário e retornar o valor numérico da tecla. Cada tecla no computador tem um código, e o código da tecla “c” é 99. A função getch() é de�nida na biblioteca conio.h, e para usar a função, é necessário incluir a biblioteca no programa.
Compartilhar