Algoritmo e Estrutura de Dados I Aula 8 – Linguagem C - Comandos for, while e do-while Márcia Marra [email protected] Comando for • o loop for é usado para repetir um comando, ou bloco de comandos, diversas vezes, de maneira que se possa ter um bom controle sobre o loop. • Sua forma geral é: for(inicialização;condição;incremento) declaração; 2 Funcionamento do for • O loop for é equivalente a fazer: inicialização; if (condição) { declaração; incremento; "Volte para o comando if" } 3 Primeiro exemplo de utilização do comando for #include <stdio.h> int main () { int count; for (count=1; count<=100; count++) printf ("%d ",count); printf(“\n”); return(0); } 4 Execução do primeiro exemplo 5 Segundo exemplo #include <stdio.h> int main () { int i, cont; int tamanhoString = 100; /* String de ate 99 caracteres */ char string[tamanhoString]; printf("\n\nDigite uma frase: "); /* Le a string */ fgets(string, tamanhoString, stdin); printf("\n\nFrase digitada:\n%s", string); cont = 0; for (i=0; string[i] != '\0'; i=i+1) { if ( string[i] == 'c' ) cont = cont +1; } printf("\nNumero de caracteres c = %d\n", cont); return(0); } 6 Execução do segundo exemplo 7 Terceiro exemplo #include <stdio.h> int main() { char letra; for(letra = 'A' ; letra <= 'Z'; letra =letra+1) printf("%c ", letra); printf("\n"); return(0); } 8 Execução do terceiro exemplo 9 Flexibilidade do comando for • Temos acesso a inicialização, a condição e ao incremento: – Aceitam qualquer expressão desde que ela seja válida • Alguns exemplos: for ( count = 1; count < 100 ; count++) { ... } for (count = 1; count < NUMERO_DE_ELEMENTOS ; count++) { ... } for (count = 1; count < BusqueNumeroDeElementos() ; count+=2) { ... } 10 Loop infinito • Em um loop infinito não existe condição de parada: – os comandos são executados para sempre, até que ele seja interrompido com o comando break; • Forma geral: for(inicialização; ;incremento) declaração; 11 Exemplo de loop infinito – dia aniversário #include <stdio.h> int main(){ int count; int valorLido; int diaAniversario = 01; printf("Tente acertar a dia do meu aniversario!! \n\nEm que dia voce acha que eu comemoro o meu aniversario?\n"); for(count=0;;count++){ scanf("%d", &valorLido); // Testa se o dia eh valido if ((valorLido < 1) || (valorLido > 31)) printf("\nEste nao eh um dia valido. Tente novamente:"); else { if (valorLido != diaAniversario) { printf("\nVoce errou o dia! Tente novamente:\n"); } else { printf("\nParabens!! Voce acertou o dia!!\n\n"); break; } } } return 0; 12 } Execução do programa com loop infinito 13 Comando while • Forma geral: while (condição) declaração; • O comando while é equivalente a fazer: if (condição) { declaração; "Volte para o comando if" } 14 Exemplo utilizando o while #include <stdio.h> int main () { int i = 0; while ( i < 100) { printf(" %d", i); i++; } return(0); } 15 Segundo comando utilizando while #include <stdio.h> int main(){ int count; int valorLido; int diaAniversario = 01; printf("Tente acertar a dia do meu aniversario!!\n\nEm que dia voce acha que eu comemoro o meu aniversario?\n"); scanf("%d", &valorLido); while (valorLido != diaAniversario) { // Testa se o dia eh valido if ((valorLido < 1) || (valorLido > 31)) { printf("\nEste nao eh um dia valido. Tente novamente:"); } else { printf("\nVoce errou o dia! Tente novamente:\n"); } scanf("%d", &valorLido); } printf("\n\nParabens!! Voce acertou o dia!!\n\n"); return 0; } 16 Comando while-do • Forma geral: do { declaração; } while (condição); • O comando executa a declaração até que a condição seja verdadeira. 17 Exemplo utilizando o do-while – menu de frutas #include <stdio.h> int main () { int i; do { printf ("\n\nEscolha a fruta pelo numero:\n\n"); printf ("\t(1)...Mamao\n"); printf ("\t(2)...Abacaxi\n"); printf ("\t(3)...Laranja\n\n"); scanf("%d", &i); } while ((i<1)||(i>3)); switch (i) { case 1: printf ("\t\tVoce escolheu Mamao.\n"); break; case 2: printf ("\t\tVoce escolheu Abacaxi.\n"); break; case 3: printf ("\t\tVoce escolheu Laranja.\n"); break; } return(0); } 18 Execução do programa com while-do 19 Pratique a estrutura de repetição • Reescreva o problema de contagem dos bois utilizando as estruturas de repetição vistas em sala de aula. 20