Baixe o app para aproveitar ainda mais
Prévia do material em texto
Comandos iterativosComandos iterativosComandos iterativosComandos iterativos •• para ... p •• enquanto ... •• faça ... enquanto 1 Comando de repetiçãoComando de repetiçãopp para número fixo de repetiçõespara número fixo de repetições Pseudolinguagem para <atribuição(ões)> ; <condição_do_laço>;<incremento(s)/decremento(s)> <comando> Pseudolinguagem <comando> 1 comando atribuição(ões): inicialização(ões) da(s) variável(eis) de controle; condição_do_laço: condição que controla a execução do laço; 2 incremento(s)/decremento(s): incrementos e/ou decrementos da(s) variável(eis) de controle. AlgoritmoAlgoritmo AprovadoReprovadoAprovadoReprovadogg p pp p entradas : numeros, médias saídas: para cada aluno, numero e ‘Aprovado’ ou ‘Reprovado’ Cabeçalho que controla a repetição 1.Para (contador = 1; contador <=5 ; contador + 1) início Comando a ser p ç ler numero, média se média >= 6,0 repetido escrever numero, ‘Aprovado’ senão escrever numero, ‘Reprovado’ fim 2. Terminar. 3 Comando forComando forComando forComando for Diagrama de sintaxeDiagrama de sintaxe for expressão( ; expressão ; )expressão comando 4 // Determina se alunos foram ou não aprovados #include <stdio h>#include <stdio.h> int main ( ) { int contador, numaluno; Controle de repetiçãoComando a ser { int contador, numaluno; float media; for (contador = 1; contador < 6; contador ++) repetição repetido ( ; ; ) { scanf (“%d”, &numaluno); scanf(“%f”, &media); if (media >= 6.0) printf (“O aluno %d foi aprovado”, numaluno); else printf (“O aluno %d foi reprovado”, numaluno); } t 0 5 return 0; } Ler 500 valores Ler 500 valores –– informar o maior e sua posiçãoinformar o maior e sua posição // t l d t i i i//entre valores, determina maior e sua posicao #include <stdio.h> int main ( ) {{ float n; // lido } float maior; // guarda o maior lido int posicao; // posicao do maior nos lidos int k; // variavel de controle do forint k; // variavel de controle do for scanf(“%f”, &n); // por enquanto o primeiro eh o maior maior = n; posicao = 1;posicao 1; for (k = 2; k <= 500; k++) { scanf(“%f”, &n); if (n >= maior) O que acontece se entre os números lidos if (n >= maior) { maior = n; posicao = k; existem valores iguais ?p ; } } // do for printf(“\nMaior lido: %7.2f na posicao %d\n”, maior posicao); 6 maior, posicao); return 0; } Imprimir números divisíveis por 5 entre dois Imprimir números divisíveis por 5 entre dois limites fornecidos, e seu produtolimites fornecidos, e seu produto Algoritmo DivisiveisPorCinco ; Entradas: LimSup, LimInf S íd t d di i í i 5 t li it d dSaídas: todos os divisíveis por 5 entre os limites dados produto destes inícioc o 1. Ler (LimInf, LimSup); 2. se LimInf > LimSup então in erter os limitesentão inverter os limites 3. Inicializar o Produto em 1 4. Para K de limite inferior até o limite superiorp faça se K divisível por 5 então início 4 1 Escrever (K)4.1 Escrever (K) 4.2 acumular Produto fim 7 5. Escrever(Produto) 6. Fim Imprimir números divisíveis por 5 entre dois Imprimir números divisíveis por 5 entre dois limites fornecidos, e seu produtolimites fornecidos, e seu produto //imprime divisiveis por cinco entre um limite informado, mais seu produto #include <stdio.h> int main ( ) {{ int liminf, limsup; // limites long int produto; // produto int aux, k; // variaveis auxiliares scanf(“%d %d”, &liminf, &limsup); // obter os limites if (liminf > limsup) // testa se limites estao em ordem correta { // inverte os valores dos limites aux = liminf;aux = liminf; liminf = limsup; limsup = aux; }} produto = 1; // inicializacao de produto for (k = liminf; k <= limsup; k++) if (k % 5 == 0) // se k for zero ? {{ printf(“\n%d”, k); produto = produto * k; } 8 } printf(“\nProduto: %d”, produto); return 0; } Seja o problema:Seja o problema:j pj p Faça um algoritmo e o programa em C correspondente que leia um valor inteiro n e informe os primeiros n termos da Série f m p m m de Fibonacci. 9 Série de FibonacciSérie de Fibonacci Descoberta por Leonardo Pisano - 1202escobe ta po eo a do sa o 0 1 1 2 3 5 8 13 ...1 1 2 3 5 81 1 2 3 51 1 2 31 1 21 11 1 2 3 5 8 13 ...1 1 2 3 5 81 1 2 3 51 1 2 3 NN-1 1 1 2 N-2 1 1 fib(1) = 1fib(1) = 1 fib(2) = 1 fib( ) fib( 1) fib( 2) 2fib(n) = fib(n-1) + fib(n-2), para n > 2 10 Série de FibonacciSérie de Fibonacci Descoberta por Leonardo Pisano - 1202escobe ta po eo a do sa o 0 1 1 2 3 5 8 13 ...1 1 2 3 5 81 1 2 3 51 1 2 31 1 21 11 1 2 3 5 8 13 ...1 1 2 3 5 8 NN-1N-2 1 1 2 3 51 1 2 31 1 21 1 fib(1) = 1fib(1) = 1 fib(2) = 1 fib( ) fib( 1) fib( 2) 2fib(n) = fib(n-1) + fib(n-2), para n > 2 11 SérieSérie de Fibonaccide FibonacciSérieSérie de Fibonaccide Fibonacci Descoberta por Leonardo Pisano - 1202escobe ta po eo a do sa o 0 1 1 2 3 5 8 13 ...1 1 2 3 5 81 1 2 3 51 1 2 31 1 21 11 1 2 3 5 8 13 ...1 1 2 3 5 8 NN-1N-2 1 1 2 3 51 1 2 31 1 21 1 fib(1) = 1fib(1) = 1 fib(2) = 1 fib( ) fib( 1) fib( 2) 2fib(n) = fib(n-1) + fib(n-2), para n > 2 12 Série de FibonacciSérie de Fibonacci /*Algoritmo Fibonacci { gera uma seqüência de N termos da série de Fibonacci } entradas: N (inteiro) saídas: seqüência dos N termos, impressos um a um*/saídas: seqüência dos N termos, impressos um a um / 1. início 2. termo_2← 1 {inicializa 1o termo da série} 3 termo 1← 1 {inicializa 2o termo da série}3. termo_1← 1 {inicializa 2o termo da série} 4. ler n 5. para (i = 1;i<=n;i++) {um único comando: não precisa início/fim no For} 5.1 se (i =1 ou i = 2) {usando IF} 5.1.1 imprime termo_2 {os dois 1os termos são iguais} 5.1.2 senão termo← termo 1 + termo 25.1.2 senão termo← termo_1 termo_2 imprime termo termo_2← termo_1 termo 1← termo 13 termo_1← termo 6. fim /* Calcula a sequência de Fibonacci até o termo solicitado*/ #include <stdio.h> #include <stdlib h>#include <stdlib.h> int main() { int t, t 1=1, t 2 = 1; // declara termos, inicializando os 2 primeiros, _ , _ ; c ara t rmos, n c a zan o os pr m ros int n; // número de termos a serem informados int cont; // variável de controle do for printf("Informe quantos termos devem ser gerados: "); f("%d" & )scanf("%d",&n); printf("\n\n"); // deixa 2 linhas em branco for (cont=1; cont <= n; cont++) // apenas 1 comando: sem { } if (cont == 1 || cont == 2) // 2 primeiros termos iniciam iguaisif (cont == 1 || cont == 2) // 2 primeiros termos iniciam iguais printf("%d ",t_1); // ou t_2, aqui tanto faz else { com switch-case?{ t=t_1+t_2; // calcula termo atual printf("%d ",t); // imprime termo calculado e atualiza t_2=t_1; // conteúdos anteriores, já preparando ó com switch case? j p p t_1=t; // para o calculo do próximo termo } printf("\n\n"); // deixa 2 linhas em branco system("pause"); 14 system( pause ); return(0); } /* Calcula a sequência de Fibonacci até o termo solicitado*/ #include <stdio.h> int main()() { int t, t_1=1, t_2 = 1; // declara termos, inicializando os 2 primeiros int n; // número de termos a serem informados int cont; // variável de controle do forint cont; // variável de controle do for printf("Informe quantos termos devem ser gerados: "); scanf("%d",&n); printf("\n\n"); // deixa 2 linhas em branco f ( t 1 t < t++) // 1 d { }for (cont=1; cont <= n; cont++) // apenas 1 comando: sem { } switch (cont){ case 1: printf("%d ",t 2); // imprime 1o termo - t 2case 1: printf( %d ,t_2); // imprime 1o termo t_2 break; case 2: printf("%d ",t_1); // imprime 2o termo - t_1 break; d f lt t t 1 + t 2 // l l t t ldefault: t = t_1 + t_2; // calcula termo atual; printf("%d ",t); // imprime termo calculado e t_2 = t_1; // atualiza conteúdos anteriores, já t 1 = t; // preparando cálculo do próximo termot_1 t; // preparando cálculo do próximo termo } printf("\n\n"); // deixa 2 linhas em branco return(0); } 15 } Série de Fibonacci: execução do programa 16 Seja o problema:Seja o problema:j pj p F l it C Faça um algoritmo e o programa em C correspondente que leia dois valores inteiros e informe os números da Série de Fibonacci neste intervalo fechado Fibonacci neste intervalo fechado. Para facilitar, assuma que os números informados estarão em ordem crescente. 17 Série de FibonacciSérie de Fibonacci /*Algoritmo Fibonacci { gera uma seqüência de N termos da série de Fibonacci } entradas: N (inteiro) saídas: seqüência dos N termos impressos um a um*/saídas: seqüência dos N termos, impressos um a um / 1. início 2. termo_2 ← 1 //inicializa 1o termo da série_ 3. termo_1 ← 1 //inicializa 2o termo da série 4. ler ninic, nfinal 5. gera temos anteriore a ninic // não pode iniciar no meio... 6. para (i = onde está ; i<=nfinal;i++) informa termoiinforma termoi 7. fim 18 /* Informa termos selecionados da Sequência de Fibonacci */ #include <stdio.h> int main()int main() { int t, t_1=1, t_2 = 1; // declara termos, inicializando os 2 primeiros int n_inic, n_fim; // número de termos a serem i f d informados int cont; // variável de controle dos for: são 2! printf("Informe posicao inicial e final dos termos informados: "); scanf("%d%d" &n inic &n fim);scanf( %d%d ,&n_inic,&n_fim); printf("\n\n"); //deixa 2 linhas em branco /* gera termos da sequência que não serão mostrados: pode ser que o for abaixo nunca seja executado */ f d j for (cont=1; cont < n_inic; cont++) // termos não informados switch (cont) // passa por ou calcula termos de 3 a (n_inic - 1) { case 1: case 2: break; // 2 primeiros termos já estão prontoscase 2: break; // 2 primeiros termos já estão prontos default: t = t_1 + t_2; // calcula termo atual e t_2 = t_1; //atualiza conteúdos anteriores, já ó j t_1 = t; // preparando para o calculo do próximo termo } // sai do for com cont = n_inic, isto é, posição do 1o termo pedido /* Início da impressão dos termos solicitados: */ 19 / Início da impressão dos termos solicitados: / // (continua no próximo slide) ..... /* Início da impressão dos termos solicitados: observe que o conteúdo de cont já está inicializado em n_inic porque saiu com este valor do FOR anterior */ for (; cont <= n_fim; cont++) // não inicializa variável de controle if (cont == 1 || cont == 2) // 2 primeiros termos iniciam iguais printf("%d ",t_1); // ou t_2, tanto faz elseelse { t=t_1+t_2; // calcula termo atual; printf("%d ",t); // imprime termo calculado e t 2=t 1; // atualiza conteúdos anteriores ját_2=t_1; // atualiza conteúdos anteriores, já t_1=t; // preparando para o calculo do próximo termo } d 2 l h bprintf("\n\n"); //deixa 2 linhas em branco return(0); } 20 Comandos Comandos for for aninhadosaninhadosmm ff for ( <expressão 1> ; <expressão 2> ; <expressão3> ) <comando> 1 comando Comando: 1 comando ... - qualquer comando -> pode ser comando for ... for (ka = 1; ka <= 10; ka++) { scanf (“%d”, &n); f ( l 1 l l ) ... for (ka = 1; ka <= 5;ka++) for (ele=1;ele<=3;ele++)for (ele = 1;ele < n; ele++) printf(“%d ”, ele); } for (ele 1;ele< 3;ele++) printf(“%d %d”, ka , ele); ... 21 ... Exercício: Exercício: gerador de tabuadagerador de tabuada Faça um programa que ç p g q gere o resultado da tabuada de todos os números de 1 a 10.m O resultado deve aparecer como na tela ao ladolado. Dica: use 2 comandos for aninhados: 1 para t l controlar os multiplicadores e outro para controlar os lti li dmultiplicandos. Programa Gerador de TabuadasPrograma Gerador de Tabuadas /* gera a tabuada dos números de 1 a 10: Entrada: não há Saida: impressao da tabuada na tela */ #include <stdio h>#include <stdio.h> # include <stdlib.h> int main ( ) {{ int multiplicando, multiplicador; system("color f9"); for (multiplicador=1; multiplicador <=10; multiplicador++) { // para cada valor de multiplicador varia multiplicando de 1 a 10{ // para cada valor de multiplicador, varia multiplicando de 1 a 10 printf(" Tabuada de %d:\n", multiplicador); // 1 vez, antes do for for (multiplicando = 1; multiplicando <= 10; multiplicando++) printf("%2d X %2d = %3d\n", multiplicando , multiplicador, l l d * l l d ) p ( p p multiplicando * multiplicador); printf("\n"); // 1 linha em branco, após conclusão do for interno system("pause>>null"); // segura tela para visualização até enter }} system("pause"); return 0; } Programa Gerador de TabuadasPrograma Gerador de Tabuadas /* gera a tabuada dos números de 1 a 10: Entrada: não há Saida: impressao da tabuada na tela */ #include <stdio h>#include <stdio.h> # include <stdlib.h> int main ( ) {{ int multiplicando, multiplicador; system("color f9"); for (multiplicador=1; multiplicador <=10; multiplicador++) { // para cada valor de multiplicador varia multiplicando de 1 a 10{ // para cada valor de multiplicador, varia multiplicando de 1 a 10 printf(" Tabuada de %d:\n", multiplicador); // 1 vez, antes do for for (multiplicando = 1; multiplicando <= 10; multiplicando++) printf("%2d X %2d = %3d\n", multiplicando , multiplicador, l l d * l l d ) p ( p p multiplicando * multiplicador); printf("\n"); // 1 linha em branco, após conclusão do for interno system("pause>>null"); // segura tela para visualização até enter }} system("pause"); return 0; } for aninhado (for dentro de for) ExercícioExercício Processar as notas de 3 turmas de alunos. Para cada turma ler inicialmente o número de Para cada turma, ler inicialmente o número de alunos da turma. Depois, para cada aluno, ler suas 3 notas, calcular e informar a média.suas 3 notas, calcular e informar a média. No final, fornecer a média das notas de cada turma. 25 O que fazem os programas O que fazem os programas p gp g abaixo:abaixo://programa de teste #include <stdio.h> //programa de teste #include <stdio.h> # include <stdlib.h> int main ( ) { # include <stdlib.h> int main ( ) {{ int i; for (i = 1; i < 10 ; i--) printf("\n%d" i); { int i, j; for (i = 1, j=2; i < j ; i--, j++) printf("\n%d %d" i j);printf( \n%d , i); system("pause"); return 0; } printf( \n%d %d , i,j); system("pause"); return 0; }} } Loop (laço) infinito!!!!
Compartilhar