procedimentos e funções. motivação procedimentos e funções promovem o reuso de código...
TRANSCRIPT
![Page 1: 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](https://reader035.vdocuments.net/reader035/viewer/2022062312/552fc0f8497959413d8b51cb/html5/thumbnails/1.jpg)
Procedimentos e Funções
![Page 2: 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](https://reader035.vdocuments.net/reader035/viewer/2022062312/552fc0f8497959413d8b51cb/html5/thumbnails/2.jpg)
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
![Page 3: 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](https://reader035.vdocuments.net/reader035/viewer/2022062312/552fc0f8497959413d8b51cb/html5/thumbnails/3.jpg)
Motivação Exemplo 1Algoritmo testeSemFunção ()início
inteiro base=0ler baseinteiro fat=1inteiro cont=1para (cont<base;cont=cont+1) faça
fat = fat*contfimparabase=fat
![Page 4: 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](https://reader035.vdocuments.net/reader035/viewer/2022062312/552fc0f8497959413d8b51cb/html5/thumbnails/4.jpg)
inteiro expoente =0ler expoentefat=1cont=1para (cont<expoente;cont=cont+1) faça
fat = fat*contfimparaexpoente=fat
Motivação Exemplo 1
![Page 5: 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](https://reader035.vdocuments.net/reader035/viewer/2022062312/552fc0f8497959413d8b51cb/html5/thumbnails/5.jpg)
inteiro divisor =0ler divisorfat=1cont=1para (cont<divisor;cont=cont+1) faça
fat = fat*contfimparadivisor=fat
Motivação Exemplo 1
![Page 6: 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](https://reader035.vdocuments.net/reader035/viewer/2022062312/552fc0f8497959413d8b51cb/html5/thumbnails/6.jpg)
inteiro x =0ler xfat=1cont=1para (cont<x;cont=cont+1) faça
fat = fat*contfimparax=fat
Motivação Exemplo 1
![Page 7: 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](https://reader035.vdocuments.net/reader035/viewer/2022062312/552fc0f8497959413d8b51cb/html5/thumbnails/7.jpg)
imprimir "fatorial base:"+baseimprimir "fatorial expoente:"+expoenteimprimir "fatorial fatorial:"+fatorialimprimir "fatorial x:"+x
Fim
Motivação Exemplo 1
![Page 8: 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](https://reader035.vdocuments.net/reader035/viewer/2022062312/552fc0f8497959413d8b51cb/html5/thumbnails/8.jpg)
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?
![Page 9: 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](https://reader035.vdocuments.net/reader035/viewer/2022062312/552fc0f8497959413d8b51cb/html5/thumbnails/9.jpg)
Motivação
Uso de Procedimentos/Funções
Evitam replicação desnecessária de código promovendo assim o reuso
![Page 10: 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](https://reader035.vdocuments.net/reader035/viewer/2022062312/552fc0f8497959413d8b51cb/html5/thumbnails/10.jpg)
Motivação Exemplo 2Algoritmo testeComFunção ()início
inteiro base=0ler basebase = fatorial(base)
inteiro expoente =0ler expoenteexpoente = fatorial (expoente)
![Page 11: 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](https://reader035.vdocuments.net/reader035/viewer/2022062312/552fc0f8497959413d8b51cb/html5/thumbnails/11.jpg)
inteiro fatorial =0ler fatorialfatorial = móddulo (fatorial)
inteiro x =0ler xx=fatorial(x)
imprimir "fatorial base:"+baseimprimir "fatorial expoente:"+expoenteimprimir "fatorial fatorial:"+fatorialimprimir "fatorial x:"+x
Fim
Motivação Exemplo 2
![Page 12: 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](https://reader035.vdocuments.net/reader035/viewer/2022062312/552fc0f8497959413d8b51cb/html5/thumbnails/12.jpg)
inteiro fatorial(inteiro x)início
inteiro result=1inteiro cont=1para (cont<x;cont=cont+1) faça
resut = result*contfimpararetorne result
fim
Motivação Exemplo 2
![Page 13: 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](https://reader035.vdocuments.net/reader035/viewer/2022062312/552fc0f8497959413d8b51cb/html5/thumbnails/13.jpg)
Motivação
Redução clara no tamanho do códigoExemplo 1 = 5 slidesExemplo 2 = 3 slides
Aumento da legibilidade – todas as funcionalidades do programa estão em um único slide
![Page 14: 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](https://reader035.vdocuments.net/reader035/viewer/2022062312/552fc0f8497959413d8b51cb/html5/thumbnails/14.jpg)
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
![Page 15: 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](https://reader035.vdocuments.net/reader035/viewer/2022062312/552fc0f8497959413d8b51cb/html5/thumbnails/15.jpg)
Motivação
No exemplo 2 a manutenção só teria que ser feita em um ponto, ou seja, no função fatorial
![Page 16: 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](https://reader035.vdocuments.net/reader035/viewer/2022062312/552fc0f8497959413d8b51cb/html5/thumbnails/16.jpg)
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
![Page 17: 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](https://reader035.vdocuments.net/reader035/viewer/2022062312/552fc0f8497959413d8b51cb/html5/thumbnails/17.jpg)
Sintaxe
Procedimentos Procedimento nome(<lista parâmetros>)
início corpo fim
Funções tipo nome(<lista de parâmetros>) início corpo fim
![Page 18: 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](https://reader035.vdocuments.net/reader035/viewer/2022062312/552fc0f8497959413d8b51cb/html5/thumbnails/18.jpg)
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
![Page 19: 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](https://reader035.vdocuments.net/reader035/viewer/2022062312/552fc0f8497959413d8b51cb/html5/thumbnails/19.jpg)
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
![Page 20: 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](https://reader035.vdocuments.net/reader035/viewer/2022062312/552fc0f8497959413d8b51cb/html5/thumbnails/20.jpg)
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,_)
![Page 21: 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](https://reader035.vdocuments.net/reader035/viewer/2022062312/552fc0f8497959413d8b51cb/html5/thumbnails/21.jpg)
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
![Page 22: 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](https://reader035.vdocuments.net/reader035/viewer/2022062312/552fc0f8497959413d8b51cb/html5/thumbnails/22.jpg)
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
![Page 23: 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](https://reader035.vdocuments.net/reader035/viewer/2022062312/552fc0f8497959413d8b51cb/html5/thumbnails/23.jpg)
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
![Page 24: 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](https://reader035.vdocuments.net/reader035/viewer/2022062312/552fc0f8497959413d8b51cb/html5/thumbnails/24.jpg)
Sintaxe
Procedimentos Procedimento nome(<lista parâmetros>)
início corpo fim
Funções tipo nome(<lista de parâmetros>) início corpo fim
![Page 25: 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](https://reader035.vdocuments.net/reader035/viewer/2022062312/552fc0f8497959413d8b51cb/html5/thumbnails/25.jpg)
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
![Page 26: 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](https://reader035.vdocuments.net/reader035/viewer/2022062312/552fc0f8497959413d8b51cb/html5/thumbnails/26.jpg)
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.
![Page 27: 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](https://reader035.vdocuments.net/reader035/viewer/2022062312/552fc0f8497959413d8b51cb/html5/thumbnails/27.jpg)
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
![Page 28: 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](https://reader035.vdocuments.net/reader035/viewer/2022062312/552fc0f8497959413d8b51cb/html5/thumbnails/28.jpg)
Sintaxe - Retorno
Inteiro calcularAreaRetangulo(Inteiro base, Inteiro alt)início Inteiro area=base * alt retorne areafim
![Page 29: 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](https://reader035.vdocuments.net/reader035/viewer/2022062312/552fc0f8497959413d8b51cb/html5/thumbnails/29.jpg)
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
![Page 30: 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](https://reader035.vdocuments.net/reader035/viewer/2022062312/552fc0f8497959413d8b51cb/html5/thumbnails/30.jpg)
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
![Page 31: 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](https://reader035.vdocuments.net/reader035/viewer/2022062312/552fc0f8497959413d8b51cb/html5/thumbnails/31.jpg)
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
![Page 32: 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](https://reader035.vdocuments.net/reader035/viewer/2022062312/552fc0f8497959413d8b51cb/html5/thumbnails/32.jpg)
Inteiro fatorial(inteiro x);Algoritmo principal()Início
Inteiro base=0ler basebase = fatorial(base)
Sintaxe - Assinatura
![Page 33: 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](https://reader035.vdocuments.net/reader035/viewer/2022062312/552fc0f8497959413d8b51cb/html5/thumbnails/33.jpg)
Sintaxe - Assinatura
Assinatura
Inteiro fatorial(inteiro x);Algoritmo principal()Início
Inteiro base=0ler basebase = fatorial(base)
![Page 34: 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](https://reader035.vdocuments.net/reader035/viewer/2022062312/552fc0f8497959413d8b51cb/html5/thumbnails/34.jpg)
Uso
Como usar uma função?
Basta apenas fazer uma chamada para função
![Page 35: 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](https://reader035.vdocuments.net/reader035/viewer/2022062312/552fc0f8497959413d8b51cb/html5/thumbnails/35.jpg)
UsoInteiro calcularAreaRetangulo(Inteiro base, Inteiro alt);Procedimento main()início Inteiro base =2 Inteiro alt = 3 Inteiro result = calcularAreaRetangulo(base, alt) imprimir “o resultado é ” + resultfim
![Page 36: 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](https://reader035.vdocuments.net/reader035/viewer/2022062312/552fc0f8497959413d8b51cb/html5/thumbnails/36.jpg)
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 é ” + resultfim
![Page 37: 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](https://reader035.vdocuments.net/reader035/viewer/2022062312/552fc0f8497959413d8b51cb/html5/thumbnails/37.jpg)
UsoInteiro calcularAreaRetangulo(Inteiro base, Inteiro alt);Procedimento main()início Inteiro base =2 Real alt = 3 Inteiro result = calcularAreaRetangulo(base, alt) imprimir “o resultado é ” + resultfim
![Page 38: 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](https://reader035.vdocuments.net/reader035/viewer/2022062312/552fc0f8497959413d8b51cb/html5/thumbnails/38.jpg)
UsoInteiro 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 é ” + resultfim
![Page 39: 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](https://reader035.vdocuments.net/reader035/viewer/2022062312/552fc0f8497959413d8b51cb/html5/thumbnails/39.jpg)
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
![Page 40: 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](https://reader035.vdocuments.net/reader035/viewer/2022062312/552fc0f8497959413d8b51cb/html5/thumbnails/40.jpg)
Algoritmo testeComFunção ()início
inteiro base=0ler basebase = fatorial(base)
inteiro expoente =0ler expoenteexpoente = fatorial (expoente)
Como Funciona?
![Page 41: 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](https://reader035.vdocuments.net/reader035/viewer/2022062312/552fc0f8497959413d8b51cb/html5/thumbnails/41.jpg)
Algoritmo testeComFunção ()início
inteiro base=0ler basebase = fatorial(base)
inteiro expoente =0ler expoenteexpoente = fatorial (expoente)
Como Funciona?
![Page 42: 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](https://reader035.vdocuments.net/reader035/viewer/2022062312/552fc0f8497959413d8b51cb/html5/thumbnails/42.jpg)
Algoritmo testeComFunção ()início
inteiro base=0ler basebase = fatorial(base)
inteiro expoente =0ler expoenteexpoente = fatorial (expoente)
Como Funciona?
![Page 43: 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](https://reader035.vdocuments.net/reader035/viewer/2022062312/552fc0f8497959413d8b51cb/html5/thumbnails/43.jpg)
Algoritmo testeComFunção ()início
inteiro base=0ler basebase = fatorial(base)
inteiro expoente =0ler expoenteexpoente = fatorial (expoente)
Como Funciona?
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 resultfim
![Page 44: 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](https://reader035.vdocuments.net/reader035/viewer/2022062312/552fc0f8497959413d8b51cb/html5/thumbnails/44.jpg)
Algoritmo testeComFunção ()início
inteiro base=0ler basebase = fatorial(base)
inteiro expoente =0ler expoenteexpoente = fatorial (expoente)
Como Funciona?
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 resultfim
![Page 45: 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](https://reader035.vdocuments.net/reader035/viewer/2022062312/552fc0f8497959413d8b51cb/html5/thumbnails/45.jpg)
Algoritmo testeComFunção ()início
inteiro base=0ler basebase = fatorial(base)
inteiro expoente =0ler expoenteexpoente = fatorial (expoente)
Como Funciona?
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 resultfim
![Page 46: 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](https://reader035.vdocuments.net/reader035/viewer/2022062312/552fc0f8497959413d8b51cb/html5/thumbnails/46.jpg)
Algoritmo testeComFunção ()início
inteiro base=0ler basebase = fatorial(base)
inteiro expoente =0ler expoenteexpoente = fatorial (expoente)
Como Funciona?
![Page 47: 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](https://reader035.vdocuments.net/reader035/viewer/2022062312/552fc0f8497959413d8b51cb/html5/thumbnails/47.jpg)
Variáveis Locais
Funções permitem a definição de variáveis
![Page 48: 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](https://reader035.vdocuments.net/reader035/viewer/2022062312/552fc0f8497959413d8b51cb/html5/thumbnails/48.jpg)
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
![Page 49: 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](https://reader035.vdocuments.net/reader035/viewer/2022062312/552fc0f8497959413d8b51cb/html5/thumbnails/49.jpg)
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
![Page 50: 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](https://reader035.vdocuments.net/reader035/viewer/2022062312/552fc0f8497959413d8b51cb/html5/thumbnails/50.jpg)
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
![Page 51: 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](https://reader035.vdocuments.net/reader035/viewer/2022062312/552fc0f8497959413d8b51cb/html5/thumbnails/51.jpg)
Como Funciona?
Mecanismo é chamado pilha de execuçãoA pilha de execução está vaziaAo iniciar a execução de um bloco (início...
fim), as variáveis são empilhadas à medida em que são criadas;
Ao final de um bloco, essas variáveis são desempilhadas, liberando espaço na memória.
![Page 52: 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](https://reader035.vdocuments.net/reader035/viewer/2022062312/552fc0f8497959413d8b51cb/html5/thumbnails/52.jpg)
Exemplo
Inteiro calcularAreaRetangulo(Inteiro base, Inteiro alt)Início Inteiro area=base * alt; return area;Fim
area
Início da função Durante a Função Depois da Função
![Page 53: 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](https://reader035.vdocuments.net/reader035/viewer/2022062312/552fc0f8497959413d8b51cb/html5/thumbnails/53.jpg)
Variáveis Locais x Globais
É possível declarar variáveis locais com o mesmo nome de variáveis globais
Nestes caso, a variável local “esconde” a variável global
Inteiro notaprocedimento funcao() Início
Inteiro nota;/* Neste ponto, nota é variável local*/
Fim
![Page 54: 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](https://reader035.vdocuments.net/reader035/viewer/2022062312/552fc0f8497959413d8b51cb/html5/thumbnails/54.jpg)
Revisão
Porquê usar funções Sintaxe Como usar funções Como funciona a chamada de funções Definição de variáveis locais Execução da pilha de execução
![Page 55: 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](https://reader035.vdocuments.net/reader035/viewer/2022062312/552fc0f8497959413d8b51cb/html5/thumbnails/55.jpg)
Próximos Passos
Variações nas passagens de parâmetro (valor, referência, limitações)
Recursão
![Page 56: 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](https://reader035.vdocuments.net/reader035/viewer/2022062312/552fc0f8497959413d8b51cb/html5/thumbnails/56.jpg)
Exercícios
Criar uma função que receba as coordenadas x,y e z de dois vetores e calcule o produto escalar destes 2 vetores
Criar uma função que calcule a área de um circulo que receba o raio como parâmetro
Criar funções que calculem a área de um triangulo( parâmetros a serem definidos)