Baixe o app para aproveitar ainda mais
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
Compartilhar