Baixe o app para aproveitar ainda mais
Prévia do material em texto
22/04/2018 Disciplina Portal http://estacio.webaula.com.br/Classroom/index.html?id=2263334&classId=931404&topicId=2652527&p0=03c7c0ace395d80182db07ae2c30f034&enableForum= 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 22/04/2018 Disciplina Portal http://estacio.webaula.com.br/Classroom/index.html?id=2263334&classId=931404&topicId=2652527&p0=03c7c0ace395d80182db07ae2c30f034&enableForum= 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. 22/04/2018 Disciplina Portal http://estacio.webaula.com.br/Classroom/index.html?id=2263334&classId=931404&topicId=2652527&p0=03c7c0ace395d80182db07ae2c30f034&enableForum= 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. 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: 22/04/2018 Disciplina Portal http://estacio.webaula.com.br/Classroom/index.html?id=2263334&classId=931404&topicId=2652527&p0=03c7c0ace395d80182db07ae2c30f034&enableForum= 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”). 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á. DIFERENÇAS ENTRE FUNÇÕES E PROCEDIMENTOS 22/04/2018 Disciplina Portal http://estacio.webaula.com.br/Classroom/index.html?id=2263334&classId=931404&topicId=2652527&p0=03c7c0ace395d80182db07ae2c30f034&enableForum= 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. 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++ A sintaxe de uma função em C++ é a seguinte: Vejamos um exemplo aqui (glossário) PARÂMETROS 22/04/2018 Disciplina Portal http://estacio.webaula.com.br/Classroom/index.html?id=2263334&classId=931404&topicId=2652527&p0=03c7c0ace395d80182db07ae2c30f034&enableForum= 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: 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. 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). 22/04/2018 Disciplina Portal http://estacio.webaula.com.br/Classroom/index.html?id=2263334&classId=931404&topicId=2652527&p0=03c7c0ace395d80182db07ae2c30f034&enableForum= Essa palavra é obrigatória para as funções que não retornam valor. As que retornam valor, no lugarda 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. 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(). 22/04/2018 Disciplina Portal http://estacio.webaula.com.br/Classroom/index.html?id=2263334&classId=931404&topicId=2652527&p0=03c7c0ace395d80182db07ae2c30f034&enableForum= 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 Glossário FUNÇÃO GETCH() 22/04/2018 Disciplina Portal http://estacio.webaula.com.br/Classroom/index.html?id=2263334&classId=931404&topicId=2652527&p0=03c7c0ace395d80182db07ae2c30f034&enableForum= 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