150 likes | 237 Views
Projeto e Desenvolvimento de Algoritmos. Funções Renato Campioni. Funções. Funções são blocos de programas que retornam um valor. Sintaxe: função nome ( entradas : nono, nonono[], nono, ... saídas : nono, nonono, nono[], ...) inicio { comandos } nome ... fim.
E N D
Projeto e Desenvolvimento de Algoritmos Funções Renato Campioni
Funções • Funções são blocos de programas que retornam um valor. • Sintaxe: funçãonome ( entradas: nono, nonono[], nono, ... saídas: nono, nonono, nono[], ...) inicio { comandos } nome ... fim
Funções: Retorno • O bloco de comandos deve conter pelo menos uma instrução que atribui um valor ao identificador da função. funçãonome ( ... inicio { comandos } nome ... fim
Funções – Exemplo função Patas (entradas: N1,N2) início Patas 4*(N1 + N2) fim programa teste inicio caes 4 gatos 3 pes Patas(caes, gatos); imprima 'Total de patas: ', pes fim
Outro exemplo: A função Converte função Converte(entradas: Fer) início Converte ((Fer - 32) * 5) / 9 fim programa teste início imprima'Temperatura em Fahrenheit: ' leiaFar Cel Converte(Far) imprima'Celsius: ', Cel fim
A função Converte • Saída: Temperatura em Fahrenheit: 212 Celsius: 100.00 • Alocação de memória: 100 Tcel:Converte 212 Fer:Converte 100 Cel 212 Far
Outro exemplo função CalculaArea(entradas l, c) início CalculaArea l * c fim Programaarea início imprima'Largura do jardim? ‘ leialarg imprima'Comprimento do jardim? ‘ leiacomp imprima 'Area:',CalculaArea(larg,comp) fim
A função area Saída:Largura do jardim? 100Comprimento do jardim? 50Area: 5000
Vetores e funções • Um vetor pode ser passado como parâmetro usando-se apenas o nome do mesmo na chamada à função
Vetores e funções (passagem valor) ConstanteDim = 3 funçãoAchaMaior(entradas: tab[] saídas:pos) início { Assume temporariamente que o primeiro elemento da tabela e' o maior } AchaMaior tab[1] pos 1 { Percorre a tabela procurando um elemento maior do que maior } parai 2atéDIMfaça setab[i]>maiorentão AchaMaior tab[i] pos i fim se próximo i fim
Vetores e funções(continuação) Programa maior início { O usuario inicializa a tabela } para i 1 até DIM faça leiatabela[i]); próximo i { chama a funcao para determinar o maior } maior AchaMaior(tabela, pos); { imprime o resultado } imprimamaior, pos fim
? i:AchaMaior tab[3]:AchaMaior 3.0 2.0 tab[2]:AchaMaior 1.0 tab[1]:AchaMaior maior ? 3.0 tabela[3] tabela[2] 2.0 tabela[1] 1.0 pos ? pos:AchaMaior i 3 Passagem por valor: Alocação em memória • Uma cópia de cada um dos elementos do vetor é criada na pilha.
Vetores e funções (passagem referência) ConstanteDim = 3 funçãoAchaMaior(saídas : tab[], pos) início { Assume temporariamente que o primeiro elemento da tabela e' o maior } AchaMaior tab[1] pos 1 { Percorre a tabela procurando um elemento maior do que maior } parai 2atéDIMfaça setab[i]>maiorentão AchaMaior tab[i] pos i fim se próximo i fim Agora é saída
? i:AchaMaior maior ? 3.0 tabela[3] tab[3]:AchaMaior tabela[2] 2.0 tab[2]:AchaMaior tabela[1] 1.0 tab[1]:AchaMaior pos ? pos:AchaMaior i 3 Passagem por referência (continuação) • Alocação em memória
Passagem por referência (continuação) • A passagem de vetores por referência pode ser vantajosa, se os vetores forem grandes, e se o tempo de processamento for um dado crítico no programa. Evita-se com isso a cópia dos valores dos vetores na pilha.