Post on 22-Apr-2015
Informática e Computação
Estrutura de Repetiçãoaula 12
Réplica do Calculador Diferencial criado por Charles Babbage –Wikipédia
Informática e ComputaçãoEstrutura de Repetição
ESTUDO DE CASOS
Programação de Computadores Estrutura de Repetição
“SOLUÇÃO EXERCÍCIO DA AULA ANTERIOR”
Desenvolver um programa que lê a senha (letras e/ou números) e valida a mesma.
#include <iostream>#include<string>using namespace std;main(){ string senha; do { cout << "Digite um senha: "; cin>>senha; } while(senha!="MARIO");
cout<<"Acertou a senha: "<<senha<<endl; system("PAUSE");} validacao_senha.exe
Desenvolver um programa que lê a senha (letras e/ou
números) e valida a mesma.
#include <iostream>#include<string>using namespace std;main(){ string senha; cout << "Digite uma senha: "; cin>>senha; while(senha!="senha") { if(senha!="senha") { system("cls"); cout<<"\n\nVoce errou tente novamente, digitou : "<<senha<<“\n”; cout << "\n\nDigite uma senha: "; cin>>senha; } } system("cls"); cout<<"\n\nAcertou a senha: "<<senha<<"\n\n"; system("pause");} validacao_senha.exe
Versão
02
Estruturas de Repetição
while do - while for
Uma estrutura de repetição tem 4 componentes:
Informática e Computação
Estrutura de Repetição
int numero = 1;
while (numero <= 10) {
cout << numero;
numero = numero + 1;}
1. Inicialização
2.Condição
3.Sentenças
4.Atualização
Informática e ComputaçãoEstrutura de Repetição
for
início;for (inicialização; teste; atualização)
{comando 1;comando 2;...}
fim;
Sin
taxe
:
comandos
teste0
inicialização
atualização
fim
início
1
• Executa sentenças (comandos) enquanto a condição (expressão ou teste) for verdadeira.
• faz a inicialização o teste e atualização num único comando
Informática e Computação Estrutura de Repetição
Exemplo1 for
int numero;for (numero=1 ; numero<=10; numero++)
{cout << numero<<"\t";}
inicio:
MOSTRAR NA TELA OS NUMEROS DE 1 ATÉ 10
início;for (inicialização; teste; atualização)
{comando 1;comando 2;...} fim;
numero=1 numero<=10 numero++
EXECUÇÃO
Informática e Computação Estrutura de Repetição
Exemplo1 for
int numero;for (numero=1 ; numero<=10; numero++)
{cout << numero<< "\t";}
inicio:
Resultado na tela:
1 2 3 4 5 6 8 9 107
MOSTRAR NA TELA OS NUMEROS DE 1 ATÉ 10
numero=1 numero<=10 numero++
numero
EXECUÇÃO
comandos
testeF
inicialização
atualização
fim
início
V
inicialização
Teste V ou F incrementaVentra
F sai
1234567891011
Programação de Computadores Estrutura de Repetição
Desenvolver um programa que tabula a temperatura em Graus Farenheit para Graus Celsius.
C = 5/9*(F-32)
FVaria de 50 a 150 de 10 em 10oF oC
o50 ?
o60 ?
…
o150 ?
#include <iostream>#include <iomanip>using namespace std;main(){float C;cout<<setiosflags(ios::fixed) // ponto decimal
<<setiosflags(ios::showpoint) //sempre imprimir o ponto decimal
<<setprecision(2); // imprimir com 2 casas decimais
for (int F=50; F<=150;F+=10) { C = 5.0/9*(F-32); cout<<"\t"<<F<<"\t\t "<<C<<"\n\n"; }system("PAUSE");} temperatura1.exe
Desenvolver um programa que tabula a temperatura em Graus Farenheit para Graus Cesius.
C = 5/9*(F-32)
Varia de 50 a 150 de 10 em 10
Estruturas de Repetição
while do - while for
Informática e Computação Estrutura de Repetição
CASOS DE USOS
while (expressão) { ... }– Não há variável contadora– Inicialização, teste ou atualização complexos– Informações da condição obtidas na execução
do { ... } while (expressão);– Executar um bloco pelo menos uma vez– Só é possível avaliar a condição depois de executar– Informações da condição obtidas após execução
Informática e Computação Estrutura de Repetição
CASOS DE USOS
for (inicialização; teste; reinicialização) { ... }
– Há variável contadora de repetições– Inicialização, teste e atualização simples– Separa claramente as instruções de controledas instruções do bloco
Por que usar o for ?
Cabeçalho agrupa:– Inicialização– Condição– Atualização
Separa:– Controle (lógica) de repetição– Código a ser repetido
Informática e Computação Estrutura de Repetição
Programador não“esquece”
nenhuma etapa
Códigoorganizado
Programação de Computadores Estrutura de Repetição
Desenvolver um programa que lê as notas de várias pessoas e determina a maior nota.
Quantidade de pessoas (notas) ?
Usar qual estrutura de repetição ?
Determinação da maior nota ? Ler a 1a nota e armazenar como sendo a maiorLer a 2a nota e se ela for maior, substitui a maior anterior e assim por diante.
Quando parar de entrar com as notas?Usamos um flag (bandeira) ex.: Nota negativa
Variáveis:• Nota• MaiorNota
= -1
MaiorNota = Nota
#include <iostream> // PROCESSA MAIOR NOTAusing namespace std;main(){float NOTA, MAIORNOTA; //estruturas de dados MAIORNOTA = -1; //leia e processe os dados de entrada ( primeira nota e quando parar de ler ) cout<< "(Para finalizar informe uma nota negativa) "<<endl; cout<< "Informe uma nota: "<<endl; cin>>NOTA;while ( NOTA >= 0 ) // repetir enquanto nota por positiva{
if (NOTA > MAIORNOTA)MAIORNOTA = NOTA;
cout<< "Informe outra nota: "; cin>>NOTA;}//exiba os resultados de saídacout<< "A maior nota encontrada foi: "<< MAIORNOTA<<endl;system("PAUSE");} maiornota.exe
Variáveis:• Nota• MaiorNota
Determinação da maior nota ? Ler a 1a nota e armazenar como sendo a maior. Ler a 2a nota e se ela for maior, substitui a maior anterior e assim por diante. Até ler uma nota = -1
//inicialize a maior para que a primeira Nota seja maior
Informática e Computação Estrutura de Repetição
Desafio
Desenvolver um programa que lê as notas de várias pessoas e determina a maior nota bem como
a quantidade de pessoas que tiraram essa nota.
Validar as notas devem ser entre 0 (zero) e 10 (dez)
#include <iostream> // PROCESSA MAIOR NOTAusing namespace std;main(){float NOTA, MAIORNOTA; //estruturas de dados MAIORNOTA = -1; //leia e processe os dados de entrada ( primeira nota e quando parar de ler ) cout<< "(Para finalizar informe uma nota negativa) "<<endl; cout<< "Informe uma nota: "<<endl; cin>>NOTA;while ( NOTA >= 0 ) // repetir enquanto nota por positiva{
if (NOTA > MAIORNOTA)MAIORNOTA = NOTA;
cout<< "Informe outra nota: "; cin>>NOTA;}//exiba os resultados de saídacout<< "A maior nota encontrada foi: "<< MAIORNOTA<<endl;system("PAUSE");} maiornota.exe
Variáveis:• Nota• MaiorNota
//inicialize a maior para que a primeira Nota seja maior
Desafio
Desenvolver um programa que lê as notas de várias pessoas e determina a maior
nota bem como a quantidade de pessoas que tiraram essa nota.
Validar as notas devem ser entre 0 (zero) e 10 (dez)
#include <iostream>using namespace std;main(){ setlocale(LC_ALL,""); float Nota, Maior_Nota=-1; int Quantidade=1; cout<< "\n\nPara finalizar informe uma nota negativa\n\n"; cout<< "Informe uma nota: "; cin>>Nota;
while ( Nota >= 0 ) // repetir enquanto nota por positiva { if (Nota > 10) { cout<<"\nVocê Digitou : "<<Nota<<" Valor Inválido\n"; system("pause"); } else { if (Nota >= Maior_Nota) { if(Maior_Nota==Nota) Quantidade=Quantidade+1; else { Maior_Nota = Nota; Quantidade=1; } } } system("cls"); cout<< "\n\nPara finalizar informe uma nota negativa\n\n"; cout<< "Informe outra nota: "; cin>>Nota; }
cout<< "\n\nA maior nota encontrada foi: "<< Maior_Nota<<"\n\n"; cout<< "A quantidade de Pessoas foi : "<<Quantidade<<"\n\n"; system("pause");}
#include <iostream>using namespace std;main(){ setlocale(LC_ALL,""); float Nota, Maior_Nota=-1; int Quantidade=1; cout<< "\n\nPara finalizar informe uma nota negativa\n\n"; cout<< "Informe uma nota: "; cin>>Nota; while ( Nota >= 0 ) // repetir enquanto nota por positiva { if (Nota > 10) { cout<<"\nVocê Digitou : "<<Nota<<" Valor Inválido\n"; system("pause"); } else { if (Nota >= Maior_Nota) { if(Maior_Nota==Nota) Quantidade=Quantidade+1; else { Maior_Nota = Nota; Quantidade=1; } } } system("cls"); cout<< "\n\nPara finalizar informe uma nota negativa\n\n"; cout<< "Informe outra nota: "; cin>>Nota; } cout<< "\n\nA maior nota encontrada foi: "<< Maior_Nota<<"\n\n"; cout<< "A quantidade de Pessoas foi : "<<Quantidade<<"\n\n"; system("pause");}