Baixe o app para aproveitar ainda mais
Prévia do material em texto
Estrutura de Repetição Comandos while Cap. 4 do Livro Base Professor: Humberto Nigri hnigri@gmail.com 1o Sem 2012 HNigri - Algoritmos 2 ESTRUTURAS DE REPETIÇÃO Como imprimir os 1000 1os números a partir de 1? Solução 1: main ( ) { cout << "1\n”; cout << "2\n”; ... cout << "1000\n”; } ! A solução acima não é boa ! Além de dar um grande trabalho de digitação ... ! ... E se o usuário pedir agora até 100.000 ? ! Para esses casos a melhor solução são os comandos de repetição 1o Sem 2012 HNigri - Algoritmos 3 ESTRUTURAS DE REPETIÇÃO ! Comando ENQUANTO Portugol enquanto exp_logica faça comando; ou enquanto exp_logica faça inicio comando; comando; comando; fim C / C++ while (exp_logica) comando; ou while (exp_logica) { comando; comando; comando; } 1o Sem 2012 HNigri - Algoritmos 4 Fluxograma exp_logica ? verdadeiro falso Comando 1 Comando n 1o Sem 2012 HNigri - Algoritmos 5 REPETIÇÃO ENQUANTO/WHILE ! Primeiro, avalia-se a expressão. ! Se for verdadeira (!= 0), executa-se a lista de comandos. ! Ao término da lista, reavalia-se a expressão. ! O processo é repetido até que a expressão seja falsa (== 0). ! Exemplo 1: int i = 1; while (i <= 1000) { cout << i << “\n”; i++; } 1o Sem 2012 HNigri - Algoritmos 6 REPETIÇÃO ENQUANTO/WHILE ! Exemplo 2: int num = 0; while (num < 13) { cout << num++; num += 2; } ! Observações 1: O corpo de um while pode ter: zero, um ou n comandos. 2: O { e o } são obrigatórios apenas se tivermos mais de um comando. 1o Sem 2012 HNigri - Algoritmos 7 Validação de dados na Leitura ! Exemplo 3: cout << “Informe o sexo (F ou M) : ”; SEXO = getchar(); while(SEXO != ‘F’ && SEXO != ‘M’ ) { cout << “Informe o sexo (F ou M) : ”; SEXO = getchar(); } ! Exemplo 4: cout << “Informe um numero entre 0 e 10: ”; cin >> numero; while(numero < 0 || numero > 10’ ) { cout << “Informe um numero entre 0 e 10: ”; cin >> numero; } 1o Sem 2012 HNigri - Algoritmos 8 Comando Faça-Enquanto / do-while ! Similar ao comando enquanto, a diferença é o momento em que a expressão é avaliada. ! No comando faça-enquanto, a lista de comandos é executada e, depois, a expressão é avaliada. ! Em algumas versões de Portugol (e linguagens) existe na forma de comando Repita (com um funcionamento ligeiramente diferente) ! Útil quando sabemos (ou precisamos) que o bloco de comandos vai executar no mínimo uma vez 1o Sem 2012 HNigri - Algoritmos 9 Fluxograma exp_logica ? verdadeiro falso Comando 1 Comando n 1o Sem 2012 HNigri - Algoritmos 10 ESTRUTURAS DE REPETIÇÃO ! Comando FAÇA-ENQUANTO Portugol faça comando; comando; comando; enquanto exp_logica; C / C++ do { comando; comando; comando; } while (exp_logica); 1o Sem 2012 HNigri - Algoritmos 11 Diferença entre o while e o do-while ! No while o teste é no início e no do-while o teste é no fim do { cout << “Informe o sexo (F ou M) : ”; SEXO = getchar(); } while(SEXO != ‘F’ && SEXO != ‘M’ ); ! No while pode não entrar NENHUMA vez, no do- while sempre executa UMA vez do { cout << “Informe um numero entre 0 e 10: ”; cin >> numero; } while(numero < 0 || numero > 10’ ); 1o Sem 2012 HNigri - Algoritmos 12 ESTRUTURAS DE REPETIÇÃO Exemplo 1: Leia dois números reais e realize a divisão entre eles. main () { float num1, num2; cout << "\nDigite o 1o número:"; cin >> num1; do { cout << "\nDigite o 2o número ( != 0):"; cin >> num2; } while (num2 == 0); cout << "Divisão: “ << num1/num2; } 1o Sem 2012 HNigri - Algoritmos 13 Exemplo 1. Ler um número inteiro X do teclado e informar em ordem crescente quais são os número pares menores que esse número. 1o Sem 2012 HNigri - Algoritmos 14 Exercícios 1. Fazer um algoritmo que calcula a soma de todos os números pares de 1 a 1000. 2. Faça um programa que lê 100 números e calcule a média aritmética desses números. 3. Ler um número inteiro X do teclado e informar em ordem decrescente quais são os números impares menores que esse número. 4. Ler dois números X e Y inteiros do teclado, sendo que X é menor que Y (usuário gente boa :), e listar todos os números inteiros múltiplos de 3 que pertencem a esse intervalo. 1o Sem 2012 HNigri - Algoritmos 15 Solução dos Exercícios ... 1: Fazer um algoritmo que calcula a soma de todos os números pares de 1 a 1000. Entrada: NADA Saída: O Somatório (um numerozinho ...) Processamento: Fazer uma repetição de 1 a 1000 somar os pares ATENÇÃO: Somatório é quando uma variável é usada para ACUMULAR uma série de somas. Por isso são necessários dois cuidados: 1º ZERAR a VARIÁVEL – senão a soma começa com LIXO 2º Fazer a SOMA = SOMA + Alguma coisa 1o Sem 2012 HNigri - Algoritmos 16 Solução dos Exercícios ... 1: Fazer um algoritmo que calcula a soma de todos os números pares de 1 a 1000. inicio declare x, soma numerico; x <- 1; soma <- 0; enquanto x <= 1000 faça inicio se x % 2 = 0 entao soma <- soma + x; x <- x +1; fim; escreva ”Soma = “, soma; fim. 1o Sem 2012 HNigri - Algoritmos 17 Solução dos Exercícios ... 1: Fazer um algoritmo que calcula a soma de todos os números pares de 1 a 1000. int main () { int x = 1, soma = 0; while (x <= 1000) { if ( x % 2 == 0) soma += x; x++; } cout << ”Soma = “ << soma; } 1o Sem 2012 HNigri - Algoritmos 18 Solução dos Exercícios ... 2: Faça um programa que lê 100 números e calcule a média aritmética desses números. inicio declare x, soma, numero numerico; x <- 1; soma <- 0; enquanto x <= 100 faça inicio leia numero; soma <- soma + numero; x <- x +1; fim; escreva ”Media = “, soma/100; fim. 1o Sem 2012 HNigri - Algoritmos 19 Solução dos Exercícios ... 2: Faça um programa que lê 100 números e calcule a média aritmética desses números. int main () { float x = 1, soma = 0, numero; while (x <= 1000) { cout << “Informe um numero”; cin >> numero; soma += numero; x++; } cout << ”Media = “ << soma/100; } 1o Sem 2012 HNigri - Algoritmos 20 Solução dos Exercícios ... 3: Ler um número inteiro X do teclado e informar em ordem decrescente quais são os números impares menores que esse número. inicio declare x, numero numerico; leia numero; x <- numero; enquanto x > 1 faça inicio se x % 2 = 1 entao escreva x; x <- x - 1; fim; fim. 1o Sem 2012 HNigri - Algoritmos 21 Solução dos Exercícios ... 3: Ler um número inteiro X do teclado e informar em ordem decrescente quais são os números impares menores que esse número. int main () { int x, numero; cout << “Informe um numero”; cin >> numero; x = numero; while (x > 1) { if ( x % 2 == 1) cout << x << “\t”; x--; } } 1o Sem 2012 HNigri - Algoritmos 22 Solução dos Exercícios ... 4: Ler dois números X e Y inteiros do teclado, sendo que X é menor que Y, e listar todos os números inteiros múltiplos de 3 que pertencem aesse intervalo. inicio declare x, y numerico; leia x, y; enquanto x <= y faça inicio se x % 3 = 0 entao escreva x; x <- x + 1; fim; fim. 1o Sem 2012 HNigri - Algoritmos 23 Solução dos Exercícios ... 4: Ler dois números X e Y inteiros do teclado, sendo que X é menor que Y, e listar todos os números inteiros múltiplos de 3 que pertencem a esse intervalo. int main () { int x, y; cout << “Informe dois numeros”; cin >> x >> y; while (x <= y) { if ( x % 3 == 0) cout << x << “\t”; x++; } } 1o Sem 2012 HNigri - Algoritmos 24 Exercícios 5. Uma turma com 50 alunos fizeram 5 provas ao longo do semestre. Faça um programa que leia todas as provas de cada aluno: 1. A nota de cada aluno 2. A média da turma 3. O percentual de alunos com media igual ou superior a 70 % (cada nota vale até 20 ptos) 6. Faça um programa que leia a quantidade notas de um turma. A seguir, leia todas as notas, calcule e imprima: 1. A maior nota da sala 2. A menor nota da sala 3. A nota média da sala Por hoje é só ... que bom ... 1o Sem 2012 HNigri - Algoritmos 25 JÁ QUE VOCÊS QUEREM ... ! ACABOU A BRINCADEIRA – VALENDO PONTOS. QUEM SAIR DA SALA A PARTIR DE AGORA RECEBERÁ ZERO ! Ler dois números X e Y inteiros do teclado, sendo que X pode ser maior que Y ou o contrário (usuário não é gente boa :(, e listar todos os números inteiros múltiplos de 3 que pertencem a esse intervalo. ! . 1o Sem 2012 HNigri - Algoritmos 26
Compartilhar