Baixe o app para aproveitar ainda mais
Prévia do material em texto
1 Estruturas de Controle Parte III – Repetição DCC 119 – Algoritmos 2 Repetição Todo aluno de Algoritmos sabe que precisa fazer o teste de mesa para saber se seu programa está correto. No entanto, em todas as aulas, os professores precisam lembrar os alunos deste requisito importante na resolução dos exercícios. Para alunos atentos, é suficiente lembrar uma vez; alunos desatentos precisam ser lembrados 2 ou 3 vezes; mas, às vezes, é necessário repetir até 5 vezes a mesma frase, para que os alunos mais preguiçosos resolvam fazer o teste de mesa. 3 Repetição Para que essa tarefa fique mais fácil para o professor, esta aula começa com o seguinte problema: Elaborar um programa que pergunte ao professor quantas vezes a frase “Faça o teste de mesa de cada exercício.” precisa ser impressa. O programa deve imprimir a frase conforme a indicação do professor. 4 #include <stdio.h> int main() { int numVezes; printf("Quantas vezes a impressao deve ser feita?"); scanf("%d", &numVezes); if( numVezes == 1 ) printf("Faca o teste de mesa de cada exercicio\n"); else if( numVezes == 2 ){ printf("Faca o teste de mesa de cada exercicio\n"); printf("Faca o teste de mesa de cada exercicio\n"); } else if( numVezes == 3 ){ printf("Faca o teste de mesa de cada exercicio\n"); printf("Faca o teste de mesa de cada exercicio\n"); printf("Faca o teste de mesa de cada exercicio\n"); } else if( numVezes == 5 ){ printf("Faca o teste de mesa de cada exercicio\n"); printf("Faca o teste de mesa de cada exercicio\n"); printf("Faca o teste de mesa de cada exercicio\n"); printf("Faca o teste de mesa de cada exercicio\n"); printf("Faca o teste de mesa de cada exercicio\n"); } return 0; } 5 Repetição Até a semana passada, este programa funcionava muito bem para os professores. Mas, todo professor sabe que, à medida que os exercícios ficam mais complexos, maior é a importância do teste de mesa e maior é a preguiça dos alunos. O professor prevê que será necessário repetir a frase até 20 vezes nas próximas aulas... ... mas escrever um programa com uma sequência de tantos if/else é desanimador! 6 Repetição Nesta aula, vamos aprender a repetir comandos. Em nosso programa: - que comando precisamos repetir? - quantas vezes precisamos repetir? 7 Repetição Nesta aula, vamos aprender a repetir comandos. Em nosso programa: - que comando precisamos repetir? A impressão da frase. - quantas vezes precisamos repetir? O número de vezes indicado pelo usuário. Enquanto o número de impressões já realizadas for menor que o número de impressões desejado, é necessário continuar imprimindo. 8 Repetição com Teste no Início • Enquanto a condição for VERDADEIRA, a seqüência de comandos será repetida. • Quando a condição fornecer resultado FALSO, o controle sai da estrutura passando para o comando seguinte ao final do bloco. while ( condicao ) { BlocoDeComandos1; } BlocoDeComandos2; 9 Repetição com Teste no Início Enquanto o número de impressões já realizadas for menor que o número de impressões desejado, é necessário continuar imprimindo. while ( condicao ) { BlocoDeComandos1; } BlocoDeComandos2; 10 Repetição #include <stdio.h> int main() { int numImpressoes, impressoesJaRealizadas; printf("Quantas vezes a impressao deve ser feita?"); scanf("%d", &numImpressoes); impressoesJaRealizadas = 0; while( impressoesJaRealizadas < numImpressoes) { printf("Faca o teste de mesa dos exercicios\n"); impressoesJaRealizadas++; //soma 1 à variável } return 0; } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 11 Repetição #include <stdio.h> int main() { int numImpressoes, impressoesJaRealizadas; printf("Quantas vezes a impressao deve ser feita?"); scanf("%d", &numImpressoes); impressoesJaRealizadas = 0; while( impressoesJaRealizadas < numImpressoes) { printf("Faca o teste de mesa dos exercicios\n"); impressoesJaRealizadas++; //soma 1 à variável } return 0; } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 L in h a n u m Im p re s s o e s im p J a R e a liz a d a s te s te d a c o n d iç ã o 12 Repetição #include <stdio.h> int main() { int numImpressoes, impressoesJaRealizadas; printf("Quantas vezes a impressao deve ser feita?"); scanf("%d", &numImpressoes); impressoesJaRealizadas = 0; while( impressoesJaRealizadas < numImpressoes) { printf("Faca o teste de mesa dos exercicios\n"); impressoesJaRealizadas++; //soma 1 à variável } return 0; } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 4 ? ? --- L in h a n u m Im p re s s o e s im p J a R e a liz a d a s te s te d a c o n d iç ã o 13 Repetição #include <stdio.h> int main() { int numImpressoes, impressoesJaRealizadas; printf("Quantas vezes a impressao deve ser feita?"); scanf("%d", &numImpressoes); impressoesJaRealizadas = 0; while( impressoesJaRealizadas < numImpressoes) { printf("Faca o teste de mesa dos exercicios\n"); impressoesJaRealizadas++; //soma 1 à variável } return 0; } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 Quantas vezes a impressao deve ser feita? 4 ? ? --- L in h a n u m Im p re s s o e s im p J a R e a liz a d a s te s te d a c o n d iç ã o 14 Repetição #include <stdio.h> int main() { int numImpressoes, impressoesJaRealizadas; printf("Quantas vezes a impressao deve ser feita?"); scanf("%d", &numImpressoes); impressoesJaRealizadas = 0; while( impressoesJaRealizadas < numImpressoes) { printf("Faca o teste de mesa dos exercicios\n"); impressoesJaRealizadas++; //soma 1 à variável } return 0; } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 Quantas vezes a impressao deve ser feita? 3 4 ? ? --- 7 3 ? --- L in h a n u m Im p re s s o e s im p J a R e a liz a d a s te s te d a c o n d iç ã o 15 Repetição #include <stdio.h> int main() { int numImpressoes, impressoesJaRealizadas; printf("Quantas vezes a impressao deve ser feita?"); scanf("%d", &numImpressoes); impressoesJaRealizadas = 0; while( impressoesJaRealizadas < numImpressoes) { printf("Faca o teste de mesa dos exercicios\n"); impressoesJaRealizadas++; //soma 1 à variável } return 0; } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 Quantas vezes a impressao deve ser feita? 3 4 ? ? --- 7 3 ? --- 9 3 0 --- L in h a n u m Im p re s s o e s im p J a R e a liz a d a s te s te d a c o n d iç ã o 16 Repetição #include <stdio.h> int main() { int numImpressoes, impressoesJaRealizadas; printf("Quantas vezes a impressao deve ser feita?"); scanf("%d", &numImpressoes); impressoesJaRealizadas = 0; while( impressoesJaRealizadas < numImpressoes) { printf("Faca o teste de mesa dos exercicios\n"); impressoesJaRealizadas++; //soma 1 à variável } return 0; } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18Quantas vezes a impressao deve ser feita? 3 4 ? ? --- 7 3 ? --- 9 3 0 --- 11 3 0 V L in h a n u m Im p re s s o e s im p J a R e a liz a d a s te s te d a c o n d iç ã o 17 Repetição #include <stdio.h> int main() { int numImpressoes, impressoesJaRealizadas; printf("Quantas vezes a impressao deve ser feita?"); scanf("%d", &numImpressoes); impressoesJaRealizadas = 0; while( impressoesJaRealizadas < numImpressoes) { printf("Faca o teste de mesa dos exercicios\n"); impressoesJaRealizadas++; //soma 1 à variável } return 0; } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 Quantas vezes a impressao deve ser feita? 3 Faca o teste de mesa dos exercicios 4 ? ? --- 7 3 ? --- 9 3 0 --- 11 3 0 V L in h a n u m Im p re s s o e s im p J a R e a liz a d a s te s te d a c o n d iç ã o 18 Repetição #include <stdio.h> int main() { int numImpressoes, impressoesJaRealizadas; printf("Quantas vezes a impressao deve ser feita?"); scanf("%d", &numImpressoes); impressoesJaRealizadas = 0; while( impressoesJaRealizadas < numImpressoes) { printf("Faca o teste de mesa dos exercicios\n"); impressoesJaRealizadas++; //soma 1 à variável } return 0; } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 Quantas vezes a impressao deve ser feita? 3 Faca o teste de mesa dos exercicios 4 ? ? --- 7 3 ? --- 9 3 0 --- 11 3 0 V 14 3 1 --- L in h a n u m Im p re s s o e s im p J a R e a liz a d a s te s te d a c o n d iç ã o 19 Repetição #include <stdio.h> int main() { int numImpressoes, impressoesJaRealizadas; printf("Quantas vezes a impressao deve ser feita?"); scanf("%d", &numImpressoes); impressoesJaRealizadas = 0; while( impressoesJaRealizadas < numImpressoes) { printf("Faca o teste de mesa dos exercicios\n"); impressoesJaRealizadas++; //soma 1 à variável } return 0; } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 Quantas vezes a impressao deve ser feita? 3 Faca o teste de mesa dos exercicios 4 ? ? --- 7 3 ? --- 9 3 0 --- 11 3 0 V 14 3 1 --- 11 3 1 V L in h a n u m Im p re s s o e s im p J a R e a liz a d a s te s te d a c o n d iç ã o 20 Repetição #include <stdio.h> int main() { int numImpressoes, impressoesJaRealizadas; printf("Quantas vezes a impressao deve ser feita?"); scanf("%d", &numImpressoes); impressoesJaRealizadas = 0; while( impressoesJaRealizadas < numImpressoes) { printf("Faca o teste de mesa dos exercicios\n"); impressoesJaRealizadas++; //soma 1 à variável } return 0; } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 Quantas vezes a impressao deve ser feita? 3 Faca o teste de mesa dos exercicios Faca o teste de mesa dos exercicios 4 ? ? --- 7 3 ? --- 9 3 0 --- 11 3 0 V 14 3 1 --- 11 3 1 V L in h a n u m Im p re s s o e s im p J a R e a liz a d a s te s te d a c o n d iç ã o 21 Repetição #include <stdio.h> int main() { int numImpressoes, impressoesJaRealizadas; printf("Quantas vezes a impressao deve ser feita?"); scanf("%d", &numImpressoes); impressoesJaRealizadas = 0; while( impressoesJaRealizadas < numImpressoes) { printf("Faca o teste de mesa dos exercicios\n"); impressoesJaRealizadas++; //soma 1 à variável } return 0; } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 Quantas vezes a impressao deve ser feita? 3 Faca o teste de mesa dos exercicios Faca o teste de mesa dos exercicios 4 ? ? --- 7 3 ? --- 9 3 0 --- 11 3 0 V 14 3 1 --- 11 3 1 V 14 3 2 --- L in h a n u m Im p re s s o e s im p J a R e a liz a d a s te s te d a c o n d iç ã o 22 Repetição #include <stdio.h> int main() { int numImpressoes, impressoesJaRealizadas; printf("Quantas vezes a impressao deve ser feita?"); scanf("%d", &numImpressoes); impressoesJaRealizadas = 0; while( impressoesJaRealizadas < numImpressoes) { printf("Faca o teste de mesa dos exercicios\n"); impressoesJaRealizadas++; //soma 1 à variável } return 0; } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 Quantas vezes a impressao deve ser feita? 3 Faca o teste de mesa dos exercicios Faca o teste de mesa dos exercicios 4 ? ? --- 7 3 ? --- 9 3 0 --- 11 3 0 V 14 3 1 --- 11 3 1 V 14 3 2 --- 11 3 2 V L in h a n u m Im p re s s o e s im p J a R e a liz a d a s te s te d a c o n d iç ã o 23 Repetição #include <stdio.h> int main() { int numImpressoes, impressoesJaRealizadas; printf("Quantas vezes a impressao deve ser feita?"); scanf("%d", &numImpressoes); impressoesJaRealizadas = 0; while( impressoesJaRealizadas < numImpressoes) { printf("Faca o teste de mesa dos exercicios\n"); impressoesJaRealizadas++; //soma 1 à variável } return 0; } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 Quantas vezes a impressao deve ser feita? 3 Faca o teste de mesa dos exercicios Faca o teste de mesa dos exercicios Faca o teste de mesa dos exercicios 4 ? ? --- 7 3 ? --- 9 3 0 --- 11 3 0 V 14 3 1 --- 11 3 1 V 14 3 2 --- 11 3 2 V L in h a n u m Im p re s s o e s im p J a R e a liz a d a s te s te d a c o n d iç ã o 24 Repetição #include <stdio.h> int main() { int numImpressoes, impressoesJaRealizadas; printf("Quantas vezes a impressao deve ser feita?"); scanf("%d", &numImpressoes); impressoesJaRealizadas = 0; while( impressoesJaRealizadas < numImpressoes) { printf("Faca o teste de mesa dos exercicios\n"); impressoesJaRealizadas++; //soma 1 à variável } return 0; } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 Quantas vezes a impressao deve ser feita? 3 Faca o teste de mesa dos exercicios Faca o teste de mesa dos exercicios Faca o teste de mesa dos exercicios 4 ? ? --- 7 3 ? --- 9 3 0 --- 11 3 0 V 14 3 1 --- 11 3 1 V 14 3 2 --- 11 3 2 V 14 3 3 --- L in h a n u m Im p re s s o e s im p J a R e a liz a d a s te s te d a c o n d iç ã o 25 Repetição #include <stdio.h> int main() { int numImpressoes, impressoesJaRealizadas; printf("Quantas vezes a impressao deve ser feita?"); scanf("%d", &numImpressoes); impressoesJaRealizadas = 0; while( impressoesJaRealizadas < numImpressoes) { printf("Faca o teste de mesa dos exercicios\n"); impressoesJaRealizadas++; //soma 1 à variável } return 0; } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 Quantas vezes a impressao deve ser feita? 3 Faca o teste de mesa dos exercicios Faca o teste de mesa dos exercicios Faca o teste de mesa dos exercicios 4 ? ? --- 7 3 ? --- 9 3 0 --- 11 3 0 V 14 3 1 --- 11 3 1 V 14 3 2 --- 113 2 V 14 3 3 --- 11 3 3 F L in h a n u m Im p re s s o e s im p J a R e a liz a d a s te s te d a c o n d iç ã o 26 Repetição #include <stdio.h> int main() { int numImpressoes, impressoesJaRealizadas; printf("Quantas vezes a impressao deve ser feita?"); scanf("%d", &numImpressoes); impressoesJaRealizadas = 0; while( impressoesJaRealizadas < numImpressoes) { printf("Faca o teste de mesa dos exercicios\n"); impressoesJaRealizadas++; //soma 1 à variável } return 0; } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 Quantas vezes a impressao deve ser feita? 3 Faca o teste de mesa dos exercicios Faca o teste de mesa dos exercicios Faca o teste de mesa dos exercicios 4 ? ? --- 7 3 ? --- 9 3 0 --- 11 3 0 V 14 3 1 --- 11 3 1 V 14 3 2 --- 11 3 2 V 14 3 3 --- 11 3 3 F L in h a n u m Im p re s s o e s im p J a R e a liz a d a s te s te d a c o n d iç ã o 27 Repetição #include <stdio.h> int main() { int numImpressoes, impressoesJaRealizadas; printf("Quantas vezes a impressao deve ser feita?"); scanf("%d", &numImpressoes); impressoesJaRealizadas = 0; while( impressoesJaRealizadas < numImpressoes) { printf("Faca o teste de mesa dos exercicios\n"); impressoesJaRealizadas++; //soma 1 à variável } return 0; } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 Quantas vezes a impressao deve ser feita? 3 Faca o teste de mesa dos exercicios Faca o teste de mesa dos exercicios Faca o teste de mesa dos exercicios 4 ? ? --- 7 3 ? --- 9 3 0 --- 11 3 0 V 14 3 1 --- 11 3 1 V 14 3 2 --- 11 3 2 V 14 3 3 --- 11 3 3 F L in h a n u m Im p re s s o e s im p J a R e a liz a d a s te s te d a c o n d iç ã o 28 Exercício #include <stdio.h> int main() { int numImpressoes, impressoesJaRealizadas; printf("Quantas vezes a impressao deve ser feita?"); scanf("%d", &numImpressoes); impressoesJaRealizadas = 0; while( impressoesJaRealizadas < numImpressoes) { printf("Faca o teste de mesa dos exercicios\n"); impressoesJaRealizadas++; //soma 1 à variável } return 0; } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 Faça o teste de mesa com entrada 2 e com entrada -1. 29 • Chamadas de estruturas iterativas, iterações, laços ou loops; • Permitem repetir a execução de uma ação várias vezes; • Podem ser: 1. Repetição com Teste no Início 2. Repetição com Teste no Fim 3. Repetição com Variável de Controle Repetição 30 Repetição com Teste no Início • Enquanto a condição for VERDADEIRA, a seqüência de comandos será repetida. • Quando a condição fornecer resultado FALSO, o controle sai da estrutura passando para o comando seguinte ao final do bloco. while ( condicao ) { BlocoDeComandos1; } BlocoDeComandos2; 31 Repetição com Teste no Início Desenvolva um algoritmo que leia uma sequência de números inteiros, calculando e imprimindo o quadrado de cada número lido. A sequência deve terminar quando o número 0 (zero) for lido. Exemplo 1: Valor específico encerra repetições 32 Repetição com Teste no Início Desenvolva um algoritmo que leia uma sequência de números inteiros, calculando e imprimindo o quadrado de cada número lido. A sequência deve terminar quando o número 0 (zero) for lido. ZERO → indica o final da sequência de valores. → encerra as repetições. → não deve ser processado (o quadrado de zero não deve ser impresso). Exemplo 1: Valor específico encerra repetições 33 Repetição com Teste no Início Desenvolva um algoritmo que leia uma sequência de números inteiros, calculando e imprimindo o quadrado de cada número lido. A sequência deve terminar quando o número 0 (zero) for lido. Lê o primeiro número Enquanto o número lido não for zero { Calcula e imprime o quadrado do número Lê o próximo número } Exemplo 1: Valor específico encerra repetições 34 Repetição com Teste no Início #include <stdio.h> int main() { int num, quad; // imprime uma msg e le o 1o. inteiro printf("Digite um numero inteiro: "); scanf("%d", &num); while( num != 0 ) { quad = num * num; printf("\nQuadrado de %d: %d",num,quad); printf("\nDigite um numero inteiro: "); scanf("%d", &num); } return 0; } Exemplo 1: Valor específico encerra repetições 35 1 #include <stdio.h> 2 int main() 3 { 4 int num, quad; 5 6 // imprime uma msg e le o 1o. Inteiro 7 printf("Digite um numero inteiro: "); 8 scanf("%d", &num); 9 10 while( num != 0 ) 11 { 12 quad = num * num; 13 printf("\nQuadrado de %d: %d",num,quad); 14 15 printf("\nDigite um numero inteiro: "); 16 scanf("%d", &num); 17 } 18 return 0; 19 } linha num quad teste 4 ? ? --- TESTE DE MESA Exemplo 1: Valor específico encerra repetições 36 1 #include <stdio.h> 2 int main() 3 { 4 int num, quad; 5 6 // imprime uma msg e le o 1o. Inteiro 7 printf("Digite um numero inteiro: "); 8 scanf("%d", &num); 9 10 while( num != 0 ) 11 { 12 quad = num * num; 13 printf("\nQuadrado de %d: %d",num,quad); 14 15 printf("\nDigite um numero inteiro: "); 16 scanf("%d", &num); 17 } 18 return 0; 19 } linha num quad teste 4 ? ? --- TESTE DE MESA Exemplo 1: Valor específico encerra repetições 37 linha num quad teste 4 ? ? --- 8 5 ? --- TESTE DE MESA1 #include <stdio.h> 2 int main() 3 { 4 int num, quad; 5 6 // imprime uma msg e le o 1o. Inteiro 7 printf("Digite um numero inteiro: "); 8 scanf("%d", &num); 9 10 while( num != 0 ) 11 { 12 quad = num * num; 13 printf("\nQuadrado de %d: %d",num,quad); 14 15 printf("\nDigite um numero inteiro: "); 16 scanf("%d", &num); 17 } 18 return 0; 19 } Digite um numero inteiro: 5 Exemplo 1: Valor específico encerra repetições 38 linha num quad teste 4 ? ? --- 8 5 ? --- 10 5 ? V TESTE DE MESA1 #include <stdio.h> 2 int main() 3 { 4 int num, quad; 5 6 // imprime uma msg e le o 1o. Inteiro 7 printf("Digite um numero inteiro: "); 8 scanf("%d", &num); 9 10 while( num != 0 ) 11 { 12 quad = num * num; 13 printf("\nQuadrado de %d: %d",num,quad); 14 15 printf("\nDigite um numero inteiro: "); 16 scanf("%d", &num); 17 } 18 return 0; 19 } Digite um numero inteiro: 5 Exemplo 1: Valor específico encerra repetições 39 linha num quad teste 4 ? ? --- 8 5 ? --- 10 5 ? V 12 5 25 --- TESTE DE MESA1 #include <stdio.h> 2 int main() 3 { 4 int num, quad; 5 6 // imprime uma msg e le o 1o. Inteiro 7 printf("Digite um numero inteiro: "); 8 scanf("%d", &num); 9 10 while( num != 0 ) 11 { 12 quad = num * num; 13 printf("\nQuadrado de %d: %d",num,quad); 14 15 printf("\nDigite um numero inteiro: "); 16 scanf("%d", &num); 17 } 18 return 0; 19 } Digite um numero inteiro: 5 Exemplo 1: Valor específico encerra repetições 40 linha num quad teste 4 ? ? --- 8 5 ? --- 10 5 ? V 12 5 25 --- TESTE DE MESA1 #include <stdio.h> 2 int main() 3 { 4 int num, quad; 5 6 // imprime uma msg e le o 1o. Inteiro 7 printf("Digite um numero inteiro: "); 8 scanf("%d",&num); 9 10 while( num != 0 ) 11 { 12 quad = num * num; 13 printf("\nQuadrado de %d: %d",num,quad); 14 15 printf("\nDigite um numero inteiro: "); 16 scanf("%d", &num); 17 } 18 return 0; 19 } Digite um numero inteiro: 5 Exemplo 1: Valor específico encerra repetições 41 linha num quad teste 4 ? ? --- 8 5 ? --- 10 5 ? V 12 5 25 --- TESTE DE MESA1 #include <stdio.h> 2 int main() 3 { 4 int num, quad; 5 6 // imprime uma msg e le o 1o. Inteiro 7 printf("Digite um numero inteiro: "); 8 scanf("%d", &num); 9 10 while( num != 0 ) 11 { 12 quad = num * num; 13 printf("\nQuadrado de %d: %d",num,quad); 14 15 printf("\nDigite um numero inteiro: "); 16 scanf("%d", &num); 17 } 18 return 0; 19 } Digite um numero inteiro: 5 Exemplo 1: Valor específico encerra repetições 42 linha num quad teste 4 ? ? --- 8 5 ? --- 10 5 ? V 12 5 25 --- 16 2 25 --- TESTE DE MESA1 #include <stdio.h> 2 int main() 3 { 4 int num, quad; 5 6 // imprime uma msg e le o 1o. Inteiro 7 printf("Digite um numero inteiro: "); 8 scanf("%d", &num); 9 10 while( num != 0 ) 11 { 12 quad = num * num; 13 printf("\nQuadrado de %d: %d",num,quad); 14 15 printf("\nDigite um numero inteiro: "); 16 scanf("%d", &num); 17 } 18 return 0; 19 } Digite um numero inteiro: 5 Quadrado de 5: 25 Digite um numero inteiro: 2 Exemplo 1: Valor específico encerra repetições 43 linha num quad teste 4 ? ? --- 8 5 ? --- 10 5 ? V 12 5 25 --- 16 2 25 --- 10 2 25 V TESTE DE MESA1 #include <stdio.h> 2 int main() 3 { 4 int num, quad; 5 6 // imprime uma msg e le o 1o. Inteiro 7 printf("Digite um numero inteiro: "); 8 scanf("%d", &num); 9 10 while( num != 0 ) 11 { 12 quad = num * num; 13 printf("\nQuadrado de %d: %d",num,quad); 14 15 printf("\nDigite um numero inteiro: "); 16 scanf("%d", &num); 17 } 18 return 0; 19 } Digite um numero inteiro: 5 Quadrado de 5: 25 Digite um numero inteiro: 2 Exemplo 1: Valor específico encerra repetições 44 linha num quad teste 4 ? ? --- 8 5 ? --- 10 5 ? V 12 5 25 --- 16 2 25 --- 10 2 25 V 12 2 4 --- TESTE DE MESA1 #include <stdio.h> 2 int main() 3 { 4 int num, quad; 5 6 // imprime uma msg e le o 1o. Inteiro 7 printf("Digite um numero inteiro: "); 8 scanf("%d", &num); 9 10 while( num != 0 ) 11 { 12 quad = num * num; 13 printf("\nQuadrado de %d: %d",num,quad); 14 15 printf("\nDigite um numero inteiro: "); 16 scanf("%d", &num); 17 } 18 return 0; 19 } Digite um numero inteiro: 5 Quadrado de 5: 25 Digite um numero inteiro: 2 Exemplo 1: Valor específico encerra repetições 45 linha num quad teste 4 ? ? --- 8 5 ? --- 10 5 ? V 12 5 25 --- 16 2 25 --- 10 2 25 V 12 2 4 --- TESTE DE MESA1 #include <stdio.h> 2 int main() 3 { 4 int num, quad; 5 6 // imprime uma msg e le o 1o. Inteiro 7 printf("Digite um numero inteiro: "); 8 scanf("%d", &num); 9 10 while( num != 0 ) 11 { 12 quad = num * num; 13 printf("\nQuadrado de %d: %d",num,quad); 14 15 printf("\nDigite um numero inteiro: "); 16 scanf("%d", &num); 17 } 18 return 0; 19 } Digite um numero inteiro: 5 Quadrado de 5: 25 Digite um numero inteiro: 2 Exemplo 1: Valor específico encerra repetições 46 linha num quad teste 4 ? ? --- 8 5 ? --- 10 5 ? V 12 5 25 --- 16 2 25 --- 10 2 25 V 12 2 4 --- TESTE DE MESA1 #include <stdio.h> 2 int main() 3 { 4 int num, quad; 5 6 // imprime uma msg e le o 1o. Inteiro 7 printf("Digite um numero inteiro: "); 8 scanf("%d", &num); 9 10 while( num != 0 ) 11 { 12 quad = num * num; 13 printf("\nQuadrado de %d: %d",num,quad); 14 15 printf("\nDigite um numero inteiro: "); 16 scanf("%d", &num); 17 } 18 return 0; 19 } Digite um numero inteiro: 5 Quadrado de 5: 25 Digite um numero inteiro: 2 Exemplo 1: Valor específico encerra repetições 47 linha num quad teste 4 ? ? --- 8 5 ? --- 10 5 ? V 12 5 25 --- 16 2 25 --- 10 2 25 V 12 2 4 --- 16 0 4 --- TESTE DE MESA1 #include <stdio.h> 2 int main() 3 { 4 int num, quad; 5 6 // imprime uma msg e le o 1o. Inteiro 7 printf("Digite um numero inteiro: "); 8 scanf("%d", &num); 9 10 while( num != 0 ) 11 { 12 quad = num * num; 13 printf("\nQuadrado de %d: %d",num,quad); 14 15 printf("\nDigite um numero inteiro: "); 16 scanf("%d", &num); 17 } 18 return 0; 19 } Digite um numero inteiro: 5 Quadrado de 5: 25 Digite um numero inteiro: 2 Quadrado de 2: 4 Digite um numero inteiro: 0 Exemplo 1: Valor específico encerra repetições 48 linha num quad teste 4 ? ? --- 8 5 ? --- 10 5 ? V 12 5 25 --- 16 2 25 --- 10 2 25 V 12 2 4 --- 16 0 4 --- 10 0 4 F TESTE DE MESA1 #include <stdio.h> 2 int main() 3 { 4 int num, quad; 5 6 // imprime uma msg e le o 1o. Inteiro 7 printf("Digite um numero inteiro: "); 8 scanf("%d", &num); 9 10 while( num != 0 ) 11 { 12 quad = num * num; 13 printf("\nQuadrado de %d: %d",num,quad); 14 15 printf("\nDigite um numero inteiro: "); 16 scanf("%d", &num); 17 } 18 return 0; 19 } Digite um numero inteiro: 5 Quadrado de 5: 25 Digite um numero inteiro: 2 Quadrado de 2: 4 Digite um numero inteiro: 0 Exemplo 1: Valor específico encerra repetições 49 Exemplo 1: Valor específico encerra repetições linha num quad teste 4 ? ? --- 8 5 ? --- 10 5 ? V 12 5 25 --- 16 2 25 --- 10 2 25 V 12 2 4 --- 16 0 4 --- 10 0 4 F 18 0 4 --- TESTE DE MESA1 #include <stdio.h> 2 int main() 3 { 4 int num, quad; 5 6 // imprime uma msg e le o 1o. Inteiro 7 printf("Digite um numero inteiro: "); 8 scanf("%d", &num); 9 10 while( num != 0 ) 11 { 12 quad = num * num; 13 printf("\nQuadrado de %d: %d",num,quad); 14 15 printf("\nDigite um numero inteiro: "); 16 scanf("%d", &num); 17 } 18 return 0; 19 } Digite um numero inteiro: 5 Quadrado de 5: 25 Digite um numero inteiro: 2 Quadrado de 2: 4 Digite um numero inteiro: 0 50 Repetição com Teste no Início Quesitos importantes em repetições 1 #include <stdio.h> 2 int main() 3 { 4 int num, quad; 5 6 // imprime uma msg e le o 1o. Inteiro 7 printf("Digite um numero inteiro: "); 8 scanf("%d", &num); 9 10 while( num != 0 ) 11 { 12 quad = num * num; 13 printf("\nQuadrado de %d: %d",num,quad); 14 15 printf("\nDigite um numero inteiro: "); 16 scanf("%d", &num); 17 } 18 return 0; 19 } 51 Repetição com Teste no Início Quesitos importantes em repetições Condição Teste normalmente envolve ao menos uma variável. 1 #include <stdio.h> 2 int main() 3 { 4 int num, quad; 5 6 // imprime uma msg e le o 1o. Inteiro 7 printf("Digite um numero inteiro: "); 8 scanf("%d", &num); 9 10 while( num != 0 ) 11 { 12 quad = num * num; 13 printf("\nQuadrado de %d: %d",num,quad); 14 15 printf("\nDigite um numero inteiro: "); 16 scanf("%d", &num); 17 } 18 return 0; 19 } 52 Repetição com Teste no Início Quesitos importantes em repetições Condição Teste normalmente envolve ao menos uma variável. Inicialização Toda variável da condição precisaser inicializada antes do laço, através de atribuição ou leitura. 1 #include <stdio.h> 2 int main() 3 { 4 int num, quad; 5 6 // imprime uma msg e le o 1o. Inteiro 7 printf("Digite um numero inteiro: "); 8 scanf("%d", &num); 9 10 while( num != 0 ) 11 { 12 quad = num * num; 13 printf("\nQuadrado de %d: %d",num,quad); 14 15 printf("\nDigite um numero inteiro: "); 16 scanf("%d", &num); 17 } 18 return 0; 19 } 53 Repetição com Teste no Início Quesitos importantes em repetições Condição Teste normalmente envolve ao menos uma variável. Inicialização Toda variável da condição precisa ser inicializada antes do laço, através de atribuição ou leitura. Atualização Ao menos uma variável da condição precisa ser atualizada no interior do laço. 1 #include <stdio.h> 2 int main() 3 { 4 int num, quad; 5 6 // imprime uma msg e le o 1o. Inteiro 7 printf("Digite um numero inteiro: "); 8 scanf("%d", &num); 9 10 while( num != 0 ) 11 { 12 quad = num * num; 13 printf("\nQuadrado de %d: %d",num,quad); 14 15 printf("\nDigite um numero inteiro: "); 16 scanf("%d", &num); 17 } 18 return 0; 19 } 54 Repetição com Teste no Início Exemplo 1: Valor específico encerra repetições • Um valor específico (chamado de FLAG) indica o fim dos dados de entrada. • Quando este valor é lido, não deve ser tratado como parte da sequência de entrada. Isto é, não deve ser processado no interior do laço como os outros dados da sequência. • A leitura do FLAG informa ao programa que os dados de entrada terminaram e que ele deve partir para a execução da finalização de seu processamento (cálculos finais, impressões finais etc.). 55 Repetição com Teste no Início Exemplo 1: Valor específico encerra repetições Imagine um programa de um caixa eletrônico com as seguintes opções de menu: 1 – imprime o saldo da conta 2 – imprime o extrato da conta 3 – efetua pagamento de boleto 4 – efetua um saque 5 – sai do programa Imagine que o usuário pode executar mais de uma operação, ou ainda, repetir operações. O usuário poderá repetir as operações enquanto a opção selecionada não for a opção 5 – sai do programa. 56 #include <stdio.h> void imprimeOpcoesMenu(); void imprimeSaldo(); void imprimeExtrato(); void pagaBoleto(); void fazSaque(); int main() { int opcaoSelecionada; imprimeOpcoesMenu(); scanf("%d", &opcaoSelecionada); while( opcaoSelecionada != 5 ) { switch( opcaoSelecionada ) { case 1: imprimeSaldo(); break; case 2: imprimeExtrato(); break; case 3: pagaBoleto(); break; case 4: fazSaque(); break; //case 5 nunca seria executado, pois laço termina antes default: printf("Opcao invalida!"); break; } imprimeOpcoesMenu(); scanf("%d", &opcaoSelecionada); } printf("Programa encerrado"); return 0; } 57 1. Escreva um programa que leia uma sequência de notas de alunos cujos valores variam entre 0 e 100. O programa deve escrever “REPROVADO” se a nota for inferior a 60 e escrever “APROVADO”, caso contrário. A quantidade de notas lidas é desconhecida. O programa deve ser encerrado se for lido um valor inválido (fora do intervalo entre 0 e 100). Teste seu programa com a sequência: 87 69 94 108 Exercício 58 Repetição com Teste no Início Exemplo 2: Uso de acumulador • Acumulador é uma variável utilizada para armazenar a soma (ou o produto) de uma sequência de valores. • A variável usada como acumulador recebe um acréscimo a cada iteração, isto é, seu valor anterior é usado em sua atualização ao longo das iterações. • A variável usada como acumulador precisa ser inicializada antes do laço. soma = soma + novo_valor; soma = 0; produto = 1; 59 Repetição com Teste no Início Desenvolva um algoritmo que leia uma sequência de números inteiros, calcule e imprima a soma dos valores lidos. A sequência deve terminar quando o número 0 (zero) for lido. Exemplo 2: Uso de acumulador 60 Repetição com Teste no Início Desenvolva um algoritmo que leia uma sequência de números inteiros, calcule e imprima a soma dos valores lidos. A sequência deve terminar quando o número 0 (zero) for lido. Exemplo 2: Uso de acumulador soma → o valor da variável começa com zero (elemento neutro da adição) ; → a cada iteração, conserva o valor anterior com acréscimo de um novo valor; → ao final de cada iteração, o valor da variável contém a soma parcial dos elementos ; → ao final do laço, o valor da variável contém a soma dos elementos. 61 Repetição com Teste no Início Exemplo 2: Uso de acumulador 1 #include <stdio.h> 2 int main() 3 { 4 int num, soma; 5 soma = 0; // inicializa acumulador 6 printf("Digite um numero inteiro: "); 7 scanf("%d", &num); 8 while( num != 0 ) 9 { 10 soma = soma + num; //atualiza acumulador 11 printf("\nSoma parcial: %d",soma); 12 printf("\nDigite um numero inteiro: "); 13 scanf("%d", &num); 14 } 15 printf("\nSoma total: %d",soma); 16 return 0; 17 } 62 Exemplo 2: Uso de acumulador linha num soma teste 4 ? ? TESTE DE MESA 1 #include <stdio.h> 2 int main() 3 { 4 int num, soma; 5 soma = 0; // inicializa acumulador 6 printf("Digite um numero inteiro: "); 7 scanf("%d", &num); 8 while( num != 0 ) 9 { 10 soma = soma + num; //atualiza acumulador 11 printf("\nSoma parcial: %d",soma); 12 printf("\nDigite um numero inteiro: "); 13 scanf("%d", &num); 14 } 15 printf("\nSoma total: %d",soma); 16 return 0; 17 } 63 Exemplo 2: Uso de acumulador linha num soma teste 4 ? ? 5 ? 0 TESTE DE MESA 1 #include <stdio.h> 2 int main() 3 { 4 int num, soma; 5 soma = 0; // inicializa acumulador 6 printf("Digite um numero inteiro: "); 7 scanf("%d", &num); 8 while( num != 0 ) 9 { 10 soma = soma + num; //atualiza acumulador 11 printf("\nSoma parcial: %d",soma); 12 printf("\nDigite um numero inteiro: "); 13 scanf("%d", &num); 14 } 15 printf("\nSoma total: %d",soma); 16 return 0; 17 } 64 Exemplo 2: Uso de acumulador linha num soma teste 4 ? ? 5 ? 0 TESTE DE MESA 1 #include <stdio.h> 2 int main() 3 { 4 int num, soma; 5 soma = 0; // inicializa acumulador 6 printf("Digite um numero inteiro: "); 7 scanf("%d", &num); 8 while( num != 0 ) 9 { 10 soma = soma + num; //atualiza acumulador 11 printf("\nSoma parcial: %d",soma); 12 printf("\nDigite um numero inteiro: "); 13 scanf("%d", &num); 14 } 15 printf("\nSoma total: %d",soma); 16 return 0; 17 } 65 Exemplo 2: Uso de acumulador linha num soma teste 4 ? ? 5 ? 0 7 9 0 TESTE DE MESA 1 #include <stdio.h> 2 int main() 3 { 4 int num, soma; 5 soma = 0; // inicializa acumulador 6 printf("Digite um numero inteiro: "); 7 scanf("%d", &num); 8 while( num != 0 ) 9 { 10 soma = soma + num; //atualiza acumulador 11 printf("\nSoma parcial: %d",soma); 12 printf("\nDigite um numero inteiro: "); 13 scanf("%d", &num); 14 } 15 printf("\nSoma total: %d",soma); 16 return 0; 17 } Digite um numero inteiro: 9 66 Exemplo 2: Uso de acumulador linha num soma teste 4 ? ? 5 ? 0 7 9 0 8 9 0 V TESTE DE MESA 1 #include <stdio.h> 2 int main() 3 { 4 int num, soma; 5 soma = 0; // inicializa acumulador 6 printf("Digite um numero inteiro: "); 7 scanf("%d", &num); 8 while( num != 0 ) 9 { 10 soma = soma + num; //atualiza acumulador11 printf("\nSoma parcial: %d",soma); 12 printf("\nDigite um numero inteiro: "); 13 scanf("%d", &num); 14 } 15 printf("\nSoma total: %d",soma); 16 return 0; 17 } Digite um numero inteiro: 9 67 Exemplo 2: Uso de acumulador linha num soma teste 4 ? ? 5 ? 0 7 9 0 8 9 0 V 10 9 9 TESTE DE MESA 1 #include <stdio.h> 2 int main() 3 { 4 int num, soma; 5 soma = 0; // inicializa acumulador 6 printf("Digite um numero inteiro: "); 7 scanf("%d", &num); 8 while( num != 0 ) 9 { 10 soma = soma + num; //atualiza acumulador 11 printf("\nSoma parcial: %d",soma); 12 printf("\nDigite um numero inteiro: "); 13 scanf("%d", &num); 14 } 15 printf("\nSoma total: %d",soma); 16 return 0; 17 } Digite um numero inteiro: 9 68 Exemplo 2: Uso de acumulador linha num soma teste 4 ? ? 5 ? 0 7 9 0 8 9 0 V 10 9 9 TESTE DE MESA 1 #include <stdio.h> 2 int main() 3 { 4 int num, soma; 5 soma = 0; // inicializa acumulador 6 printf("Digite um numero inteiro: "); 7 scanf("%d", &num); 8 while( num != 0 ) 9 { 10 soma = soma + num; //atualiza acumulador 11 printf("\nSoma parcial: %d",soma); 12 printf("\nDigite um numero inteiro: "); 13 scanf("%d", &num); 14 } 15 printf("\nSoma total: %d",soma); 16 return 0; 17 } Digite um numero inteiro: 9 69 Exemplo 2: Uso de acumulador linha num soma teste 4 ? ? 5 ? 0 7 9 0 8 9 0 V 10 9 9 TESTE DE MESA 1 #include <stdio.h> 2 int main() 3 { 4 int num, soma; 5 soma = 0; // inicializa acumulador 6 printf("Digite um numero inteiro: "); 7 scanf("%d", &num); 8 while( num != 0 ) 9 { 10 soma = soma + num; //atualiza acumulador 11 printf("\nSoma parcial: %d",soma); 12 printf("\nDigite um numero inteiro: "); 13 scanf("%d", &num); 14 } 15 printf("\nSoma total: %d",soma); 16 return 0; 17 } Digite um numero inteiro: 9 70 Exemplo 2: Uso de acumulador linha num soma teste 4 ? ? 5 ? 0 7 9 0 8 9 0 V 10 9 9 13 -2 9 TESTE DE MESA 1 #include <stdio.h> 2 int main() 3 { 4 int num, soma; 5 soma = 0; // inicializa acumulador 6 printf("Digite um numero inteiro: "); 7 scanf("%d", &num); 8 while( num != 0 ) 9 { 10 soma = soma + num; //atualiza acumulador 11 printf("\nSoma parcial: %d",soma); 12 printf("\nDigite um numero inteiro: "); 13 scanf("%d", &num); 14 } 15 printf("\nSoma total: %d",soma); 16 return 0; 17 } Digite um numero inteiro: 9 Soma parcial: 9 Digite um numero inteiro: -2 71 Exemplo 2: Uso de acumulador linha num soma teste 4 ? ? 5 ? 0 7 9 0 8 9 0 V 10 9 9 13 -2 9 8 -2 9 V TESTE DE MESA 1 #include <stdio.h> 2 int main() 3 { 4 int num, soma; 5 soma = 0; // inicializa acumulador 6 printf("Digite um numero inteiro: "); 7 scanf("%d", &num); 8 while( num != 0 ) 9 { 10 soma = soma + num; //atualiza acumulador 11 printf("\nSoma parcial: %d",soma); 12 printf("\nDigite um numero inteiro: "); 13 scanf("%d", &num); 14 } 15 printf("\nSoma total: %d",soma); 16 return 0; 17 } Digite um numero inteiro: 9 Soma parcial: 9 Digite um numero inteiro: -2 72 Exemplo 2: Uso de acumulador linha num soma teste 4 ? ? 5 ? 0 7 9 0 8 9 0 V 10 9 9 13 -2 9 8 -2 9 V 10 -2 7 TESTE DE MESA 1 #include <stdio.h> 2 int main() 3 { 4 int num, soma; 5 soma = 0; // inicializa acumulador 6 printf("Digite um numero inteiro: "); 7 scanf("%d", &num); 8 while( num != 0 ) 9 { 10 soma = soma + num; //atualiza acumulador 11 printf("\nSoma parcial: %d",soma); 12 printf("\nDigite um numero inteiro: "); 13 scanf("%d", &num); 14 } 15 printf("\nSoma total: %d",soma); 16 return 0; 17 } Digite um numero inteiro: 9 Soma parcial: 9 Digite um numero inteiro: -2 73 Exemplo 2: Uso de acumulador linha num soma teste 4 ? ? 5 ? 0 7 9 0 8 9 0 V 10 9 9 13 -2 9 8 -2 9 V 10 -2 7 TESTE DE MESA 1 #include <stdio.h> 2 int main() 3 { 4 int num, soma; 5 soma = 0; // inicializa acumulador 6 printf("Digite um numero inteiro: "); 7 scanf("%d", &num); 8 while( num != 0 ) 9 { 10 soma = soma + num; //atualiza acumulador 11 printf("\nSoma parcial: %d",soma); 12 printf("\nDigite um numero inteiro: "); 13 scanf("%d", &num); 14 } 15 printf("\nSoma total: %d",soma); 16 return 0; 17 } Digite um numero inteiro: 9 Soma parcial: 9 Digite um numero inteiro: -2 74 Exemplo 2: Uso de acumulador linha num soma teste 4 ? ? 5 ? 0 7 9 0 8 9 0 V 10 9 9 13 -2 9 8 -2 9 V 10 -2 7 TESTE DE MESA 1 #include <stdio.h> 2 int main() 3 { 4 int num, soma; 5 soma = 0; // inicializa acumulador 6 printf("Digite um numero inteiro: "); 7 scanf("%d", &num); 8 while( num != 0 ) 9 { 10 soma = soma + num; //atualiza acumulador 11 printf("\nSoma parcial: %d",soma); 12 printf("\nDigite um numero inteiro: "); 13 scanf("%d", &num); 14 } 15 printf("\nSoma total: %d",soma); 16 return 0; 17 } Digite um numero inteiro: 9 Soma parcial: 9 Digite um numero inteiro: -2 75 Exemplo 2: Uso de acumulador linha num soma teste 4 ? ? 5 ? 0 7 9 0 8 9 0 V 10 9 9 13 -2 9 8 -2 9 V 10 -2 7 13 0 7 TESTE DE MESA 1 #include <stdio.h> 2 int main() 3 { 4 int num, soma; 5 soma = 0; // inicializa acumulador 6 printf("Digite um numero inteiro: "); 7 scanf("%d", &num); 8 while( num != 0 ) 9 { 10 soma = soma + num; //atualiza acumulador 11 printf("\nSoma parcial: %d",soma); 12 printf("\nDigite um numero inteiro: "); 13 scanf("%d", &num); 14 } 15 printf("\nSoma total: %d",soma); 16 return 0; 17 } Digite um numero inteiro: 9 Soma parcial: 9 Digite um numero inteiro: -2 Soma parcial: 7 Digite um numero inteiro: 0 76 Exemplo 2: Uso de acumulador linha num soma teste 4 ? ? 5 ? 0 7 9 0 8 9 0 V 10 9 9 13 -2 9 8 -2 9 V 10 -2 7 13 0 7 8 0 7 F TESTE DE MESA 1 #include <stdio.h> 2 int main() 3 { 4 int num, soma; 5 soma = 0; // inicializa acumulador 6 printf("Digite um numero inteiro: "); 7 scanf("%d", &num); 8 while( num != 0 ) 9 { 10 soma = soma + num; //atualiza acumulador 11 printf("\nSoma parcial: %d",soma); 12 printf("\nDigite um numero inteiro: "); 13 scanf("%d", &num); 14 } 15 printf("\nSoma total: %d",soma); 16 return 0; 17 } Digite um numero inteiro: 9 Soma parcial: 9 Digite um numero inteiro: -2 Soma parcial: 7 Digite um numero inteiro: 0 77 Exemplo 2: Uso de acumulador linha num soma teste 4 ? ? 5 ? 0 7 9 0 8 9 0 V 10 9 9 13 -2 9 8 -2 9 V 10 -2 7 13 0 7 8 0 7 F 15 0 7 TESTE DE MESA 1 #include <stdio.h> 2 int main() 3 { 4 int num, soma; 5 soma = 0; // inicializa acumulador 6 printf("Digite um numero inteiro: "); 7 scanf("%d", &num); 8 while( num != 0 ) 9 { 10 soma = soma + num; //atualiza acumulador 11 printf("\nSoma parcial: %d",soma); 12 printf("\nDigite um numero inteiro: "); 13 scanf("%d", &num); 14 } 15 printf("\nSoma total: %d",soma); 16 return 0; 17 } Digite um numero inteiro: 9 Soma parcial: 9 Digite um numero inteiro: -2 Soma parcial: 7 Digite um numero inteiro: 0 Soma total: 7 78 Repetição com Teste noInício Os quesitos para o uso de laços são mantidos: Condição Teste normalmente envolve ao menos uma variável. Inicialização Toda variável da condição precisa ser inicializada antes do laço, através de atribuição ou leitura. Atualização Ao menos uma variável da condição precisa ser atualizada no interior do laço. 1 #include <stdio.h> 2 int main() 3 { 4 int num, soma; 5 soma = 0; // inicializa acumulador 6 printf("Digite um numero inteiro: "); 7 scanf("%d", &num); 8 while( num != 0 ) 9 { 10 soma = soma + num; //atualiza acumulador 11 printf("\nSoma parcial: %d",soma); 12 printf("\nDigite um numero inteiro: "); 13 scanf("%d", &num); 14 } 15 printf("\nSoma total: %d",soma); 16 return 0; 17 } 79 Repetição com Teste no Início Acumuladores precisam de: Inicialização Variável precisa ser inicializada (normalmente com elemento neutro). Atualização Variável precisa conservar o valor acumulado e acrescentar novo valor. 1 #include <stdio.h> 2 int main() 3 { 4 int num, soma; 5 soma = 0; // inicializa acumulador 6 printf("Digite um numero inteiro: "); 7 scanf("%d", &num); 8 while( num != 0 ) 9 { 10 soma = soma + num; //atualiza acumulador 11 printf("\nSoma parcial: %d",soma); 12 printf("\nDigite um numero inteiro: "); 13 scanf("%d", &num); 14 } 15 printf("\nSoma total: %d",soma); 16 return 0; 17 } 80 Repetição com Teste no Início Impressão de acumuladores: Valor parcial Impressão da variável é feita no laço, após sua atualização. Valor total Impressão da variável é feita após o laço. 1 #include <stdio.h> 2 int main() 3 { 4 int num, soma; 5 soma = 0; // inicializa acumulador 6 printf("Digite um numero inteiro: "); 7 scanf("%d", &num); 8 while( num != 0 ) 9 { 10 soma = soma + num; //atualiza acumulador 11 printf("\nSoma parcial: %d",soma); 12 printf("\nDigite um numero inteiro: "); 13 scanf("%d", &num); 14 } 15 printf("\nSoma total: %d",soma); 16 return 0; 17 } 81 2. Escreva uma função que retorne o valor total a ser pago em uma compra de supermercado. A função deve ler a quantidade e o preço unitário de cada produto, atualizando o subtotal a cada iteração do laço. Considere que a compra será encerrada quando for digitado um valor menor ou igual a zero para a quantidade de um produto. Faça um programa para chamar e imprimir o resultado sua função. Teste seu programa com a sequência: 1 4.02 3 7.56 1 5.3 -4 ou, dependendo de sua implementação, 1 4.02 3 7.56 1 5.3 -4 2.0 Exercício 82 Repetição com Teste no Início Exemplo 3: Uso de contador • Contador é uma variável utilizada para contar o número de ocorrências de determinado evento. • A variável usada como contador recebe um acréscimo de uma unidade a cada iteração, isto é, é incrementada de 1 em 1. • A variável usada como acumulador precisa ser inicializada antes do laço. contador = contador + 1; contador++; contador = 0; 83 Repetição com Teste no Início Desenvolva um algoritmo que leia uma sequência de números inteiros e imprima a quantidade de valores lidos. A sequência deve terminar quando o número 0 (zero) for lido. Exemplo 3: Uso de contador 84 Repetição com Teste no Início Desenvolva um algoritmo que leia uma sequência de números inteiros e imprima a quantidade de valores lidos. A sequência deve terminar quando o número 0 (zero) for lido. Exemplo 3: Uso de contador contador → o valor da variável começa com zero; → após ler e testar cada novo valor da sequência, a variável é incrementada (aumenta em uma unidade); → ao final do laço, o valor da variável contém o número de elementos. 85 Repetição com Teste no Início Exemplo 3: Uso de contador 1 #include <stdio.h> 2 int main() 3 { 4 int num, cont; 5 cont = 0; // inicializa contador 6 printf("Digite um numero inteiro: "); 7 scanf("%d", &num); 8 while( num != 0 ) 9 { 10 cont++; //atualiza contador 11 printf("\nDigite um numero inteiro: "); 12 scanf("%d", &num); 13 } 14 printf("\nNumero de elementos: %d",cont); 15 return 0; 16 } 86 Exemplo 3: Uso de contador linha num cont teste 4 ? ? TESTE DE MESA1 #include <stdio.h> 2 int main() 3 { 4 int num, cont; 5 cont = 0; // inicializa contador 6 printf("Digite um numero inteiro: "); 7 scanf("%d", &num); 8 while( num != 0 ) 9 { 10 cont++; //atualiza contador 11 printf("\nDigite um numero inteiro: "); 12 scanf("%d", &num); 13 } 14 printf("\nNumero de elementos: %d",cont); 15 return 0; 16 } 87 Exemplo 3: Uso de contador linha num cont teste 4 ? ? 5 ? 0 TESTE DE MESA1 #include <stdio.h> 2 int main() 3 { 4 int num, cont; 5 cont = 0; // inicializa contador 6 printf("Digite um numero inteiro: "); 7 scanf("%d", &num); 8 while( num != 0 ) 9 { 10 cont++; //atualiza contador 11 printf("\nDigite um numero inteiro: "); 12 scanf("%d", &num); 13 } 14 printf("\nNumero de elementos: %d",cont); 15 return 0; 16 } 88 Exemplo 3: Uso de contador linha num cont teste 4 ? ? 5 ? 0 TESTE DE MESA1 #include <stdio.h> 2 int main() 3 { 4 int num, cont; 5 cont = 0; // inicializa contador 6 printf("Digite um numero inteiro: "); 7 scanf("%d", &num); 8 while( num != 0 ) 9 { 10 cont++; //atualiza contador 11 printf("\nDigite um numero inteiro: "); 12 scanf("%d", &num); 13 } 14 printf("\nNumero de elementos: %d",cont); 15 return 0; 16 } 89 Exemplo 3: Uso de contador linha num cont teste 4 ? ? 5 ? 0 7 22 0 TESTE DE MESA1 #include <stdio.h> 2 int main() 3 { 4 int num, cont; 5 cont = 0; // inicializa contador 6 printf("Digite um numero inteiro: "); 7 scanf("%d", &num); 8 while( num != 0 ) 9 { 10 cont++; //atualiza contador 11 printf("\nDigite um numero inteiro: "); 12 scanf("%d", &num); 13 } 14 printf("\nNumero de elementos: %d",cont); 15 return 0; 16 } Digite um numero inteiro: 22 90 Exemplo 3: Uso de contador linha num cont teste 4 ? ? 5 ? 0 7 22 0 8 22 0 V TESTE DE MESA1 #include <stdio.h> 2 int main() 3 { 4 int num, cont; 5 cont = 0; // inicializa contador 6 printf("Digite um numero inteiro: "); 7 scanf("%d", &num); 8 while( num != 0 ) 9 { 10 cont++; //atualiza contador 11 printf("\nDigite um numero inteiro: "); 12 scanf("%d", &num); 13 } 14 printf("\nNumero de elementos: %d",cont); 15 return 0; 16 } Digite um numero inteiro: 22 91 Exemplo 3: Uso de contador linha num cont teste 4 ? ? 5 ? 0 7 22 0 8 22 0 V 10 22 1 TESTE DE MESA1 #include <stdio.h> 2 int main() 3 { 4 int num, cont; 5 cont = 0; // inicializa contador 6 printf("Digite um numero inteiro: "); 7 scanf("%d", &num); 8 while( num != 0 ) 9 { 10 cont++; //atualiza contador 11 printf("\nDigite um numero inteiro: "); 12 scanf("%d", &num); 13 } 14 printf("\nNumero de elementos: %d",cont); 15 return 0; 16 } Digite um numero inteiro: 22 92 Exemplo 3: Uso de contador linha num cont teste 4 ? ? 5 ? 0 7 22 0 8 22 0 V 10 22 1 TESTE DE MESA1 #include <stdio.h> 2 int main() 3 { 4 int num, cont; 5 cont = 0; // inicializa contador 6 printf("Digite um numero inteiro: "); 7 scanf("%d", &num);8 while( num != 0 ) 9 { 10 cont++; //atualiza contador 11 printf("\nDigite um numero inteiro: "); 12 scanf("%d", &num); 13 } 14 printf("\nNumero de elementos: %d",cont); 15 return 0; 16 } Digite um numero inteiro: 22 93 Exemplo 3: Uso de contador linha num cont teste 4 ? ? 5 ? 0 7 22 0 8 22 0 V 10 22 1 12 13 1 TESTE DE MESA1 #include <stdio.h> 2 int main() 3 { 4 int num, cont; 5 cont = 0; // inicializa contador 6 printf("Digite um numero inteiro: "); 7 scanf("%d", &num); 8 while( num != 0 ) 9 { 10 cont++; //atualiza contador 11 printf("\nDigite um numero inteiro: "); 12 scanf("%d", &num); 13 } 14 printf("\nNumero de elementos: %d",cont); 15 return 0; 16 } Digite um numero inteiro: 22 Digite um numero inteiro: 13 94 Exemplo 3: Uso de contador linha num cont teste 4 ? ? 5 ? 0 7 22 0 8 22 0 V 10 22 1 12 13 1 8 13 1 V TESTE DE MESA1 #include <stdio.h> 2 int main() 3 { 4 int num, cont; 5 cont = 0; // inicializa contador 6 printf("Digite um numero inteiro: "); 7 scanf("%d", &num); 8 while( num != 0 ) 9 { 10 cont++; //atualiza contador 11 printf("\nDigite um numero inteiro: "); 12 scanf("%d", &num); 13 } 14 printf("\nNumero de elementos: %d",cont); 15 return 0; 16 } Digite um numero inteiro: 22 Digite um numero inteiro: 13 95 Exemplo 3: Uso de contador linha num cont teste 4 ? ? 5 ? 0 7 22 0 8 22 0 V 10 22 1 12 13 1 8 13 1 V 10 13 2 TESTE DE MESA1 #include <stdio.h> 2 int main() 3 { 4 int num, cont; 5 cont = 0; // inicializa contador 6 printf("Digite um numero inteiro: "); 7 scanf("%d", &num); 8 while( num != 0 ) 9 { 10 cont++; //atualiza contador 11 printf("\nDigite um numero inteiro: "); 12 scanf("%d", &num); 13 } 14 printf("\nNumero de elementos: %d",cont); 15 return 0; 16 } Digite um numero inteiro: 22 Digite um numero inteiro: 13 96 Exemplo 3: Uso de contador linha num cont teste 4 ? ? 5 ? 0 7 22 0 8 22 0 V 10 22 1 12 13 1 8 13 1 V 10 13 2 TESTE DE MESA1 #include <stdio.h> 2 int main() 3 { 4 int num, cont; 5 cont = 0; // inicializa contador 6 printf("Digite um numero inteiro: "); 7 scanf("%d", &num); 8 while( num != 0 ) 9 { 10 cont++; //atualiza contador 11 printf("\nDigite um numero inteiro: "); 12 scanf("%d", &num); 13 } 14 printf("\nNumero de elementos: %d",cont); 15 return 0; 16 } Digite um numero inteiro: 22 Digite um numero inteiro: 13 97 Exemplo 3: Uso de contador linha num cont teste 4 ? ? 5 ? 0 7 22 0 8 22 0 V 10 22 1 12 13 1 8 13 1 V 10 13 2 12 0 2 TESTE DE MESA1 #include <stdio.h> 2 int main() 3 { 4 int num, cont; 5 cont = 0; // inicializa contador 6 printf("Digite um numero inteiro: "); 7 scanf("%d", &num); 8 while( num != 0 ) 9 { 10 cont++; //atualiza contador 11 printf("\nDigite um numero inteiro: "); 12 scanf("%d", &num); 13 } 14 printf("\nNumero de elementos: %d",cont); 15 return 0; 16 } Digite um numero inteiro: 22 Digite um numero inteiro: 13 Digite um numero inteiro: 0 98 Exemplo 3: Uso de contador linha num cont teste 4 ? ? 5 ? 0 7 22 0 8 22 0 V 10 22 1 12 13 1 8 13 1 V 10 13 2 12 0 2 8 0 2 F TESTE DE MESA1 #include <stdio.h> 2 int main() 3 { 4 int num, cont; 5 cont = 0; // inicializa contador 6 printf("Digite um numero inteiro: "); 7 scanf("%d", &num); 8 while( num != 0 ) 9 { 10 cont++; //atualiza contador 11 printf("\nDigite um numero inteiro: "); 12 scanf("%d", &num); 13 } 14 printf("\nNumero de elementos: %d",cont); 15 return 0; 16 } Digite um numero inteiro: 22 Digite um numero inteiro: 13 Digite um numero inteiro: 0 99 Exemplo 3: Uso de contador linha num cont teste 4 ? ? 5 ? 0 7 22 0 8 22 0 V 10 22 1 12 13 1 8 13 1 V 10 13 2 12 0 2 8 0 2 F 14 0 2 TESTE DE MESA1 #include <stdio.h> 2 int main() 3 { 4 int num, cont; 5 cont = 0; // inicializa contador 6 printf("Digite um numero inteiro: "); 7 scanf("%d", &num); 8 while( num != 0 ) 9 { 10 cont++; //atualiza contador 11 printf("\nDigite um numero inteiro: "); 12 scanf("%d", &num); 13 } 14 printf("\nNumero de elementos: %d",cont); 15 return 0; 16 } Digite um numero inteiro: 22 Digite um numero inteiro: 13 Digite um numero inteiro: 0 Numero de elementos: 2 100 3. Modifique a função que calcula o valor da compra de supermercado para que esta imprima a quantidade de itens distintos adquiridos. Teste seu programa com a sequência: 1 4.02 3 7.56 1 5.3 -4 ou, dependendo de sua implementação, 1 4.02 3 7.56 1 5.3 -4 2.0 Exercício 101 Repetição com Teste no Início Desenvolva um algoritmo que leia uma sequência de números inteiros e imprima a media aritmética dos valores lidos. A sequência deve terminar quando o número 0 (zero) for lido. Exemplo 4: Cálculo de média 102 Repetição com Teste no Início Desenvolva um algoritmo que leia uma sequência de números inteiros e imprima a media aritmética dos valores lidos. A sequência deve terminar quando o número 0 (zero) for lido. Exemplo 4: Cálculo de média media → a média aritmética corresponde à soma dos valores dividida pelo número de valores; → um acumulador e um contador serão necessários neste cálculo; → o resultado da divisão deve ser um valor real, mesmo se os valores envolvidos são inteiros; → a divisão deve ser realizada após o fim do laço, quando os valores do contador e do acumulador já não sofrerão alterações. 103 Repetição com Teste no Início Desenvolva um algoritmo que leia uma sequência de números inteiros e imprima a media aritmética dos valores lidos. A sequência deve terminar quando o número 0 (zero) for lido. Exemplo 4: Cálculo de média media → a média aritmética corresponde à soma dos valores dividida pelo número de valores; → um acumulador e um contador serão necessários neste cálculo; → o resultado da divisão deve ser um valor real, mesmo se os valores envolvidos são inteiros; → a divisão deve ser realizada após o fim do laço, quando os valores do contador e do acumulador já não sofrerão alterações. 104 Repetição com Teste no Início Exemplo 4: Cálculo de média 1 #include <stdio.h> 2 int main() 3 { 4 int num, soma, cont; 5 float media; 6 soma = 0; // inicializa acumulador 7 cont = 0; // inicializa contador 8 printf("Digite um numero inteiro: "); 9 scanf("%d", &num); 10 while( num != 0 ) 11 { 12 soma = soma + num; //atualiza acumulador 13 cont++; //atualiza contador 14 printf("\nDigite um numero inteiro: "); 15 scanf("%d", &num); 16 } 17 media = soma / (float) cont; //conversao para divisao real 18 printf("\nMedia dos elementos: %f",media); 19 return 0; 20 } 105 Repetição com Teste no Início Desenvolva um algoritmo que leia um número inteiro positivo e imprima a soma de seus dígitos. Exemplo 5: Soma dos dígitos de um número 106 Repetição com Teste no Início Desenvolva um algoritmo que leia um número inteiro positivo e imprima a soma de seus dígitos. Exemplo 5: Soma dos dígitos de um número → a separação dos dígitos de um número pode ser feita através das seguintes operações: • o resto da divisão por 10 permite que o dígito menos significativo seja obtido: 530479% 10 → 9 • a divisão inteira por 10 permite que o dígito menos significativo seja descartado e o dígito seguinte assuma esta posição: 530479 / 10 → 53047 107 Repetição com Teste no Início Desenvolva um algoritmo que leia um número inteiro positivo e imprima a soma de seus dígitos. Exemplo 5: Soma dos dígitos de um número → a separação dos dígitos de um número pode ser feita através das seguintes operações: 530479 % 10 → 9 530479 / 10 → 53047 53047 % 10 → 7 53047 / 10 → 5304 5304 % 10 → 4 5304 / 10 → 530 530 % 10 → 0 530 / 10 → 53 53 % 10 → 3 53 / 10 → 5 5 % 10 → 5 5 / 10 → 0 108 Repetição com Teste no Início Desenvolva um algoritmo que leia um número inteiro positivo e imprima a soma de seus dígitos. Exemplo 5: Soma dos dígitos de um número → a separação dos dígitos de um número pode ser feita através das seguintes operações: 530479 % 10 → 9 530479 / 10 → 53047 53047 % 10 → 7 53047 / 10 → 5304 5304 % 10 → 4 5304 / 10 → 530 ... digito = num % 10; num = num / 10; digito = num % 10; num = num / 10; digito = num % 10; num = num / 10; ... 109 Repetição com Teste no Início Exemplo 5: Soma dos dígitos de um número 1 #include <stdio.h> 2 int main() 3 { 4 int num, digito, soma; 5 soma = 0; // inicializa acumulador 6 printf("Digite um numero inteiro: "); 7 scanf("%d", &num); 8 while( num != 0 ) 9 { 10 digito = num % 10; // obtem digito menos significativo 11 soma = soma + digito; // acrescenta o valor do digito a soma 12 num = num / 10; // descarta o digito armazenado 13 } 14 printf("\nSoma dos digitos: %d",soma); 15 return 0; 16 } 110 Repetição com Teste no Início Exemplo 5: Soma dos dígitos de um número Atualização da variável da condição 1 #include <stdio.h> 2 int main() 3 { 4 int num, digito, soma; 5 soma = 0; // inicializa acumulador 6 printf("Digite um numero inteiro: "); 7 scanf("%d", &num); 8 while( num != 0 ) 9 { 10 digito = num % 10; // obtem digito menos significativo 11 soma = soma + digito; // acrescenta o valor do digito a soma 12 num = num / 10; // descarta o digito armazenado 13 } 14 printf("\nSoma dos digitos: %d",soma); 15 return 0; 16 } 111 Repetição com variável de controle O uso do comando for é muito similar ao do comando while. for ( inicializacao; condicao; atualizacao ) { blocoDeComandos1; } blocoDeComandos2; 112 Repetição com variável de controle for ( inicializacao; condicao; atualizacao ) { blocoDeComandos1; } blocoDeComandos2; inicializacao; while ( condicao ) { blocoDeComandos1; atualizacao; } blocoDeComandos2; Funcionalmente, for e while são idênticos, apenas a sintaxe dos comandos muda. 113 Repetição com variável de controle O for concentra os comandos de inicialização, condição e atualização entre parênteses, separados por ponto e vírgula. for ( inicializacao; condicao; atualizacao ) { blocoDeComandos1; } blocoDeComandos2; inicializacao; while ( condicao ) { blocoDeComandos1; atualizacao; } blocoDeComandos2; 114 Repetição com variável de controle for ( inicializacao; condicao; atualizacao ) { blocoDeComandos1; } blocoDeComandos2; inicializacao; while ( condicao ) { blocoDeComandos1; atualizacao; } blocoDeComandos2; inicialização O comando de inicialização do for é realizado uma única vez, antes de sua primeira execução. 115 Repetição com variável de controle for ( inicializacao; condicao; atualizacao ) { blocoDeComandos1; } blocoDeComandos2; inicializacao; while ( condicao ) { blocoDeComandos1; atualizacao; } blocoDeComandos2; condição A condição do for é testada no início de toda iteração. O bloco de comandos interno só é executado se a condição for VERDADEIRA. 116 Repetição com variável de controle for ( inicializacao; condicao; atualizacao ) { blocoDeComandos1; } blocoDeComandos2; inicializacao; while ( condicao ) { blocoDeComandos1; atualizacao; } blocoDeComandos2; atualização A atualização é realizada após a execução do bloco de comandos interno e antes do teste da condição da iteração seguinte. 117 Repetição com variável de controle for( contador=0; contador<5; contador++ ) { blocoDeComandos1; } blocoDeComandos2; contador = 0; while ( contador < 5 ) { blocoDeComandos1; contador++; } blocoDeComandos2; Em geral, for é mais usado quando há uma variável de controle, como um contador na condição. 118 Repetição com variável de controle for( contador=0; contador<5; contador++ ) { blocoDeComandos1; } blocoDeComandos2; contador = 0; while ( contador < 5 ) { blocoDeComandos1; contador++; } blocoDeComandos2; A vantagem do for neste caso é concentrar inicialização, condição e atualização, evitando que algum destes comandos seja esquecido. 119 Repetição com variável de controle for( contador=0; contador<5; contador++ ) { blocoDeComandos1; } blocoDeComandos2; contador = 0; while ( contador < 5 ) { blocoDeComandos1; contador++; } blocoDeComandos2; O comando while é mais indicado quando o controle do laço envolve FLAG ou condições complexas, uma vez que o código fica mais claro de ser entendido. 120 Detalhe da ordem de execução das instruções Repetição com variável de controle linha i teste 4 ? int i; TESTE DE MESA 1 #include <stdio.h> 2 int main() 3 { 4 int i; 5 for( i=1; i<=3; i++ ) 6 { 7 printf(" %d ",i); 8 } 9 return 0; 10 } 121 Detalhe da ordem de execução das instruções Repetição com variável de controle linha i teste 4 ? --- int i; 5 1 --- i=1; TESTE DE MESA 1 #include <stdio.h> 2 int main() 3 { 4 int i; 5 for( i=1; i<=3; i++ ) 6 { 7 printf(" %d ",i); 8 } 9 return 0; 10 } 122 Detalhe da ordem de execução das instruções Repetição com variável de controle linha i teste 4 ? --- int i; 5 1 --- i=1; 5 1 V i<=3; TESTE DE MESA 1 #include <stdio.h> 2 int main() 3 { 4 int i; 5 for( i=1; i<=3; i++ ) 6 { 7 printf(" %d ",i); 8 } 9 return 0; 10 } 123 Detalhe da ordem de execução das instruções Repetição com variável de controle linha i teste 4 ? --- int i; 5 1 --- i=1; 5 1 V i<=3; 7 1 --- printf(" %d ",i); TESTE DE MESA 1 #include <stdio.h> 2 int main() 3 { 4 int i; 5 for( i=1; i<=3; i++ ) 6 { 7 printf(" %d ",i); 8 } 9 return 0; 10 } 1 124 Detalhe da ordem de execução das instruções Repetição com variável de controle linha i teste 4 ? --- int i; 5 1 --- i=1; 5 1 V i<=3; 7 1 --- printf(" %d ",i); 5 2 --- i++; TESTE DE MESA 1 #include <stdio.h> 2 int main() 3 { 4 int i; 5 for( i=1; i<=3; i++ ) 6 { 7 printf(" %d ",i); 8 } 9 return 0; 10 } 1 125 Detalhe da ordem de execução das instruções Repetição com variável de controle linha i teste 4 ? --- int i; 5 1 --- i=1; 5 1 V i<=3; 7 1 --- printf(" %d ",i); 5 2 --- i++; 5 2 V i<=3; TESTE DE MESA 1 #include <stdio.h> 2 int main() 3 { 4 int i; 5 for( i=1; i<=3; i++ ) 6 { 7 printf(" %d ",i); 8 } 9 return 0; 10 } 1 126 Detalhe da ordem de execução das instruções Repetição com variável de controlelinha i teste 4 ? --- int i; 5 1 --- i=1; 5 1 V i<=3; 7 1 --- printf(" %d ",i); 5 2 --- i++; 5 2 V i<=3; 7 2 --- printf(" %d ",i); TESTE DE MESA 1 #include <stdio.h> 2 int main() 3 { 4 int i; 5 for( i=1; i<=3; i++ ) 6 { 7 printf(" %d ",i); 8 } 9 return 0; 10 } 1 2 127 Detalhe da ordem de execução das instruções Repetição com variável de controle linha i teste 4 ? --- int i; 5 1 --- i=1; 5 1 V i<=3; 7 1 --- printf(" %d ",i); 5 2 --- i++; 5 2 V i<=3; 7 2 --- printf(" %d ",i); 5 3 --- i++; TESTE DE MESA 1 #include <stdio.h> 2 int main() 3 { 4 int i; 5 for( i=1; i<=3; i++ ) 6 { 7 printf(" %d ",i); 8 } 9 return 0; 10 } 1 2 128 Detalhe da ordem de execução das instruções Repetição com variável de controle linha i teste 4 ? --- int i; 5 1 --- i=1; 5 1 V i<=3; 7 1 --- printf(" %d ",i); 5 2 --- i++; 5 2 V i<=3; 7 2 --- printf(" %d ",i); 5 3 --- i++; 5 3 V i<=3; TESTE DE MESA 1 #include <stdio.h> 2 int main() 3 { 4 int i; 5 for( i=1; i<=3; i++ ) 6 { 7 printf(" %d ",i); 8 } 9 return 0; 10 } 1 2 129 Detalhe da ordem de execução das instruções Repetição com variável de controle linha i teste 4 ? --- int i; 5 1 --- i=1; 5 1 V i<=3; 7 1 --- printf(" %d ",i); 5 2 --- i++; 5 2 V i<=3; 7 2 --- printf(" %d ",i); 5 3 --- i++; 5 3 V i<=3; 7 3 --- printf(" %d ",i); TESTE DE MESA 1 #include <stdio.h> 2 int main() 3 { 4 int i; 5 for( i=1; i<=3; i++ ) 6 { 7 printf(" %d ",i); 8 } 9 return 0; 10 } 1 2 3 130 Detalhe da ordem de execução das instruções Repetição com variável de controle linha i teste 4 ? --- int i; 5 1 --- i=1; 5 1 V i<=3; 7 1 --- printf(" %d ",i); 5 2 --- i++; 5 2 V i<=3; 7 2 --- printf(" %d ",i); 5 3 --- i++; 5 3 V i<=3; 7 3 --- printf(" %d ",i); 5 4 --- i++; TESTE DE MESA 1 #include <stdio.h> 2 int main() 3 { 4 int i; 5 for( i=1; i<=3; i++ ) 6 { 7 printf(" %d ",i); 8 } 9 return 0; 10 } 1 2 3 131 Detalhe da ordem de execução das instruções Repetição com variável de controle linha i teste 4 ? --- int i; 5 1 --- i=1; 5 1 V i<=3; 7 1 --- printf(" %d ",i); 5 2 --- i++; 5 2 V i<=3; 7 2 --- printf(" %d ",i); 5 3 --- i++; 5 3 V i<=3; 7 3 --- printf(" %d ",i); 5 4 --- i++; 5 4 F i<=3; TESTE DE MESA 1 #include <stdio.h> 2 int main() 3 { 4 int i; 5 for( i=1; i<=3; i++ ) 6 { 7 printf(" %d ",i); 8 } 9 return 0; 10 } 1 2 3 132 Detalhe da ordem de execução das instruções Repetição com variável de controle linha i teste 4 ? --- int i; 5 1 --- i=1; 5 1 V i<=3; 7 1 --- printf(" %d ",i); 5 2 --- i++; 5 2 V i<=3; 7 2 --- printf(" %d ",i); 5 3 --- i++; 5 3 V i<=3; 7 3 --- printf(" %d ",i); 5 4 --- i++; 5 4 F i<=3; 9 4 --- return 0; TESTE DE MESA 1 #include <stdio.h> 2 int main() 3 { 4 int i; 5 for( i=1; i<=3; i++ ) 6 { 7 printf(" %d ",i); 8 } 9 return 0; 10 } 1 2 3 133 Desenvolva um algoritmo que imprima todos os valores inteiros em um intervalo indicado pelo usuário. Exemplo 1: Imprime valores em um intervalo Repetição com variável de controle 134 Desenvolva um algoritmo que imprima todos os valores inteiros em um intervalo indicado pelo usuário. Exemplo 1: Imprime valores em um intervalo Repetição com variável de controle → o usuário vai indicar o valor inicial e o valor final do intervalo; → todos os valores do intervalo devem ser impressos, um a um; → um contador pode ser utilizado para indicar cada valor a ser impresso. 135 Exemplo 1: Imprime valores em um intervalo Repetição com variável de controle 1 #include <stdio.h> 2 int main() 3 { 4 int cont,inicio,fim; 5 printf("Digite o menor numero: "); 6 scanf("%d", &inicio); 7 printf("Digite o maior numero: "); 8 scanf("%d", &fim); 9 printf("\nIntervalo: "); 10 for( cont=inicio; cont<=fim; cont++ ) 11 { 12 printf(" %d ",cont); 13 } 14 return 0; 15 } 136 Exemplo 1: Imprime valores em um intervalo Repetição com variável de controle linha inicio fim cont teste 4 ? ? ? TESTE DE MESA 1 #include <stdio.h> 2 int main() 3 { 4 int cont,inicio,fim; 5 printf("Digite o menor numero: "); 6 scanf("%d", &inicio); 7 printf("Digite o maior numero: "); 8 scanf("%d", &fim); 9 printf("\nIntervalo: "); 10 for( cont=inicio; cont<=fim; cont++ ) 11 { 12 printf(" %d ",cont); 13 } 14 return 0; 15 } 137 Exemplo 1: Imprime valores em um intervalo Repetição com variável de controle linha inicio fim cont teste 4 ? ? ? TESTE DE MESA 1 #include <stdio.h> 2 int main() 3 { 4 int cont,inicio,fim; 5 printf("Digite o menor numero: "); 6 scanf("%d", &inicio); 7 printf("Digite o maior numero: "); 8 scanf("%d", &fim); 9 printf("\nIntervalo: "); 10 for( cont=inicio; cont<=fim; cont++ ) 11 { 12 printf(" %d ",cont); 13 } 14 return 0; 15 } 138 Exemplo 1: Imprime valores em um intervalo Repetição com variável de controle linha inicio fim cont teste 4 ? ? ? 6 3 ? ? TESTE DE MESA 1 #include <stdio.h> 2 int main() 3 { 4 int cont,inicio,fim; 5 printf("Digite o menor numero: "); 6 scanf("%d", &inicio); 7 printf("Digite o maior numero: "); 8 scanf("%d", &fim); 9 printf("\nIntervalo: "); 10 for( cont=inicio; cont<=fim; cont++ ) 11 { 12 printf(" %d ",cont); 13 } 14 return 0; 15 } Digite o menor numero: 3 139 Exemplo 1: Imprime valores em um intervalo Repetição com variável de controle linha inicio fim cont teste 4 ? ? ? 6 3 ? ? TESTE DE MESA 1 #include <stdio.h> 2 int main() 3 { 4 int cont,inicio,fim; 5 printf("Digite o menor numero: "); 6 scanf("%d", &inicio); 7 printf("Digite o maior numero: "); 8 scanf("%d", &fim); 9 printf("\nIntervalo: "); 10 for( cont=inicio; cont<=fim; cont++ ) 11 { 12 printf(" %d ",cont); 13 } 14 return 0; 15 } Digite o menor numero: 3 140 Exemplo 1: Imprime valores em um intervalo Repetição com variável de controle linha inicio fim cont teste 4 ? ? ? 6 3 ? ? 8 3 5 ? TESTE DE MESA 1 #include <stdio.h> 2 int main() 3 { 4 int cont,inicio,fim; 5 printf("Digite o menor numero: "); 6 scanf("%d", &inicio); 7 printf("Digite o maior numero: "); 8 scanf("%d", &fim); 9 printf("\nIntervalo: "); 10 for( cont=inicio; cont<=fim; cont++ ) 11 { 12 printf(" %d ",cont); 13 } 14 return 0; 15 } Digite o menor numero: 3 Digite o maior numero: 5 141 Exemplo 1: Imprime valores em um intervalo Repetição com variável de controle linha inicio fim cont teste 4 ? ? ? 6 3 ? ? 8 3 5 ? TESTE DE MESA 1 #include <stdio.h> 2 int main() 3 { 4 int cont,inicio,fim; 5 printf("Digite o menor numero: "); 6 scanf("%d", &inicio); 7 printf("Digite o maior numero: "); 8 scanf("%d", &fim); 9 printf("\nIntervalo: "); 10 for( cont=inicio; cont<=fim; cont++ ) 11 { 12 printf(" %d ",cont); 13 } 14 return 0; 15 } Digite o menor numero: 3 Digite o maior numero: 5 142 Exemplo 1: Imprime valores em um intervalo Repetição com variável de controle linha inicio fim cont teste 4 ? ? ? 6 3 ? ? 8 3 5 ? 10 3 5 3 TESTE DE
Compartilhar