Buscar

3.2 Slides Aula 3.2 Estrutura de Dados

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 24 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 24 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 24 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Estrutura de Dados
Aula 03
Orlei José Pombeiro
Organização da Aula
� Nesta aula vamos trabalhar o 
conceito de programação 
modularizada, utilizando funções:
• Criando funções
• Passagem de parâmetros
• Por valor
• Por referência
• Recursividade
FIM
Vídeo 1 – conversa inicial
Contextualização
De Funções
Vídeo 2 – contextualização
Funções Pré Existentes
� printf(“Escrever na tela”);
� scanf(“%d”, &numero);
� getch(letra);
� strcpy(string_destino, 
string_origem);
� strlen(frase);
FIM
Declarando Funções 1
void menu_teste()
{ printf(“Digite 1 para Cadastrar: \n”);
printf(“Digite 2 para Atualizar: \n”);
printf(“Digite 3 para Listar: \n”);
printf(“Digite 4 para Imprimir: \n”);
printf(“Digite 5 para Sair: \n”);
} 
main()
{ int op;
menu_teste();
scanf(“%d”, &op);
}
Vídeo 3 – Tema1
Declarando Funções 2
main()
{ void menu_teste()
{ printf(“Digite 1 para Cadastrar: \n”);
printf(“Digite 2 para Atualizar: \n”);
printf(“Digite 3 para Listar: \n”);
printf(“Digite 4 para Imprimir: \n”);
printf(“Digite 5 para Sair: \n”);
} 
int op;
menu_teste();
scanf(“%d”, &op);
}
Declarando Funções 3
void menu_teste();
main()
{ int op;
menu_teste();
scanf(“%d”, &op);
}
void menu_teste()
{ printf(“Digite 1 para Cadastrar: \n”);
printf(“Digite 2 para Atualizar: \n”);
printf(“Digite 3 para Listar: \n”);
printf(“Digite 4 para Imprimir: \n”);
printf(“Digite 5 para Sair: \n”);
} 
FIM
Instrumentalização
Funções Retornando Valor
int menu_teste()
{ in op;
printf(“Digite 1 para Cadastrar: \n”);
printf(“Digite 2 para Atualizar: \n”);
printf(“Digite 3 para Imprimir: \n”);
scanf(“%d”, &op);
return(op);
} 
main()
{ switch(menu_teste())
{
case 1: função_cadastra(); break;
case 2: função_atualizar(); break;
case 3: função_imprimir();break;
}
}
Vídeo 4 – Tema2
FIM
Passagem de Parâmetro por Valor
char primo(int valor)
{ int x;
for(x=2; x<valor; x++)
if( (valor % x) == 0)
return(“N”);
return(“S”);
} 
main()
{ int num;
printf(“Informe um número: “);
scanf(“%d”, &num);
if( primo(num) == ‘S’ )
printf(“Sim o número %d é primo” , num);
else
printf(“O número %d não é primo”, num);
}
Vídeo 5 – Tema3
FIM
Passagem por Referência
int menu_teste2(int *op)
{ 
printf(“Digite 1 para Cadastrar: \n”);
printf(“Digite 2 para Atualizar: \n”);
printf(“Digite 3 para Imprimir: \n”);
scanf(“%d”, op);
} 
main()
{ int num;
menu_teste2(&num);
switch( num ) 
{ case 1: funcao_cadastra(); break;
case 2: funcao_atualizar(); break;
case 3: funcao_imprimir(); break;
}
}
Vídeo 6 – Tema4
FIM
Recursividade
Vídeo 7 – Tema5
Ex: Usuário digitou “4” Fatorial de 4 é “24”
FIM
int Fat(int x)
{ int y;
if (x == 1)
y = 1; 
else
y = Fat(x-1) * x;
return(y);
}
void main()
{ int num,res;
printf("Digite um numero p/ calcular fatorial: ");
scanf("%d",&num);
res = Fat(num);
printf("\n\n O Fatorial de %d e' %d",num, res);
}
1ª Ins.
X == 4
Y=Fat(3)*4
Return(Y)
4ª Ins.
X == 1
Y = 1
Return(Y)
3ª Ins.
X == 2
Y=Fat(1)*2
Return(Y)
2ª Ins.
X == 3
Y=Fat(2)*3
Return(Y)
Aplicação
Com Funções
Aplicação
Criar um programa para cadastrar 100 pessoas. Deverá ter a 
possibilidade de a qualquer momento cadastrar novas 
pessoas, listar as existentes e atualizar algum dado de uma 
pessoa já cadastrada.
FIM
Vídeo 8 – Aplicação
struct Pessoa {
char nome[30];
char telefone[20];
char email[70];
};
struct Pessoa dados[100]; 
menu()
{ int op;
printf(“Digite 1 para Cadastrar: \n”);
printf(“Digite 2 para Atualizar: \n”);
printf(“Digite 3 para Listar: \n”);
printf(“Digite 4 para Sair: \n”); 
scanf(“%d”, op);
return(op);
} 
cadastrar( int *q)
{ if(*q >= 99)
{ 
printf(“Não é possível cadastrar, já esta no limite de 100”);
}
else
{ printf(“Informe Nome, Telefone e Email: ”);
scanf(“%s”, dados[q].nome );
scanf(“%s”, dados[q].telefone );
scanf(“%s”, dados[q].email );
*q++;
}
}
listar(int q)
{ int x;
for(x=0; x<q; x++)
printf(“Nome: %s, Telefone: %s, Email: %s.\n”, dados[q].nome, 
dados[q].telefone, dados[q].email);
}
atualizar( int q)
{ char nome[30];
int aux = -1;
printf(“Informe o nome da pessoa que deseja atualizar:”);
scanf(“%s”, %nome);
for(x=0; x<q; x++)
if(strcmp(dados[x].nome, nome) == 0)
{ aux = x;
break;
}
if(aux == -1)
{ printf(“Nome não localizado.”); }
else
{ printf(“Informe Nome, Telefone e Email: ”);
scanf(“%s %s %s”, dados[aux].nome, dados[aux].telefone, dados[aux].email );
}
}
main()
{
int op, qtd=0;
do
{ op = menu();
switch( op )
{ case 1: cadastrar( &qtd); break;
case 2: atualizar( qtd); break;
case 3: listar( qtd); break;
}
} while (op != 4);
}
Aplicação
Criar um algoritmo que possua uma função recursiva para 
imprimir a série de Fibonacci até a posição definida por 
um usuário.
A Série de Fibonacci
1-1-2-3-5-8-13-21-34
int Fib(int n1, int n2, int impr, int limite)
{
printf(“ %d ”, n2);
if (impr == limite)
return(0); 
else
Fib(n2, (n1+n2), impr++, limite);
}
main()
{ int num;
printf(“Até qual posição da série de Fibonacci deseja que seja impresso? ");
scanf("%d",&num);
Fib(0, 1, 1, num);
}
FIM
Síntese
Estruturas de Controle
Síntese
O ideal é que uma função execute uma única tarefa. 
FIM
A modularização de 
rotinas de programação 
torna o sistema mais 
organizado, “limpo” e 
“enxuto”, economizando 
linhas de código.
Vídeo 9 – Síntese
Referências de Apoio
•GADDIS; Starting Out with C++: Pearson New 
International E:From Control Structures through 
Objects, 
http://www.pearson.com.br/servicos.asp?pag_id=
82&area_pai=59&id_p=3
� http://www.inf.puc-
rio.br/~inf1620/material.html

Outros materiais