
Prof. Paulo Rettore
Universidade Federal de Lavras
GAC124 — Introdução aos Algoritmos
while e do-while.Toda repetição precisa de uma condição que possa mudar.
A condição é avaliada.
Os comandos são executados.
Algo muda antes do próximo teste.
Pergunta-chave: o que fará a condição ficar falsa?
while (condicao) {
// comandos que podem se repetir
}O corpo executa e o teste volta a acontecer.
O corpo pode não executar nenhuma vez.
do {
// comandos que se repetem
} while (condicao);O bloco acontece pelo menos uma vez. O ponto e vírgula depois da condição é obrigatório.
Use while quando o corpo pode não precisar ser executado.
int nota;
cin >> nota;
while (nota < 0 || nota > 10) {
cout << "Nota inválida. Digite novamente: ";
cin >> nota;
}
cout << "Nota aceita: " << nota;O laço não executa nenhuma vez. A entrada já está correta.
O programa repete a leitura até obter um valor entre 0 e 10.
Use do-while quando a ação precisa acontecer pelo menos uma vez.
int opcao;
do {
cout << "1 - Cadastrar\\n";
cout << "2 - Listar\\n";
cout << "0 - Sair\\n";
cin >> opcao;
} while (opcao != 0);
cout << "Programa encerrado.";O menu aparece antes do primeiro teste. Depois de cada escolha, a condição decide se ele será mostrado novamente.
| Estrutura | Quando testa? | Mínimo de execuções |
|---|---|---|
while | Antes do corpo | Zero |
do-while | Depois do corpo | Uma |
Escolha a estrutura que representa melhor a leitura do problema.
Conta quantas vezes algo acontece.
contador++
Guarda um resultado parcial.
soma += valor
Começa antes do laço.
soma = 0
int contador = 0;
int soma = 0;
while (contador < 5) {
soma += contador;
contador++;
}Uma sentinela é um valor especial que sinaliza o fim da leitura.
int valor, soma = 0;
cin >> valor;
while (valor != -1) {
soma += valor;
cin >> valor;
}
cout << soma;-1 encerra a entrada; ele não entra na soma.
Um laço pode estar dentro de outro. O laço interno completa suas voltas para cada volta do laço externo.
int linha = 1;
while (linha <= 3) {
int coluna = 1;
while (coluna <= 4) {
cout << "* ";
coluna++;
}
cout << "\n";
linha++;
}Use indentação e nomes que revelem qual variável controla cada laço.
Leia valores até receber a sentinela -1. Ao final, mostre a soma e a média dos valores válidos.
Antes de programar, escreva a condição de repetição e a atualização da leitura.
Leia valores até receber -1 e mostre soma, quantidade e média dos valores válidos.
Gabarito orientador: Use uma sentinela, um acumulador e um contador. Se nenhum valor for informado, não divida por zero.
Use estas fontes para consultas pontuais depois da aula:
Os slides completos, o Campus Virtual e o DREDD continuam sendo as fontes principais da disciplina.
PRÓXIMA AULA
Prof. Paulo Rettore
GAC124 — Introdução aos Algoritmos