repete — Laços e Iteração
Fundamentos do XanaScript • Aula 10 de 20
Laços executam um bloco repetidamente. O XanaScript tem dois: repete-na-moral (for) e repete-enquanto (while).
repete-na-moral (for) — "quando você sabe quantas vezes"
repete-na-moral (cria i = 0; i < 5; i = i + 1) {
grita-ae(i)
}Saída: 0 1 2 3 4
Três partes: inicialização (cria i = 0), condição (i < 5) e passo (i = i + 1). O loop roda enquanto a condição for verdadeira.
Por que três partes?
Cada parte responde uma pergunta: onde começa? até quando? como anda? Separar isso torna o laço previsível — o contador não fica escondido dentro do corpo.
A forma mais comum: i++
repete-na-moral (cria i = 10; i > 0; i--) {
grita-ae(i)
}Percorrendo arrays
Este é o padrão nº 1 de laços na prática — passar por cada elemento:
cria frutas = ["maçã", "banana", "uva"]
repete-na-moral (cria i = 0; i < tamanho(frutas); i++) {
grita-ae(frutas[i])
}repete-enquanto (while) — "enquanto a condição for verdadeira"
Use quando você não sabe quantas vezes vai rodar — só sabe a condição de parada:
cria i = 0
repete-enquanto (i < 5) {
grita-ae(i)
i = i + 1
}A diferença essencial
| Laço | Quando usar |
|---|---|
repete-na-moral |
quantidade conhecida / percorrer coleção |
repete-enquanto |
parada depende de condição que muda durante o loop |
mete-o-pe (break) e segue-o-baile (continue)
mete-o-pe sai do laço; segue-o-baile pula pra próxima iteração:
repete-na-moral (cria i = 0; i < 10; i = i + 1) {
se-pah (i == 3) {
segue-o-baile() // pula o 3
}
se-pah (i == 7) {
mete-o-pe() // para no 7
}
grita-ae(i)
}Saída: 0 1 2 4 5 6
Loop infinito — e como escapar
repete-enquanto (verdadeiro) nunca para sozinho. Rode-o só com uma saída interna:
cria n = 0
repete-enquanto (verdadeiro) {
n = n + 1
se-pah (n == 100) {
mete-o-pe()
}
}
grita-ae(n) // 100Exemplo real: adivinhar número
cria alvo = escolhe(1, 10)
cria chute = 0
repete-enquanto (chute != alvo) {
chute = chute + 1
}
grita-ae("Acertou em " + chute + " tentativas")