Buscar

[Prof. Emiliana]aula05

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 26 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 26 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 26 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Comandos de Repetição: while
Programação de Computadores I
Emiliana Mara Lopes Simões
simoes.eml@gmail.com
Universidade Federal de Ouro Preto
setembro 2009
Comandos de Repetição
Problema: Dada uma turma de 10 alunos faça um programa
que leia as notas destes alunos em um teste e
1 Calcula e imprime a soma de todas as notas;
2 Calcula e imprime a média da turma no teste.
Comandos de Repetição
Uma solução trabalhosa seria.....
main( ){
float nota, media, total;
total = 0;
//leitura da primeira nota
cout<<“Insira a nota do aluno 1: ”;
cin>>nota;
total += nota;
//leitura da segunda nota
cout<<“Insira a nota do aluno 2: ”;
cin>>nota;
total += nota;
Comandos de Repetição
//leitura da terceira nota
cout<<“Insira a nota do aluno 3: ”;
cin>>nota;
total += nota;
//leitura da quarta nota
cout<<“Insira a nota do aluno 4: ”;
cin>>nota;
total += nota;
//leitura da quinta nota
cout<<“Insira a nota do aluno 5: ”;
cin>>nota;
total += nota;
//leitura da sexta nota
cout<<“Insira a nota do aluno 6: ”;
cin>>nota;
total += nota;
Comandos de Repetição
//leitura da sétima nota
cout<<“Insira a nota do aluno 7: ”;
cin>>nota;
total += nota;
//leitura da oitava nota
cout<<“Insira a nota do aluno 8: ”;
cin>>nota;
total += nota;
//leitura da nona nota
cout<<“Insira a nota do aluno 9: ”;
cin>>nota;
total += nota;
Comandos de Repetição
//leitura da décima nota
cout<<“Insira a nota do aluno 10: ”;
cin>>nota;
total += nota;
media = total/10;
cout<<“A soma das notas e: ”<<total<<endl;
cout<<“A media das notas e: ”<<media;
system(“pause”);
}
.... e enfim terminamos o programa!!!!!
Comandos de Repetição
E se a turma tivesse 100 alunos???????
Vejam que repetimos várias vezes os mesmos comandos
//leitura da n-ésima nota
cout<<“Insira a nota do aluno n: ”;
cin>>nota;
total += nota;
Comandos de Repetição
Os comandos de repetição (loop) são um recurso que
permite que um certo trecho do código de um programa seja
repetido um certo número de vezes
Na linguagem C++ existem três comandos de repetição:
1 while
2 do-while
3 for
Comandos de Repetição
Os comandos de repetição (loop) são um recurso que
permite que um certo trecho do código de um programa seja
repetido um certo número de vezes
Na linguagem C++ existem três comandos de repetição:
1 while
2 do-while
3 for
Comandos de Repetição: while
O comando while permite que um certo trecho de programa
seja executado ENQUANTO uma certa condição for
verdadeira
A forma geral do comando while é:
while(<condição>)
<comando1>; //comando que é repetido
<comando2>;//comando executado após o while
Comandos de Repetição: while
No lugar do comando1 no corpo do while pode ser colocado
um bloco de comandos
A forma geral do comando while ficaria assim:
while(<condição>){
<comando1>;
<comando2>;
<comando3>;
}
<comando4>;//comando executado após o while
Funcionamento do while
1 Testa a condição
2 Se a condição for falsa então:
pula todos os comandos do bloco do while
passa a executar os comandos após o bloco do while
3 Se a condição for verdadeira então:
executa cada um dos comandos do bloco do while
volta ao passo 1
Exemplo 1
Fazer um programa para o exemplo do início da aula utilizando
while
Problema: Dada uma turma de 10 alunos faça um programa que
leia as notas destes alunos em um teste e
1 Calcula e imprime a soma de todas as notas;
2 Calcula e imprime a média da turma no teste.
Exemplo 1
main( ){
int cont = 1; //conta o número de notas lidas
float nota, media, total;
total = 0;
while(cont <= 10){
cout<<“Insira a nota do aluno ”<<cont<<“: ”;
cin>>nota;
total += nota; //o mesmo que: total = total + nota;
cont++; //o mesmo que: cont = cont + 1;
}
Exemplo 1
media = total/10;
cout<<“A soma das notas e: ”<<total<<endl;
cout<<“A media das notas e: ”<<media;
system(“pause”);
}
Exemplo 1
Atenção especial a duas variáveis:
Variável Contadora
int cont: Controla o número de vezes que os comandos do while
serão executados.
Variável Acumuladora
float total: Acumula os valores de várias notas lidas.
Erro comum
Não inicializar as variáveis contadoras e acumuladoras pode causar
erro de lógica!
Exemplo 2
Fazer um programa parecido com o Exemplo 1, porém agora
não se sabe com antecedência quantos alunos há na turma
Problema: Faça um programa que leia as notas dos alunos de uma
turma em um teste e
1 Calcula e imprime a soma de todas as notas;
2 Calcula e imprime a média da turma no teste.
Quantos alunos há na turma????
Exemplo 2
Nestes casos normalmente usamos um valor sentinela (flag)
para indicar o fim da entrada de dados
A idéia é: Após o usuário digitar todas as notas válidas ele
digitará como “última nota” um valor (sentinela) que indica o
fim da passagem de notas
Exemplo de uma sequência de valores de entrada:
10,0 7,5 6,0 9,75 0,0 -1
Valor sentinela
Exemplo 2
Nestes casos normalmente usamos um valor sentinela (flag)
para indicar o fim da entrada de dados
A idéia é: Após o usuário digitar todas as notas válidas ele
digitará como “última nota” um valor (sentinela) que indica o
fim da passagem de notas
Exemplo de uma sequência de valores de entrada:
10,0 7,5 6,0 9,75 0,0 -1 Valor sentinela
Exemplo 2
main( ){
int numAlunos = 0;
float nota, media, total;
total = 0;
cout<<“Insira uma nota ou -1 para sair: ”;
cin>>nota;
while(nota != -1){
total += nota; //o mesmo que: total = total + nota;
numAlunos++; //o mesmo que: numAlunos = numAlunos + 1;
cout<<“Insira uma nota ou -1 para sair: ”;
cin>>nota;
}
Exemplo 2
if(numAlunos > 0){
media = total/numAlunos;
cout<<“A soma das notas e: ”<<total<<endl;
cout<<“A media das notas e: ”<<media<<endl;
}
else
cout<<“Nenhuma nota lida”<<endl;
system(“pause”);
}
Exemplo 2
Erro comum
Escolher um valor sentinela que é também um valor de dado válido
é um erro de lógica!
No Exemplo 2, por exemplo, o valor que indica o fim da
entrada de dados não pode ser 1, pois 1 é uma nota válida
Exemplo 3
Problema: Imprimir todos os números pares no intervalo
[2,n], sendo n um valor passado pelo usuário.
main( ){
int n, cont;
cont = 2;
cout<<“Digite o valor de n: ”;
cin>>n;
while(cont <= n){
cout<<cont<<endl;
cont += 2; //o mesmo que: cont = cont + 2;
}
system(“pause”);
}
Exemplo 4
Problema: Imprimir todos os números pares no intervalo
[2,n], sendo n um valor passado pelo usuário. Além disso, os
números pares deverão aparecer na ordem decrescente.
main( ){
int n;
cout<<“Digite o valor de n: ”;
cin>>n;
if((n%2) != 0)
n--;
Exemplo 4
while(n >= 2){
cout<<n<<endl;
n -= 2; //o mesmo que: n = n - 2;
}
system(“pause”);
}
Observação
A cada execução do while o valor de n está sendo decrementado de
dois.
Exercícios
1 Faça um programa que solicite ao usuário 10 números inteiros
e, ao final, informe a quantidade de números ímpares e pares
lidos.
2 Altere o programa anterior para que seja calculado também a
soma dos números pares e a média dos números ímpares.
3 Uma empresa decide dar um aumento de 30% aos funcionários
com salários inferiores a R$500,00. Faça um programa que leia
do teclado o salário de um funcionário (enquanto não for
inserido um salário negativo) e mostre o valor do salário
reajustado ou uma mensagem, caso ele não tenha direito ao
reajuste.
4 Faça um programa que calcule e escreva o valor de S:
S =
1
1
+
3
2
+
5
3
+
7
4
+ ... +
99
50

Outros materiais