estrutura de dados...estrutura de dados roteiro •funções •procedimentos •variáveis locais e...
TRANSCRIPT
![Page 1: Estrutura de dados...Estrutura de dados Roteiro •Funções •Procedimentos •Variáveis locais e globais •Recursividade •Exercícios Exercícios 1. Crie um programa que leia](https://reader033.vdocuments.pub/reader033/viewer/2022060423/5f19fa6942ca1d66633f70d3/html5/thumbnails/1.jpg)
Joyce FrançaProfessora de Ciência da Computação - IFNMG
Estrutura de dados
![Page 2: Estrutura de dados...Estrutura de dados Roteiro •Funções •Procedimentos •Variáveis locais e globais •Recursividade •Exercícios Exercícios 1. Crie um programa que leia](https://reader033.vdocuments.pub/reader033/viewer/2022060423/5f19fa6942ca1d66633f70d3/html5/thumbnails/2.jpg)
Roteiro
• Funções• Procedimentos• Variáveis locais e globais• Recursividade• Exercícios
![Page 3: Estrutura de dados...Estrutura de dados Roteiro •Funções •Procedimentos •Variáveis locais e globais •Recursividade •Exercícios Exercícios 1. Crie um programa que leia](https://reader033.vdocuments.pub/reader033/viewer/2022060423/5f19fa6942ca1d66633f70d3/html5/thumbnails/3.jpg)
Exercícios
1. Crie um programa que leia três números. Para cada número, imprima o dobro. Use uma função que recebe como parâmetro um número inteiro e devolve o seu dobro. O valor calculado deve ser impresso na função principal.
2. Faça um programa receba dois números e execute asseguintes funções:▫ Verificar se o número digitado é positivo ou negativo.
Sendo que o valor de retorno será 1 se positivo, -1 senegativo ou 0 se for igual a 0.▫ Declare a função como: int verfica(int num);
3
![Page 4: Estrutura de dados...Estrutura de dados Roteiro •Funções •Procedimentos •Variáveis locais e globais •Recursividade •Exercícios Exercícios 1. Crie um programa que leia](https://reader033.vdocuments.pub/reader033/viewer/2022060423/5f19fa6942ca1d66633f70d3/html5/thumbnails/4.jpg)
Variáveis locais e variáveis globais
• Uma variável é chamada local se ela foi declarada dentro de uma função. Nesse caso, ela existe somente dentro daquela função e após o término da execução da mesma, a variável deixa de existir.
• Uma variável é chamada global se ela for declarada fora de qualquer função. Essa variável existe dentro de todas as funções e qualquer procedimento ou função pode alterá-la.
4
![Page 5: Estrutura de dados...Estrutura de dados Roteiro •Funções •Procedimentos •Variáveis locais e globais •Recursividade •Exercícios Exercícios 1. Crie um programa que leia](https://reader033.vdocuments.pub/reader033/viewer/2022060423/5f19fa6942ca1d66633f70d3/html5/thumbnails/5.jpg)
Variáveis locais
int soma (int a, int b) {
int r;r=a+b;return (r);
}
5
![Page 6: Estrutura de dados...Estrutura de dados Roteiro •Funções •Procedimentos •Variáveis locais e globais •Recursividade •Exercícios Exercícios 1. Crie um programa que leia](https://reader033.vdocuments.pub/reader033/viewer/2022060423/5f19fa6942ca1d66633f70d3/html5/thumbnails/6.jpg)
Variáveis globais
#include <stdio.h>int variavel_global;
void incrementa(){
variavel_global++;}
int main () {
variavel_global = 0;incrementa();printf ("%d", variavel_global);
}
6
![Page 7: Estrutura de dados...Estrutura de dados Roteiro •Funções •Procedimentos •Variáveis locais e globais •Recursividade •Exercícios Exercícios 1. Crie um programa que leia](https://reader033.vdocuments.pub/reader033/viewer/2022060423/5f19fa6942ca1d66633f70d3/html5/thumbnails/7.jpg)
Escopo das variáveis
![Page 8: Estrutura de dados...Estrutura de dados Roteiro •Funções •Procedimentos •Variáveis locais e globais •Recursividade •Exercícios Exercícios 1. Crie um programa que leia](https://reader033.vdocuments.pub/reader033/viewer/2022060423/5f19fa6942ca1d66633f70d3/html5/thumbnails/8.jpg)
Exemplo#include<stdio.h>
//declaração de variáveis globaisfloat media, nota1, nota2;
//função entrada de dados//usa as variáveis globais nota1 e nota2void entrada(){
printf("\nDigite a primeira nota: ");scanf("%f", ¬a1);printf("Digite a segunda nota: ");scanf("%f", ¬a2);
}
8
// —————- funçao main()——————-int main(void){//variável localchar resposta;do{
//chamada da função p/ entrada das notasentrada();//usando variáveis globais: media,nota1,nota2media = (nota1 + nota2) / 2;printf("\nMedia do aluno: %.2f\n", media);printf("\nDeseja calcular outra media? (s/n)");fflush(stdin);scanf("%c",&resposta);
}while(resposta == ‘s’);
}
![Page 9: Estrutura de dados...Estrutura de dados Roteiro •Funções •Procedimentos •Variáveis locais e globais •Recursividade •Exercícios Exercícios 1. Crie um programa que leia](https://reader033.vdocuments.pub/reader033/viewer/2022060423/5f19fa6942ca1d66633f70d3/html5/thumbnails/9.jpg)
![Page 10: Estrutura de dados...Estrutura de dados Roteiro •Funções •Procedimentos •Variáveis locais e globais •Recursividade •Exercícios Exercícios 1. Crie um programa que leia](https://reader033.vdocuments.pub/reader033/viewer/2022060423/5f19fa6942ca1d66633f70d3/html5/thumbnails/10.jpg)
RecursividadeFunções Recursivas
28/08/2018
10
![Page 11: Estrutura de dados...Estrutura de dados Roteiro •Funções •Procedimentos •Variáveis locais e globais •Recursividade •Exercícios Exercícios 1. Crie um programa que leia](https://reader033.vdocuments.pub/reader033/viewer/2022060423/5f19fa6942ca1d66633f70d3/html5/thumbnails/11.jpg)
Conceito de Recursividade
• Função recursiva é aquela que chama a si própria. • Uma função poderá também ser considerada recursiva
se chamar outras funções que, em algum momento, chamem a primeira função, tornando esse conjunto de funções um processo recursivo.
![Page 12: Estrutura de dados...Estrutura de dados Roteiro •Funções •Procedimentos •Variáveis locais e globais •Recursividade •Exercícios Exercícios 1. Crie um programa que leia](https://reader033.vdocuments.pub/reader033/viewer/2022060423/5f19fa6942ca1d66633f70d3/html5/thumbnails/12.jpg)
Recursividade
• Definição: dentro do corpo de uma função, chamar novamente a própria função▫ recursão direta: a função A chama a própria função A ▫ recursão indireta: a função A chama uma função B
que, por sua vez, chama A
![Page 13: Estrutura de dados...Estrutura de dados Roteiro •Funções •Procedimentos •Variáveis locais e globais •Recursividade •Exercícios Exercícios 1. Crie um programa que leia](https://reader033.vdocuments.pub/reader033/viewer/2022060423/5f19fa6942ca1d66633f70d3/html5/thumbnails/13.jpg)
Recursividade
• A recursividade é uma estratégia que pode ser utilizada sempre que o cálculo de uma função para o valor n, pode ser descrita a partir do cálculo desta mesma função para o termo anterior (n-1).
Exemplo – Função fatorial:
n! = n * (n-1) * (n-2) * (n-3) *....* 1(n-1)! = (n-1) * (n-2) * (n-3) *....* 1
logo:
n! = n * (n-1)!
![Page 14: Estrutura de dados...Estrutura de dados Roteiro •Funções •Procedimentos •Variáveis locais e globais •Recursividade •Exercícios Exercícios 1. Crie um programa que leia](https://reader033.vdocuments.pub/reader033/viewer/2022060423/5f19fa6942ca1d66633f70d3/html5/thumbnails/14.jpg)
Condição de parada
• Funções recursivas contem duas partes fundamentais:▫ Regra Geral: � é o método que reduz a resolução do problema através da
invocação recursiva de casos menores, que por sua vez são resolvidos pela resolução de casos ainda menores pela própria função, assim sucessivamente até atingir o “ponto de parada” que finaliza o método.
▫ Condição de parada� Permite que o procedimento pare de se executar� ponto onde a função será encerrada, e é geralmente um
limite superior ou inferior da regra geral.
![Page 15: Estrutura de dados...Estrutura de dados Roteiro •Funções •Procedimentos •Variáveis locais e globais •Recursividade •Exercícios Exercícios 1. Crie um programa que leia](https://reader033.vdocuments.pub/reader033/viewer/2022060423/5f19fa6942ca1d66633f70d3/html5/thumbnails/15.jpg)
Execução
• Internamente, quando qualquer chamada de função é feita dentro de um programa, é criado um Registro de Ativação na Pilha de Execução do programa
• O registro de ativação armazena os parâmetros e variáveis locais da função bem como o “ponto de retorno” no programa ou subprograma que chamou essa função.
• Ao final da execução dessa função, o registro é desempilhado e a execução volta ao subprograma que chamou a função
![Page 16: Estrutura de dados...Estrutura de dados Roteiro •Funções •Procedimentos •Variáveis locais e globais •Recursividade •Exercícios Exercícios 1. Crie um programa que leia](https://reader033.vdocuments.pub/reader033/viewer/2022060423/5f19fa6942ca1d66633f70d3/html5/thumbnails/16.jpg)
Exemplo 1
• Como primeiro exemplo de função recursiva, vamos ver o cálculo de fatorial.
▫ Fazer fatorial usando estruturas de repetição▫ Fazer fatorial usando recursividade
28/08/2018
16
![Page 17: Estrutura de dados...Estrutura de dados Roteiro •Funções •Procedimentos •Variáveis locais e globais •Recursividade •Exercícios Exercícios 1. Crie um programa que leia](https://reader033.vdocuments.pub/reader033/viewer/2022060423/5f19fa6942ca1d66633f70d3/html5/thumbnails/17.jpg)
28/08/2018
17
![Page 18: Estrutura de dados...Estrutura de dados Roteiro •Funções •Procedimentos •Variáveis locais e globais •Recursividade •Exercícios Exercícios 1. Crie um programa que leia](https://reader033.vdocuments.pub/reader033/viewer/2022060423/5f19fa6942ca1d66633f70d3/html5/thumbnails/18.jpg)
Algoritmos e Estrutura de Dados I
Exemplo 1
fat (int n) {if (n<=0)
return 1;else
return n * fat(n-1);}
main() {int f;f = fat(5);
printf(“%d”,f);}
![Page 19: Estrutura de dados...Estrutura de dados Roteiro •Funções •Procedimentos •Variáveis locais e globais •Recursividade •Exercícios Exercícios 1. Crie um programa que leia](https://reader033.vdocuments.pub/reader033/viewer/2022060423/5f19fa6942ca1d66633f70d3/html5/thumbnails/19.jpg)
Exemplo 2
• Fibonacci▫ Seqüência de Fibonacci
28/08/2018
19
![Page 20: Estrutura de dados...Estrutura de dados Roteiro •Funções •Procedimentos •Variáveis locais e globais •Recursividade •Exercícios Exercícios 1. Crie um programa que leia](https://reader033.vdocuments.pub/reader033/viewer/2022060423/5f19fa6942ca1d66633f70d3/html5/thumbnails/20.jpg)
28/08/2018
20
![Page 21: Estrutura de dados...Estrutura de dados Roteiro •Funções •Procedimentos •Variáveis locais e globais •Recursividade •Exercícios Exercícios 1. Crie um programa que leia](https://reader033.vdocuments.pub/reader033/viewer/2022060423/5f19fa6942ca1d66633f70d3/html5/thumbnails/21.jpg)
28/08/2018
21
![Page 22: Estrutura de dados...Estrutura de dados Roteiro •Funções •Procedimentos •Variáveis locais e globais •Recursividade •Exercícios Exercícios 1. Crie um programa que leia](https://reader033.vdocuments.pub/reader033/viewer/2022060423/5f19fa6942ca1d66633f70d3/html5/thumbnails/22.jpg)
Exemplo 3
• Somatório▫ Soma N primeiros números inteiros
28/08/2018
22
![Page 23: Estrutura de dados...Estrutura de dados Roteiro •Funções •Procedimentos •Variáveis locais e globais •Recursividade •Exercícios Exercícios 1. Crie um programa que leia](https://reader033.vdocuments.pub/reader033/viewer/2022060423/5f19fa6942ca1d66633f70d3/html5/thumbnails/23.jpg)
28/08/2018
23
![Page 24: Estrutura de dados...Estrutura de dados Roteiro •Funções •Procedimentos •Variáveis locais e globais •Recursividade •Exercícios Exercícios 1. Crie um programa que leia](https://reader033.vdocuments.pub/reader033/viewer/2022060423/5f19fa6942ca1d66633f70d3/html5/thumbnails/24.jpg)
28/08/2018
24
![Page 25: Estrutura de dados...Estrutura de dados Roteiro •Funções •Procedimentos •Variáveis locais e globais •Recursividade •Exercícios Exercícios 1. Crie um programa que leia](https://reader033.vdocuments.pub/reader033/viewer/2022060423/5f19fa6942ca1d66633f70d3/html5/thumbnails/25.jpg)
Exercício
1. O programa abaixo implementa duas funções para multiplicar dois números, sendo uma iterativa e outra recursiva. Analise as duas chamadas no programa principal e informe passo a passo o resultado obtido em cada uma.
28/08/2018
25
![Page 26: Estrutura de dados...Estrutura de dados Roteiro •Funções •Procedimentos •Variáveis locais e globais •Recursividade •Exercícios Exercícios 1. Crie um programa que leia](https://reader033.vdocuments.pub/reader033/viewer/2022060423/5f19fa6942ca1d66633f70d3/html5/thumbnails/26.jpg)
28/08/2018
26
![Page 27: Estrutura de dados...Estrutura de dados Roteiro •Funções •Procedimentos •Variáveis locais e globais •Recursividade •Exercícios Exercícios 1. Crie um programa que leia](https://reader033.vdocuments.pub/reader033/viewer/2022060423/5f19fa6942ca1d66633f70d3/html5/thumbnails/27.jpg)
Exercício
• Faça uma função recursiva que receba um número inteiro positivo N e imprima todos os números naturais de 0 até N em ordem decrescente
28/08/2018
27