Baixe o app para aproveitar ainda mais
Prévia do material em texto
4ºAula Funções Objetivos de aprendizagem Ao término desta aula, vocês serão capazes de: • saber como implementar funções em um algoritmo; • entender as diferenças entre funções e procedimentos. Continuando nossos estudos sobre a modularização, veremos nesta aula as funções, que possui algumas diferenças em relação aos procedimentos, que você estudou na aula anterior. Lembre-se que as ferramentas disponíveis no ambiente virtual sempre estarão a sua disposição se precisar. Boa leitura. Bons estudos! 20Algoritmos II Seções de estudo 1 - Conhecendo Funções 1 - Conhecendo Funções Você estudou na aula anterior os procedimentos, que é uma forma de implementar módulos em um algoritmo. Também aprendeu sobre como funciona os parâmetros, que é uma forma de comunicação entre o bloco chamador e o procedimento, consistindo em uma passagem de valores no início da execução do procedimento. Mas vocês, estimados(as) alunos(as), devem estar se perguntando: Existe uma forma de comunicação em que o procedimento entrega um valor ao bloco chamador? A resposta para esta pergunta é SIM. Mas o nome para estes módulos que devolvem valores no fim da execução muda. Eles se chamam funções. Funções são módulos que, quando avaliados dentro de uma expressão, retornam obrigatoriamente um valor à expressão. (VENANCIO, 2000, p. 46). Por esse motivo, quando uma função é encerrada, o bloco chamador é retomado na mesma linha da declaração da função (não na próxima, como ocorre em um procedimento) para que seja recebido o valor devolvido pela função. Em termos de funcionamento, essa é a única coisa que muda. Um procedimento não retorna um valor no fim da sua execução, enquanto que uma função sempre vai retornar um valor. O restante que vimos sobre o funcionamento de procedimentos se aplica as funções da mesma forma. Em termos de declaração, as funções têm mais diferenças do que os procedimentos. Vejamos a seguir como é declarada uma função em algoritmo: funcao <nome>(<parâmetros>): <tipo de dado> var <variáveis> inicio <instruções a serem executadas> retorne(<valor a ser retornado>) fim Percebemos aqui algumas diferenças, que listamos a seguir: • Obviamente, o nome procedimento é trocado para função; • Após a declaração dos parâmetros, temos a declaração do tipo de dado que será retornado por esta função, representado pelo espaço <tipo de dado>; • Por último, devemos retornar algum valor. Para isso, usamos a instrução retorne(), com a especificação do valor a ser passado ao bloco chamador. O dado que será passado nesta instrução deve ser do mesmo tipo que foi definido em <tipo de dado>. Como uma função retorna valores, podemos usar os valores retornados por essas funções em atribuições, em expressões e até mesmo em testes condicionais. Veremos sobre eles nos próximos exemplos. Exemplo 8: escreva um algoritmo que leia um valor de um salário de um funcionário da empresa. Após isso, calcule e mostre o valor corrigido do salário, de acordo com a seguinte tabela: Salário Reajuste Até R$ 1000,00 10% Maior que R$ 1000,00 e menor que R$ 2000,00 8% Maior igual que R$ 2000,00 6% A definição e o cálculo do porcentual a ser corrigido do salário devem ser por uma função. algoritmo “Reajuste” //função que reajusta o salário funcao REAJUSTAR(salario : real) : booleano var salarioNovo : real inicio se salario <= 1000.00 entao //a porcentagem é definida em partes de 100 //assim, para aplicarmos o reajuste, vamos multiplicar o salário pela sua porcentagem, para que possamos verificar o quanto irá aumentar. Depois somamos com o salario. salarioNovo <- salario + (salario * (10/100)) senão se salario > 1000.00 E salario < 2000.00 entao salarioNovo <- salario + (salario * (8/100)) senao salarioNovo <- salario + (salario * (6/100)) fimse fimse retorne(salarioNovo) fim var salarioAntigo, salarioNovo : real inicio escreva(“Digite o salário antigo:”) leia(salarioAntigo) //Observe aqui a atribuição que fizemos a variável salarioNovo através do resultado da função salarioNovo <- REAJUSTAR(salarioAntigo) escreva(“Seu salário novo é de R$: ”, salarioNovo) fimalgoritmo Perceba que usamos o resultado do reajuste calculado como valor da variável salarioNovo. Vamos continuar com os nossos exemplos. Exemplo 9: escreva um algoritmo que leia um valor de um salário de um funcionário da empresa, da mesma tabela que o exemplo anterior. A diferença é que a função deve retornar o valor da porcentagem a ser aplicado ao salário, passando o trabalho de calcular o novo salário ao programa principal. algoritmo “Reajuste” //função que reajusta o salário função PORCENTAGEM_AUMENTO(salario:real) : real 21 inicio se salario <= 1000.00 entao //10% = 10/100 retorne(0.1) senao se salario > 1000.00 E salario < 2000.00 entao //8% = 8/100 retorne(0.08) senao //6% = 6/100 retorne(0.06) fimse fimse fim var salarioAntigo, salarioNovo : real inicio escreva(“Digite o salário antigo:”) leia(salarioAntigo) salarioNovo <- salarioAntigo + (salarioAntigo * PORCENTAGEM_ AUMENTO(salarioAntigo)) escreva(“Seu salário novo é de R$: ”, salarioNovo) fimalgoritmo Aqui nesse exemplo, a função determina qual será a porcentagem de reajuste de um salário. Assim, colocamos a chamada da função como parte da expressão que calcula o salário no bloco principal. Nesse exemplo, perceba que na função há várias instruções de retorno na mesma função. Nesse caso, a função encerra quando atinge a primeira instrução de retorno que for executada. Assim, se o salário for menor igual a R$ 1000,00, a função já encerrará após o primeiro teste condicional. Mas, se o salário for maior que R$ 2000,00, a função encerrará na terceira instrução de retorno. No próximo exemplo, veremos como usar funções em testes condicionais. Exemplo 10: Escreva um algoritmo que após ler o nome da pessoa e sua idade, verifique se é uma pessoa maior de idade ou não. A verificação de maioridade deve ser implementada por meio de uma função e deve retornar um valor verdadeiro ou falso. algoritmo “Teste_se_é_maior” funcao EHMAIOR(idade : inteiro) : booleano inicio se idade >= 18 entao retorne(.VERDADEIRO.) senao retorne(.FALSO.) fimse fim var nome : caractere, idade : inteiro inicio escreva(“Digite seu nome:”) leia(nome) escreva(“Digite sua idade:”) leia(idade) se EHMAIOR(idade) = .VERDADEIRO. entao escreva(nome, “ é maior de idade.”) senao escreva(nome, “ ainda não é maior de idade.”) fimse fimalgoritmo Aqui vemos o uso do valor de uma função para uma avaliação condicional. Ela retorna um valor VERDADEIRO ou FALSO que indica se uma pessoa é maior de idade ou não. Esse valor é avaliado em uma instrução se, para que o programa possa imprimir se uma pessoa é maior de idade ou não. Quando usamos funções ou procedimentos as variáveis podem ser diferentes escopos. Veremos sobre eles a seguir. Retomando a aula Chegamos ao final da nossa aula sobre funções. Vamos rever os pontos importantes? 1 – Conhecendo Funções Uma função é um módulo em algoritmo, onde ao final da sua execução obrigatoriamente, deve retornar um valor ao bloco chamador. Na sua declaração, deve ser indicado qual o tipo do dado a ser retornado. Pela sua natureza, as funções podem ser usadas em expressões, em atribuições e em testes lógicos. MANZANO, José Augusto N. G.; OLIVEIRA, Jayr Figueiredo de Oliveira. Algoritmos - lógica para desenvolvimento de programação. 2. ed. São Paulo: Érica, 2014. VENANCIO, Claudio Ferreira. Desenvolvimento de Algoritmos: Uma Nova Abordagem. São Paulo: Érica, 2000. FARRER, Harry; et. al. Algoritmos Estruturados. 3. ed. São Paulo: LTC, 1999. Vale a pena Vale a pena ler 22Algoritmos II Valea pena acessar VARELA, Marcelo. Os Procedimentos (Procedures) e Funções (Functions). Imasters, 2002. Disponível em: <https://imasters.com.br/artigo/345/linguagens/os- procedimentos-procedures-e-funcoes-functions?trace=151 9021197&source=single> . Acesso em: 20 out. 2007. SILVA, Elaine Quintino. Aprendendo a programar: procedimentos e funções. GlobalCoders, 2010. Disponível em: <http://blog.globalcode.com.br/2010/06/aprendendo- programar-procedimentos-e.html>. Acesso em: 20 out. 2017. Minhas anotações
Compartilhar