Baixe o app para aproveitar ainda mais
Prévia do material em texto
Algoritmos e Programação I Aula 6 – Notas de aula Estrutura de Repetição: comandos while e do while - Estrutura de Repetição (continuação) Este material contém notas de aula sobre os comandos de repetição while e do while. while - comando while permite implementar laços de repetição, ou seja, definir trechos do código de um programa que se repetem. É conhecido como comando enquanto. - neste comando, um bloco de instruções é executado repetidamente enquanto uma condição for verdadeira. A condição é testada antes da primeira execução do bloco de instruções. - é necessário definir o valor inicial da variável contadora, antes do comando while iniciar. - o incremento ou decremento da variável contadora deve ser feito dentro das instruções do laço de repetição while - facilita a implementação de laços com número de execuções indefinido. while(condição){ bloco de instruções; } - enquanto a condição for verdadeira, o bloco de instruções é executado. Quando a condição for falsa,o laço de repetição não será executado, ou seja, a execução é desviada para o final. Se a condição já for falsa no momento do primeiro teste, o bloco nem chega a se executado e o algoritmo continua a execução na instrução seguinte ao fim do while. Exemplo: //Cálculo da média de notas da turma em uma avaliação #include<stdio.h> main(){ int i, n; float media=0, nota; printf("Calculo da media de notas da turma em uma avaliacao \n\n"); printf("Quantos alunos realizaram a avaliacao? "); scanf("%d", &n); i=1; while(i<=n){ printf("Digite a nota do aluno %d: ", i); scanf("%f", ¬a); media += nota; i++; } media = media/n; printf("\nA media final da turma eh %.2f\n", media); getch(); } do while - comando do while permite implementar laços de repetição, ou seja, definir trechos do código de um programa que se repetem. É conhecido como comando faça enquanto ou repita até. do{ bloco de instruções; } while(condição); - neste comando, um bloco de instruções é executado SEMPRE pelo menos 1 vez, até que a condição seja verdadeira. Isto acontece porque a condição é testada no final do laço de repetição (após a execução do bloco de instruções). - enquanto a condição for verdadeira, a execução volta para a execução no inicio do bloco (após o do) e o bloco de instruções volta a ser executado. Quando a condição for falsa, a execução do laço de iterações para de acontecer e a execução do algoritmo na próxima instrução após o teste da condição: while(condição); Exemplo: //Cálculo da média de notas da turma em uma avaliação #include<stdio.h> main(){ int i, n; float media=0, nota; printf("Calculo da media de notas da turma em uma avaliacao \n\n"); printf("Quantos alunos realizaram a avaliacao? "); scanf("%d", &n); i=1; do{ printf("Digite a nota do aluno %d: ", i); scanf("%f", ¬a); media += nota; i++; }while(i<=n); media = media/n; printf("\nA media final da turma eh %.2f\n", media); getch(); } Exercícios: 1) Somar uma sequencia de números digitados, enquanto estes são diferentes de zero. Faça duas versões do algoritmo, uma com o comando while e outra com o comando do-while. #include<stdio.h> main(){ float soma=0, n=1; while(n!=0){ printf("Digite um número: "); scanf("%f", &n); soma += n; }; printf("\nSomatorio = %.2f\n", soma); getch(); } #include<stdio.h> main(){ float soma=0, n; do{ printf("Digite um número: "); scanf("%f", &n); soma += n; }while(n!=0); printf("\nSomatorio = %.2f\n", soma); getch(); } 2) Escreva um programa em C que conte a quantidade de números pares e ímpares digitados por um usuário. Para encerrar o programa, o usuário digitará o número zero. #include <stdio.h> int main(void) { int i, par=0, impar=0; printf("Para encerrar a digitação, digite o numero 0\n"); scanf ("%d", &i); while (i!=0){ if (i%2==0) par++; else impar++; scanf ("%d", &i); } printf("Voce digitou %d numero(s) par(es)\n", par); printf("Voce digitou %d numero(s) impar(es)\n", impar); getch(); return 0; } 3) Um número é primo se ele somente for divisível por 1 e por ele mesmo. Faça um programa que mostra se um número digitado é primo. #include<stdio.h> main(void){ int i, a, flag=1; printf("Digite um número:\n"); scanf("%d", &a); for(i=2;i<a;i++){ if(a%i==0) flag = 0; } if (flag==1) printf("É primo\n"); else printf("Não é primo\n"); getch(); } #include<stdio.h> main(void){ int i, a=1, flag=1; printf("Para sair do programa, digite 0 ou um numero negativo.\n"); printf("Digite um numero:\n"); scanf("%d", &a); while(a>0){ for(i=2;i<a;i++){ if(a%i==0) flag = 0; } if (flag==1) printf("%d eh primo\n", a); else printf("%d nao eh primo\n", a); flag=1; printf("Digite um numero:\n"); scanf("%d", &a); }; printf("Saiu do laco de repeticao... fim do algoritmo.\n"); getch(); } 4) Teste os exemplos abaixo, verificando o que faz cada instrução do programa: #include <stdio.h> void main(void) { int i=3; while(1) { i--; if (!i) break; } } #include <stdio.h> void main(void) { int i; do { scanf ("%d", &i); printf ("foi digitado o numero %d\n", i); } while(i); } #include <stdio.h> void main(void) { int i; scanf ("%d", &i); while (i){ printf ("foi digitado o numero %d\n", i); scanf ("%d", &i); } } Leituras e exercícios: EVARISTO, Jaime. Aprendendo a programar programando na linguagem C. Maceió: Vivali, 2007. SCHILDT, Herbert. C completo e total. São Paulo: Makron Books, 1997. CORMEN, Thomas H et al. Algoritmos: teoria e prática. Rio de Janeiro: Campus, 2002.
Compartilhar