Capítulo 14 — Loops com while
Série: Do zero ao jogo comercial com C++ e SFML
Nosso programa já sabe escolher. Agora ele precisa aprender a repetir ações enquanto uma condição permanecer verdadeira.
Nos últimos capítulos nosso programa evoluiu bastante.
Ele começou apenas executando instruções em sequência.
Depois aprendeu a armazenar estado:
int playerHealth = 100;
int playerCoins = 25;
Aprendeu a representar melhor diferentes informações:
float playerSpeed = 4.5f;
bool isAlive = true;
Passou a utilizar constantes:
const int MAX_PLAYER_HEALTH = 100;
Começou a transformar dados:
playerHealth -= 20;
playerCoins += 10;
Aprendeu a construir expressões:
int finalDamage = (baseDamage + bonusDamage) * criticalMultiplier;
Depois passou a tomar decisões:
if (playerHealth <= 0)
{
std::cout << "Player defeated." << std::endl;
}
Aprendeu alternativas com:
if (...)
{
}
else
{
}
e múltiplas opções com:
switch (...)
{
}
Por fim, começamos a utilizar tipos mais expressivos:
enum class Season
{
Spring,
Summer,
Autumn,
Winter
};
Mas nosso programa ainda possui uma limitação enorme.
Ele executa cada instrução uma vez, a menos que nós mesmos a repitamos no código.
Imagine que queremos mostrar cinco dias:
Day 1
Day 2
Day 3
Day 4
Day 5
Poderíamos escrever:
std::cout << "Day 1" << std::endl;
std::cout << "Day 2" << std::endl;
std::cout << "Day 3" << std::endl;
std::cout << "Day 4" << std::endl;
std::cout << "Day 5" << std::endl;
Funciona.
Mas e se fossem:
10 dias?
100 dias?
1000 atualizações?
Copiar e colar instruções claramente não é uma boa solução.
Precisamos ensinar nosso programa a:
repetir uma ação enquanto uma condição permanecer verdadeira.
É aqui que entra:
while
1. Começando pelo problema
Queremos produzir:
Day 1
Day 2
Day 3
Day 4
Day 5
Sem repetir manualmente cinco std::cout.
Precisamos de alguma informação que represente:
dia atual
Podemos começar:
int day = 1;
Também precisamos saber até quando repetir.
const int TOTAL_DAYS = 5;
Nossa regra pode ser descrita assim:
ENQUANTO day for menor ou igual a TOTAL_DAYS
mostrar o dia atual
avançar para o próximo dia
Essa frase já está muito próxima do código que escreveremos.
2. Conhecendo while
A estrutura fundamental é:
while (condition)
{
// código repetido
}
Podemos ler:
enquanto a condição for verdadeira, execute o bloco.
Ou conceitualmente:
avaliar condição
│
├── true
│ ↓
│ executar bloco
│ ↓
│ voltar à condição
│
└── false
↓
sair do loop
Essa repetição é chamada de loop.
3. Nosso primeiro while
#include <iostream>
int main()
{
int day = 1;
const int TOTAL_DAYS = 5;
while (day <= TOTAL_DAYS)
{
std::cout << "Day " << day << std::endl;
day++;
}
return 0;
}
Resultado esperado:
Day 1
Day 2
Day 3
Day 4
Day 5
Conseguimos repetir uma ação sem escrever cinco vezes o mesmo std::cout.
4. Vamos desmontar o loop
Temos:
int day = 1;
Esse é o estado inicial.
Depois:
while (day <= TOTAL_DAYS)
Essa é a condição que decide se o loop continua.
Dentro:
std::cout << "Day " << day << std::endl;
Essa é a ação repetida.
Depois:
day++;
Atualizamos o estado.
Podemos visualizar:
INICIALIZAÇÃO
day = 1
↓
CONDIÇÃO
day <= TOTAL_DAYS?
↓ true
AÇÃO
mostrar day
↓
ATUALIZAÇÃO
day++
↓
voltar para a condição
Até que a condição se torne falsa.
5. Primeira iteração
Começamos:
day = 1
TOTAL_DAYS = 5
A condição:
day <= TOTAL_DAYS
vira:
1 <= 5
Resultado:
true
Então executamos:
std::cout << "Day " << day << std::endl;
Saída:
Day 1
Depois:
day++;
Agora:
day = 2
6. Segunda iteração
Voltamos para:
while (day <= TOTAL_DAYS)
Agora:
2 <= 5
Resultado:
true
Executamos:
Day 2
Depois:
day++;
Agora:
day = 3
O mesmo processo continua.
7. Quando o loop termina?
Depois de mostrar:
Day 5
executamos:
day++;
Então:
day = 6
Voltamos para a condição:
6 <= 5
Resultado:
false
Agora o corpo do while não é executado novamente.
O programa continua depois do loop.
8. Podemos mostrar isso explicitamente
#include <iostream>
int main()
{
int day = 1;
const int TOTAL_DAYS = 5;
while (day <= TOTAL_DAYS)
{
std::cout << "Day " << day << std::endl;
day++;
}
std::cout << "Simulation finished." << std::endl;
return 0;
}
Resultado:
Day 1
Day 2
Day 3
Day 4
Day 5
Simulation finished.
Agora fica claro que o programa sai do loop quando a condição se torna falsa.
9. Loop significa repetição controlada
A palavra importante não é apenas:
repetição
É:
repetição controlada
Temos:
estado
+
condição
+
ação
+
atualização
Essas partes controlam o comportamento.
Se uma delas estiver errada, o loop pode produzir resultados inesperados.
10. A condição é uma expressão booleana
Assim como no if, temos:
day <= TOTAL_DAYS
Essa expressão produz:
true
ou:
false
O while não precisa de um tipo especial de condição.
Ele utiliza uma expressão booleana.
Portanto:
while (day <= TOTAL_DAYS)
funciona conceitualmente como:
enquanto essa expressão produzir true
→ continue repetindo
11. while testa antes de executar
Essa característica é muito importante.
Considere:
int day = 10;
const int TOTAL_DAYS = 5;
Agora:
while (day <= TOTAL_DAYS)
{
std::cout << "Day " << day << std::endl;
day++;
}
Antes de executar o bloco pela primeira vez, o programa testa:
10 <= 5
Resultado:
false
Então o corpo do loop executa:
zero vezes
12. Um while pode não executar nenhuma vez
Esse é um ponto fundamental.
while significa:
teste a condição primeiro.
Se ela já começar falsa:
0 iterações
Isso pode ser exatamente o comportamento que queremos.
Por exemplo:
int itemsToProcess = 0;
while (itemsToProcess > 0)
{
// processar item
}
Se não existem itens, não há nada para repetir.
13. O que é uma iteração?
Cada execução completa do corpo do loop é chamada de iteração.
No nosso exemplo:
Day 1 → iteração 1
Day 2 → iteração 2
Day 3 → iteração 3
Day 4 → iteração 4
Day 5 → iteração 5
Então:
while (day <= TOTAL_DAYS)
executou:
5 iterações
Esse termo aparecerá muitas vezes daqui para a frente.
14. O contador
Nossa variável:
int day = 1;
também está funcionando como um contador.
Ela ajuda a controlar:
em qual repetição estamos
A cada iteração:
day++;
faz:
1 → 2 → 3 → 4 → 5 → 6
Quando chega a 6, a condição deixa de ser verdadeira.
15. A atualização é essencial
Agora remova:
day++;
Teremos:
#include <iostream>
int main()
{
int day = 1;
const int TOTAL_DAYS = 5;
while (day <= TOTAL_DAYS)
{
std::cout << "Day " << day << std::endl;
}
return 0;
}
O que acontece?
Começamos:
day = 1
Testamos:
1 <= 5
→ true
Imprimimos:
Day 1
Voltamos.
Mas:
day
continua sendo:
1
Então:
1 <= 5
→ true
de novo.
E de novo.
E de novo.
16. Criamos um loop infinito
Nosso programa continua repetindo:
Day 1
Day 1
Day 1
Day 1
Day 1
...
porque nada faz a condição se tornar falsa.
Isso é um infinite loop, ou loop infinito.
Conceitualmente:
condição verdadeira
↓
executa
↓
estado não muda
↓
condição continua verdadeira
↓
executa
↓
...
17. Loop infinito não significa necessariamente "travamento"
Um programa em loop infinito continua executando.
Dependendo do que ele faz, pode parecer que:
travou
Mas talvez esteja apenas repetindo algo indefinidamente.
Em nosso exemplo, o console pode continuar recebendo:
Day 1
Day 1
Day 1
...
Isso é diferente de um processo que deixou completamente de executar.
18. Como interromper durante o desenvolvimento
Se você criar acidentalmente um loop infinito no Visual Studio, interrompa a execução pelo próprio ambiente de depuração/console conforme a forma utilizada para iniciar o programa.
Depois investigue.
Não simplesmente reinicie e repita o mesmo código.
Pergunte:
Qual é a condição?
Qual estado influencia essa condição?
Esse estado está sendo atualizado?
Existe algum caminho que torne a condição falsa?
Esse é o raciocínio importante.
19. Método para investigar loops infinitos
Podemos utilizar:
1. Identificar a condição.
2. Identificar as variáveis usadas nela.
3. Observar o valor inicial.
4. Encontrar onde esses valores mudam.
5. Simular algumas iterações manualmente.
6. Verificar se a condição pode se tornar falsa.
No nosso caso:
condition:
day <= TOTAL_DAYS
day começa:
1
TOTAL_DAYS:
5
day muda?
não
logo:
1 <= 5 será sempre true
Encontramos a causa.
20. Restaurando a atualização
while (day <= TOTAL_DAYS)
{
std::cout << "Day " << day << std::endl;
day++;
}
Agora:
day
1 → 2 → 3 → 4 → 5 → 6
e:
6 <= 5
→ false
O loop termina.
21. A atualização não precisa ser ++
Podemos escrever:
day = day + 1;
ou:
day += 1;
ou:
day++;
No contexto atual, todas podem representar o avanço de uma unidade.
Vamos utilizar:
day++;
porque já aprendemos o operador de incremento e ele comunica claramente a intenção.
22. O estado pode mudar de outras formas
Um while não exige obrigatoriamente um contador.
Imagine:
bool isRunning = true;
while (isRunning)
{
// repetir enquanto isRunning for true
}
Agora a continuidade do loop depende de:
isRunning
e não de um número.
Isso começa a ficar interessante para jogos.
Mas ainda não vamos construir nosso Game Loop.
23. Um vislumbre do futuro
Um jogo real possui algo conceitualmente parecido com:
enquanto o jogo estiver rodando
processar eventos
atualizar estado
renderizar
Talvez algo como:
while (isRunning)
{
// process input
// update game
// render
}
Mas ainda não temos:
window
input
rendering
time
SFML
Então não vamos fingir que já temos um Game Loop completo.
Primeiro estamos aprendendo o mecanismo básico de repetição.
24. while e estado trabalham juntos
Considere:
int energy = 5;
while (energy > 0)
{
std::cout << "Energy: " << energy << std::endl;
energy--;
}
Resultado:
Energy: 5
Energy: 4
Energy: 3
Energy: 2
Energy: 1
Depois:
energy = 0
e:
0 > 0
→ false
O loop termina.
25. Outro exemplo contextual: recursos produzidos
Podemos simular uma produção simples:
#include <iostream>
int main()
{
int producedResources = 0;
const int TARGET_RESOURCES = 5;
while (producedResources < TARGET_RESOURCES)
{
producedResources++;
std::cout << "Resources Produced: " << producedResources << std::endl;
}
return 0;
}
Resultado:
Resources Produced: 1
Resources Produced: 2
Resources Produced: 3
Resources Produced: 4
Resources Produced: 5
Ainda não existe um sistema real de produção.
O exemplo apenas mostra outra condição de repetição.
26. A posição da atualização altera o resultado
Compare:
while (producedResources < TARGET_RESOURCES)
{
producedResources++;
std::cout << producedResources << std::endl;
}
com:
while (producedResources < TARGET_RESOURCES)
{
std::cout << producedResources << std::endl;
producedResources++;
}
Se:
producedResources = 0
a primeira versão imprime:
1
2
3
4
5
A segunda:
0
1
2
3
4
O loop pode executar a mesma quantidade de vezes, mas o momento da atualização muda o valor observado.
27. Erros de limite começam a aparecer
Imagine que queremos:
Day 1
Day 2
Day 3
Day 4
Day 5
Escrevemos:
while (day < TOTAL_DAYS)
Com:
day = 1
TOTAL_DAYS = 5
Teremos:
1 < 5
2 < 5
3 < 5
4 < 5
Mas:
5 < 5
→ false
Saída:
Day 1
Day 2
Day 3
Day 4
O Day 5 desapareceu.
28. < e <= mudam a fronteira
Compare:
while (day < TOTAL_DAYS)
com:
while (day <= TOTAL_DAYS)
Para:
day = 1
TOTAL_DAYS = 5
temos:
< → 1, 2, 3, 4
<= → 1, 2, 3, 4, 5
Uma única igualdade muda o conjunto de iterações.
Esse tipo de problema é muito comum em loops.
29. Off-by-one errors
Erros em que executamos uma iteração a mais ou a menos são frequentemente chamados de:
off-by-one errors.
Exemplo:
esperado:
5 iterações
obtido:
4
ou:
esperado:
5
obtido:
6
Eles podem surgir por diferenças como:
<
<=
>
>=
ou por valor inicial incorreto.
30. Teste as bordas do loop
Para:
while (day <= TOTAL_DAYS)
com:
day = 1
TOTAL_DAYS = 5
verifique:
primeiro valor:
1
último valor válido:
5
primeiro valor inválido:
6
Temos:
1 <= 5 → true
5 <= 5 → true
6 <= 5 → false
Esse pequeno raciocínio já ajuda a evitar muitos erros.
31. O valor inicial também importa
Considere:
int day = 0;
const int TOTAL_DAYS = 5;
while (day <= TOTAL_DAYS)
{
std::cout << "Day " << day << std::endl;
day++;
}
Resultado:
Day 0
Day 1
Day 2
Day 3
Day 4
Day 5
Temos seis iterações.
Talvez:
Day 0
não faça sentido para nosso exemplo.
Então o problema não estava apenas na condição.
Também estava no estado inicial.
32. Um loop é a combinação de várias decisões
Cada iteração começa perguntando:
a condição ainda é verdadeira?
Então, conceitualmente:
while
utiliza repetidamente a mesma ideia booleana que aprendemos com:
if
A diferença é:
if
→ avalia e segue adiante
enquanto:
while
→ avalia
→ executa
→ volta
→ avalia novamente
Essa repetição da decisão é o coração do loop.
33. if dentro de while
Como já conhecemos decisões, podemos combinar os conceitos.
Exemplo:
#include <iostream>
int main()
{
int day = 1;
const int TOTAL_DAYS = 5;
while (day <= TOTAL_DAYS)
{
std::cout << "Day " << day << std::endl;
if (day == 3)
{
std::cout << "Special event." << std::endl;
}
day++;
}
return 0;
}
Resultado:
Day 1
Day 2
Day 3
Special event.
Day 4
Day 5
Agora temos uma decisão acontecendo dentro de cada repetição.
34. Não confunda repetição com duplicação de lógica
O loop existe para repetir uma regra.
Não para esconder código enorme dentro dele.
Por exemplo, não devemos pensar:
while existe
↓
coloque todo o jogo dentro de um bloco gigantesco
Mais tarde nosso código será organizado em funções, classes e sistemas.
O loop coordenará comportamentos.
Não será uma desculpa para concentrar tudo em um único lugar.
35. Ainda não precisamos de funções
Talvez nosso main.cpp já esteja começando a crescer.
Isso é proposital.
Quando chegarmos ao Capítulo 17, o problema de organização ficará mais evidente.
Por enquanto precisamos enxergar:
repetição
condição
atualização
sem esconder esses conceitos dentro de funções prematuramente.
36. Ainda não precisamos de SFML
Poderíamos tentar criar agora:
while (window.isOpen())
{
}
Mas isso introduziria:
SFML
Window
Events
Rendering
Lifecycle
antes de termos aprendido o loop isoladamente.
Não faremos isso.
Quando chegarmos à janela gráfica, o while já será um conceito conhecido.
Então poderemos nos concentrar no novo problema.
37. Microdesafio — dias
Crie:
int day = 1;
const int TOTAL_DAYS = 7;
Utilize while para mostrar:
Day 1
Day 2
Day 3
Day 4
Day 5
Day 6
Day 7
Tente antes de olhar uma possível solução.
38. Uma possível solução
int day = 1;
const int TOTAL_DAYS = 7;
while (day <= TOTAL_DAYS)
{
std::cout << "Day " << day << std::endl;
day++;
}
Valide:
primeiro:
1
último:
7
depois:
8 <= 7
→ false
39. Microdesafio — energia
Comece:
int energy = 5;
Enquanto:
energy > 0
mostre o valor e diminua uma unidade.
Resultado:
Energy: 5
Energy: 4
Energy: 3
Energy: 2
Energy: 1
Uma possível solução:
while (energy > 0)
{
std::cout << "Energy: " << energy << std::endl;
energy--;
}
40. Microdesafio — evento no terceiro dia
Utilize:
int day = 1;
const int TOTAL_DAYS = 5;
Dentro do while, quando:
day == 3
mostre:
Special event.
Resultado:
Day 1
Day 2
Day 3
Special event.
Day 4
Day 5
Você já possui todo o conhecimento necessário.
41. Erro proposital — loop infinito
Crie temporariamente:
int day = 1;
const int TOTAL_DAYS = 5;
while (day <= TOTAL_DAYS)
{
std::cout << "Day " << day << std::endl;
}
Execute apenas o suficiente para observar o problema.
Interrompa.
Depois responda:
Qual variável controla a condição?
Ela está mudando?
O que deveria fazê-la alcançar 6?
Por que a condição nunca fica false?
Finalmente restaure:
day++;
42. Erro proposital — condição falsa desde o início
Teste:
int day = 10;
const int TOTAL_DAYS = 5;
while (day <= TOTAL_DAYS)
{
std::cout << "Day " << day << std::endl;
day++;
}
O bloco não deve executar.
Isso não é um bug.
É a consequência correta de uma condição que começou falsa.
43. Erro proposital — um dia a menos
Teste:
int day = 1;
const int TOTAL_DAYS = 5;
while (day < TOTAL_DAYS)
{
std::cout << "Day " << day << std::endl;
day++;
}
Resultado:
Day 1
Day 2
Day 3
Day 4
Agora troque:
<
por:
<=
e explique por que Day 5 aparece.
44. Código final do capítulo
Vamos manter uma pequena simulação de dias com um evento intermediário:
#include <iostream>
int main()
{
int day = 1;
const int TOTAL_DAYS = 5;
std::cout << "=== SIMULATION START ===" << std::endl;
while (day <= TOTAL_DAYS)
{
std::cout << "Day " << day << std::endl;
if (day == 3)
{
std::cout << "A special event happened." << std::endl;
}
day++;
}
std::cout << "Simulation finished." << std::endl;
return 0;
}
Resultado esperado:
=== SIMULATION START ===
Day 1
Day 2
Day 3
A special event happened.
Day 4
Day 5
Simulation finished.
45. O que esse código representa?
Temos:
estado inicial
↓
day = 1
Depois:
condição de continuidade
↓
day <= TOTAL_DAYS
Dentro:
ação repetida
↓
mostrar o dia
Também:
decisão durante a iteração
↓
day == 3?
Finalmente:
atualização
↓
day++
Isso já nos dá um pequeno modelo de simulação.
46. A arquitetura continua mínima
Nossa estrutura ainda pode continuar:
CppGameEngine/
└── main.cpp
Não precisamos criar:
LoopManager
SimulationManager
DaySystem
IterationService
Estamos apenas aprendendo um mecanismo fundamental da linguagem.
Quando o sistema real de tempo existir, teremos problemas concretos muito diferentes.
47. Validando a implementação
Salve:
Ctrl + S
Faça Build:
Ctrl + Shift + B
Confirme:
Build succeeded
Execute:
Ctrl + F5
Valide:
Day 1
Day 2
Day 3
evento
Day 4
Day 5
fim
Depois faça os testes de borda.
48. Cenários de validação
Use pelo menos estes cenários:
Estado inicialLimiteResultado esperado155 iterações551 iteração650 iterações111 iteração
Esses casos ajudam a verificar a fronteira da condição.
49. Cenário especial: limite zero
Considere:
int day = 1;
const int TOTAL_DAYS = 0;
A condição:
1 <= 0
começa falsa.
Portanto:
0 iterações
Isso é coerente com nossa regra.
50. Checklist de compreensão
Antes de avançar, tente responder:
O que é um loop?
Para que serve
while?Quando a condição do
whileé avaliada?O corpo pode executar zero vezes?
O que é uma iteração?
Qual papel
daydesempenha no nosso exemplo?Por que
day++é importante?Como surge um loop infinito?
Por que
<e<=podem produzir quantidades diferentes de iterações?O que é um erro off-by-one?
Por que o valor inicial também importa?
Como
ifpode ser utilizado dentro dewhile?Por que ainda não estamos construindo nosso Game Loop real?
Qual é a relação entre estado, condição e atualização?
Se consegue explicar essas respostas com suas próprias palavras, podemos continuar.
51. Git
Depois de validar:
git status
Adicione o arquivo:
git add CppGameEngine/main.cpp
Ajuste o caminho caso sua estrutura local seja diferente.
Commit sugerido:
git commit -m "feat: add conditional repetition with while loop"
Esse commit representa uma nova capacidade:
nosso programa agora consegue repetir ações enquanto uma condição permanecer verdadeira.
52. Atualizando o CHANGELOG
Em [Unreleased]:
### Added
- Added controlled repetition using `while`.
- Added day-based simulation with loop state updates.
- Added conditional event handling inside a loop.
- Added boundary validation for loop conditions.
- Added intentional infinite-loop and off-by-one exercises.
Depois:
git add CHANGELOG.md
git commit -m "docs: update changelog with while loop examples"
O ROADMAP técnico ainda não precisa de alteração para esse avanço isolado.
53. O que aprendemos?
Antes deste capítulo nosso programa conseguia:
armazenar
calcular
comparar
decidir
escolher
Agora também consegue:
repetir
Conhecemos:
while (condition)
{
}
e aprendemos que um loop depende de elementos como:
estado inicial
+
condição
+
ação repetida
+
atualização do estado
Também aprendemos que:
a condição é avaliada antes de cada iteração;
o bloco pode executar zero vezes;
cada repetição do corpo é uma iteração;
a variável de controle precisa evoluir quando a condição depende dela;
esquecer a atualização pode causar loop infinito;
um loop infinito pode parecer um programa travado;
<e<=mudam a fronteira da repetição;erros off-by-one são comuns;
valores de fronteira precisam ser testados;
ifewhilepodem trabalhar juntos;repetição controlada será fundamental para nossos sistemas futuros.
Conclusão
Até aqui, nosso programa precisava receber cada instrução explicitamente.
Se quiséssemos cinco dias:
std::cout << "Day 1" << std::endl;
std::cout << "Day 2" << std::endl;
std::cout << "Day 3" << std::endl;
std::cout << "Day 4" << std::endl;
std::cout << "Day 5" << std::endl;
Agora podemos representar a regra:
int day = 1;
while (day <= TOTAL_DAYS)
{
std::cout << "Day " << day << std::endl;
day++;
}
A diferença é enorme.
Antes escrevíamos cada repetição.
Agora descrevemos como repetir.
Podemos visualizar:
estado
↓
condição
↓
ação
↓
atualização
↓
condição novamente
↓
...
↓
condição falsa
↓
continuar programa
Esse padrão aparecerá em inúmeras situações:
simulações
processamento de eventos
espera controlada
tentativas
menus
estados
recursos
NPCs
sistemas de tempo
Game Loop
Mas existe outra situação extremamente comum.
Nosso loop atual utiliza:
int day = 1;
while (day <= TOTAL_DAYS)
{
...
day++;
}
Temos:
inicialização
condição
atualização
espalhadas em três lugares.
Para loops baseados em contadores conhecidos, C++ oferece uma estrutura que reúne essas três partes de maneira muito conveniente.
É aí que chegamos ao próximo capítulo.
Próximo capítulo
Capítulo 15 — Loops com for
Série: Do zero ao jogo comercial com C++ e SFML
Vamos partir exatamente deste código:
int day = 1;
while (day <= TOTAL_DAYS)
{
std::cout << "Day " << day << std::endl;
day++;
}
e observar que temos:
inicialização
↓
int day = 1
condição
↓
day <= TOTAL_DAYS
atualização
↓
day++
Quando essas três partes pertencem claramente à mesma repetição, podemos expressá-las com:
for
Chegaremos a algo parecido com:
for (int day = 1; day <= TOTAL_DAYS; day++)
{
std::cout << "Day " << day << std::endl;
}
Mas não vamos apenas trocar a sintaxe.
Vamos entender:
por que
forexiste;como suas três partes funcionam;
quando ele comunica melhor a intenção que
while;quando
whilecontinua sendo mais adequado;como surgem erros de limite;
como fazer contagens crescentes e decrescentes;
como variar o passo;
como testar início, fim e número de iterações;
e por que compreender
whileprimeiro tornaformuito mais fácil de entender.
Nosso programa já sabe repetir enquanto uma condição permanecer verdadeira.
No próximo capítulo aprenderemos uma forma especialmente conveniente de repetir quando inicialização, condição e atualização pertencem claramente ao mesmo contador.
Comentários
Ainda não há comentários. Sê o primeiro a comentar!