1 / 56

Procedimentos e Funções

Procedimentos e Funções. Motivação. Procedimentos e Funções promovem o reuso de código eliminando a necessidade de replicação Facilitam a manutenção, legibilidade extensão dos programas. Motivação Exemplo 1. Algoritmo testeSemFunção () início inteiro base=0 ler base inteiro fat=1

oakley
Download Presentation

Procedimentos e Funções

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Procedimentos e Funções

  2. Motivação • Procedimentos e Funções promovem o reuso de código eliminando a necessidade de replicação • Facilitam a manutenção, legibilidade extensão dos programas

  3. Motivação Exemplo 1 Algoritmo testeSemFunção () início inteiro base=0 ler base inteiro fat=1 inteiro cont=1 para (cont<base;cont=cont+1) faça fat = fat*cont fimpara base=fat

  4. Motivação Exemplo 1 inteiro expoente =0 ler expoente fat=1 cont=1 para (cont<expoente;cont=cont+1) faça fat = fat*cont fimpara expoente=fat

  5. Motivação Exemplo 1 inteiro divisor =0 ler divisor fat=1 cont=1 para (cont<divisor;cont=cont+1) faça fat = fat*cont fimpara divisor=fat

  6. Motivação Exemplo 1 inteiro x =0 ler x fat=1 cont=1 para (cont<x;cont=cont+1) faça fat = fat*cont fimpara x=fat

  7. Motivação Exemplo 1 imprimir "fatorial base:"+base imprimir "fatorial expoente:"+expoente imprimir "fatorial fatorial:"+fatorial imprimir "fatorial x:"+x Fim

  8. Motivação • Foi necessário replicar o código para calcular o fatorial quatro vezes dentro do código • Será preciso replicar este código sempre que quisermos calcular o fatorial de um número? • Há alguma maneira mais eficiente e elegante de se fazer isso?

  9. Motivação • Uso de Procedimentos/Funções • Evitam replicação desnecessária de código promovendo assim o reuso

  10. Motivação Exemplo 2 Algoritmo testeComFunção () início inteiro base=0 ler base base = fatorial(base) inteiro expoente =0 ler expoente expoente = fatorial (expoente)

  11. Motivação Exemplo 2 inteiro fatorial =0 ler fatorial fatorial = móddulo (fatorial) inteiro x =0 ler x x=fatorial(x) imprimir "fatorial base:"+base imprimir "fatorial expoente:"+expoente imprimir "fatorial fatorial:"+fatorial imprimir "fatorial x:"+x Fim

  12. Motivação Exemplo 2 inteiro fatorial(inteiro x) início inteiro result=1 inteiro cont=1 para (cont<x;cont=cont+1) faça resut = result*cont fimpara retorne result fim

  13. Motivação • Redução clara no tamanho do código • Exemplo 1 = 5 slides • Exemplo 2 = 3 slides • Aumento da legibilidade – todas as funcionalidades do programa estão em um único slide

  14. Motivação • Possível Manutenção - o uso de procedimentos e funções facilitam a manutenção do código • Imagine que houvesse um erro no exemplo 1 no trecho de atualização dos contadores. A correção teria que ser propagada por todo o código

  15. Motivação • No exemplo 2 a manutenção só teria que ser feita em um ponto, ou seja, no função fatorial

  16. Motivação - Reuso • No exemplo 1, sempre que necessário calcular um fatorial de um número uma nova réplica do código de cálculo deverá ser feita • No exemplo 2, é necessário apenas uma chamada à função

  17. Sintaxe • Procedimentos Procedimento nome(<lista parâmetros>) início corpo fim • Funções tipo nome(<lista de parâmetros>) início corpo fim

  18. Sintaxe – lista de parâmetros • Pode ser uma lista vazia – nesse caso, a função não recebe dados de entrada • Pode um ou mais elementos seguindo a sintaxe tipo par1, tipo par2, ..., tipo parFinal

  19. Sintaxe - Tipos • Qualquer tipo básico da linguagem – Inteiro, Real, Texto, etc • Qualquer tipo definido na linguagem, string, vector, iterator, etc • Qualquer tipo definido pelo programador

  20. Sintaxe - Nomes • Os nomes, tanto de funções como de parâmetros devem ser identificadores válidos • Eles devem começar por um caractere (a-z, A-Z) e podem ser seguidos de um ou mais caractere ou dígitos(a-z,A-Z,0-9,_)

  21. Sintaxe - Nomes • Não podem conter espaços em branco Inteiro calcular fatorial(Inteiro x ) • Erro de compilação Inteiro calcular_fatorial(Inteiro x ) • Correto Inteiro calcularFatorial(Inteiro x ) • Correto

  22. Dicas • O nome de uma função deve expressar claramente o que ela faz • A dificuldade em definir o nome de uma função pode indicar que ela deve ser dividida em mais de uma função

  23. Sintaxe - Corpo • Corpo de um procedimento é um conjunto de comandos válidos na linguagem • Podemos declarar variáveis, fazer comandos de entrada e saída • Funções e procedimentos podem usar outras funções e procedimentos previamente declarados • Funções e procedimentos não podem declarar dentro de seu corpo outras funções e procedimentos

  24. Sintaxe • Procedimentos Procedimento nome(<lista parâmetros>) início corpo fim • Funções tipo nome(<lista de parâmetros>) início corpo fim

  25. Sintaxe - Retorno • Procedimentos não possuem em sua assinatura nenhum tipo, que significa que esta função não retorna nenhum valor • Funções necessariamente possuem um tipo de retorno, que pode ser qualquer um dos mencionados anteriormente

  26. Sintaxe - Retorno Inteiro calcularAreaRetangulo (Inteiro base, Inteiro alt) • Esta assinatura indica que a função calcularAreaRetangulo recebe dois parâmetros Inteiros e retorna um valor inteiro.

  27. Sintaxe - Retorno • A presença de um tipo de retorno indica que ao terminar sua execução uma função deve retornar um valor do tipo de retorno especificado • Assim, uma função que possui um tipo de retorno Inteiro deve retornar um valor Inteiro, Lógico um valor lógico e assim sucessivamente

  28. Sintaxe - Retorno Inteiro calcularAreaRetangulo(Inteiro base, Inteiro alt) início Inteiro area=base * alt retorne area fim

  29. Sintaxe - Assinatura • Em algumas linguagens de programação, entre elas c++, não é possível fazer uma chamada para uma função antes da declaração dela • No entanto, por questões organizacionais, pode não ser Interessante definir uma função em um determinado ponto do código

  30. Sintaxe - Assinatura • Suponha que você quer manter suas funções em ordem alfabética • Suponha que, por clareza, você quer que duas funções fiquem próximas, por exemplo funções de entrada e saída

  31. Sintaxe - Assinatura • Como resolver situações como as expostas anteriormente? • A resposta é a declaração da assinatura da função • A assinatura permite que se utilize uma função antes de sua declaração

  32. Sintaxe - Assinatura Inteiro fatorial(inteiro x); Algoritmo principal() Início Inteiro base=0 ler base base = fatorial(base)

  33. Sintaxe - Assinatura Inteiro fatorial(inteiro x); Algoritmo principal() Início Inteiro base=0 ler base base = fatorial(base) Assinatura

  34. Uso • Como usar uma função? • Basta apenas fazer uma chamada para função

  35. Uso Inteiro calcularAreaRetangulo(Inteiro base, Inteiro alt); Procedimento main() início Inteiro base =2 Inteiro alt = 3 Inteiro result = calcularAreaRetangulo(base, alt) imprimir “o resultado é ” + result fim

  36. Uso Inteiro calcularAreaRetangulo(Inteiro base, Inteiro alt); Procedimento main() início Inteiro b =2 Inteiro t = 3 Inteiro result = calcularAreaRetangulo(b, t) imprimir “o resultado é ” + result fim

  37. Uso Inteiro calcularAreaRetangulo(Inteiro base, Inteiro alt); Procedimento main() início Inteiro base =2 Real alt = 3 Inteiro result = calcularAreaRetangulo(base, alt) imprimir “o resultado é ” + result fim

  38. Uso Inteiro calcularAreaRetangulo(Inteiro base, Inteiro alt); Procedimento main() início Inteiro base =2 Real alt = 3 Inteiro intAlt=(Inteiro)alt Inteiro result = calcularAreaRetangulo(base, intAlt) imprimir “o resultado é ” + result fim

  39. Como Funciona? • Ao iniciar o programa, o SO tem o endereço de todas as funções definidas • Ao encontrar uma chamada de função/procedimento, o fluxo do programa é desviado para o a função • Ao terminar a execução da função, o fluxo retorna para o ponto imediatamente após o ponto onde a função foi chamada

  40. Como Funciona? Algoritmo testeComFunção () início inteiro base=0 ler base base = fatorial(base) inteiro expoente =0 ler expoente expoente = fatorial (expoente)

  41. Como Funciona? Algoritmo testeComFunção () início inteiro base=0 ler base base = fatorial(base) inteiro expoente =0 ler expoente expoente = fatorial (expoente)

  42. Como Funciona? Algoritmo testeComFunção () início inteiro base=0 ler base base = fatorial(base) inteiro expoente =0 ler expoente expoente = fatorial (expoente)

  43. Como Funciona? Algoritmo testeComFunção () início inteiro base=0 ler base base = fatorial(base) inteiro expoente =0 ler expoente expoente = fatorial (expoente) inteiro fatorial(inteiro x) início inteiro result=1 inteiro cont=1 para (cont<x;cont=cont+1) faça resut = result*cont fimpara retorne result fim

  44. Como Funciona? Algoritmo testeComFunção () início inteiro base=0 ler base base = fatorial(base) inteiro expoente =0 ler expoente expoente = fatorial (expoente) inteiro fatorial(inteiro x) início inteiro result=1 inteiro cont=1 para (cont<x;cont=cont+1) faça resut = result*cont fimpara retorne result fim

  45. Como Funciona? Algoritmo testeComFunção () início inteiro base=0 ler base base = fatorial(base) inteiro expoente =0 ler expoente expoente = fatorial (expoente) inteiro fatorial(inteiro x) início inteiro result=1 inteiro cont=1 para (cont<x;cont=cont+1) faça resut = result*cont fimpara retorne result fim

  46. Como Funciona? Algoritmo testeComFunção () início inteiro base=0 ler base base = fatorial(base) inteiro expoente =0 ler expoente expoente = fatorial (expoente)

  47. Variáveis Locais • Funções permitem a definição de variáveis

  48. Variáveis Locais • Funções permitem a definição de variáveis Inteiro calcularAreaRetangulo(Inteiro base, Inteiro alt) Início Inteiro area=base * alt; return area; Fim

  49. Variáveis Locais • Funções permitem a definição de variáveis • As variáveis declaradas dentro das funções só tem validade dentro destas funções

  50. Variáveis Locais • Funções permitem a definição de variáveis • As variáveis declaradas dentro das funções só tem validade dentro destas funções • Variáveis declaradas dentro de funções são chamadas variáveis automáticas pois são criadas e destruídas sempre que a função para executada

More Related