Escolar Documentos
Profissional Documentos
Cultura Documentos
• Unidade de Ensino: 04
• Teleaula nº: 04
1 2
Contextualização
Conceitos
• Procedimentos;
• Funções; Procedimentos
• Escopo e Passagem de Parâmetros;
• Recursividade.
3 4
5 6
12/09/2023
7 8
9 10
} 10.}
11.int main(){
12.int *p;
13.int i;
11 12
12/09/2023
13 14
Procedimentos e funções
Exercício 01:
Conceitos
Código exibir números.
Escopo e passagem de
Exercício 02:
parâmetros
Código seleção, consulta, remoção, inserir números.
15 16
17 18
12/09/2023
19 20
21 22
23 24
12/09/2023
10. }
25 26
27 28
29 30
12/09/2023
Pilhas
Exercício 01:
Interação
Manipulação de números.
31 32
Exercício: Listas
33 34
Recursividade
Recursividade
35 36
12/09/2023
Recursividade Recursividade
Recursividade Para entender todo o processo, vamos estabelecer alguns pontos de
atenção:
37 38
Recursividade Recursividade
• As variáveis criadas em cada instância da função na memória são Toda função recursiva, obrigatoriamente, tem que ter uma
independentes, ou seja, mesmo as variáveis tendo nomes iguais, cada instância com um caso que interromperá a chamada a novas
uma tem seu próprio endereço de memória e a alteração do valor em instâncias. Essa instância é chamada de caso base, pois representa o
uma não afetará na outra. caso mais simples, que resultará na interrupção.
Toda função recursiva tem que possuir um critério de parada.
A instância da função que atenderá a esse critério é chamada de caso
base.
39 40
Recursividade Recursividade
1. #include<stdio.h> 11. int main(){ A técnica de recursividade pode substituir o uso de estruturas
2. int somar(int valor){ 12. int n, resultado; de repetição, tornando o código mais elegante, do ponto de vista das
boas práticas de programação. Entretanto, como você viu, funções
3. if(valor != 0){ //critério de parada 13. printf(“\n Digite um numero inteiro
recursivas podem consumir mais memória que as estruturas iterativas.
4. return valor + somar(valor-1); positivo : “);
Recursividade é indicar quando um problema maior pode ser
//chamada 14. scanf(“%d”,&n);
dividido em instâncias menores do mesmo problema, porém,
5. recursiva 15. resultado = somar(n);//fazendo a considerando a utilização dos recursos computacionais que cada
6. } primeira chamada da função método empregará.
7. else{ 16. printf(“\n Resultado da soma =
%d”,resultado);
8. return valor;
17. return 0;
9. }
18. }
10. }
41 42
12/09/2023
Recursividade Recursividade
1. #include<stdio.h> 10. int main(){ Os resultados só são obtidos quando a função chega no caso
2. int fatorial(int valor){ 11. int n, resultado; base e, então, começa a “devolver” o resultado para a instância
anterior.
3. if(valor != 1){ //critério de parada 12. printf(“\n Digite um numero inteiro
4. return valor * fatorial(valor - 1); positivo : “);
//chamada recursiva 13. scanf(“%d”,&n);
5. } 14. resultado = fatorial(n);
6. else{ 15. printf(“\n Resultado do fatorial =
7. return valor; %d”,resultado);
8. } 16. return 0;
9. } 17. }
43 44
Recursividade Recursividade
Esse mecanismo é custoso para o computador, pois tem que 1. #include<stdio.h> 12.int main(){
alocar recursos para as variáveis e comandos da função, procedimento 2. int fatorialCauda(int valor){ 13.int n, resultado;
chamado de empilhamento, e tem também quearmazenar o local onde 3. return fatorialAux(valor, 1); 14.printf(“\n Digite um numero inteiro
foi feita a chamada da função (OLIVEIRA,2018). 4. } positivo : “);
Para usar a memória de forma mais otimizada, existe uma 5. int fatorialAux(int n, int parcial){ 15.scanf(“%d”,&n);
alternativa chamada recursividade em cauda. Nesse tipo de técnica a 6. if(n != 1){ 16.resultado =
recursividade funcionará como uma função iterativa (OLIVEIRA, 2018). fatorialCauda(n);//fazendo a
7. return fatorialAux((n - 1), (parcial *
Uma função é caracterizada como recursiva em cauda quando a n)); primeira
chamada a si mesmo é a última operação a ser feita no corpo da 17.chamada da função
8. }else{
função. 18.printf(“\n Resultado do fatorial =
9. return parcial;
%d”,resultado);
10.}
19.return 0;
11.}
20.}
45 46
Recursividade
O mecanismo de funcionamento da recursividade em cauda é
diferente. A função fatorialCauda() possui apenas uma instância, a qual
invoca a função fatorialAux(), passando como parâmetro o valor a ser Interação
calculado e o critério de parada.
Qual a importância de
saber utilizar
recursividade?
47 48
12/09/2023
Recapitulando
• Procedimentos;
• Funções;
• Recursividade.
49 50