// DOCS NAVIGATION
Controle de Fluxo_
SOURCE: content/docs/reference/02-fundamentos.md — 02 Fundamentos / 6. Controle de Fluxo / Control Flow
if / else if / else
PT-BR:
A instrução if avalia uma condição booleana e executa o bloco correspondente. Use else if para condições adicionais e else para o caso padrão.
EN-US:
The if statement evaluates a boolean condition and executes the corresponding block. Use else if for additional conditions and else for the default case.
module controle
from std.io import println
public func main() {
let nota = 75
// if simples / simple if
if nota >= 60 {
println("Aprovado!")
}
// if / else
if nota >= 60 {
println("Aprovado!")
} else {
println("Reprovado.")
}
// if / else if / else
if nota >= 90 {
println("A")
} else if nota >= 80 {
println("B")
} else if nota >= 70 {
println("C")
} else if nota >= 60 {
println("D")
} else {
println("F")
}
}
PT-BR:
if também é uma expressão — pode retornar um valor:
EN-US:
if is also an expression — it can return a value:
let classificacao = if nota >= 60 { "Aprovado" } else { "Reprovado" }
if not
Status: stable. Enabled by default.
PT-BR:
if not é a forma canônica da condição negativa — executa quando a condição é falsa.
EN-US:
if not is the canonical negative conditional — it executes when the condition is false.
let autenticado = false
if not autenticado {
println("Acesso negado!")
}
// Forma canônica / Canonical form:
if not autenticado {
println("Acesso negado!")
}
while
PT-BR:
Executa enquanto a condição for verdadeira. A condição é verificada antes de cada iteração.
EN-US:
Executes while the condition is true. The condition is checked before each iteration.
let i = 0
while i < 5 {
println(f"i = {i}")
i = i + 1
}
// Saída / Output: i = 0, i = 1, i = 2, i = 3, i = 4
// Com múltiplas condições / With multiple conditions
let x = 0
let y = 10
while x < 5 && y > 0 {
x = x + 1
y = y - 2
}
do...while
Status: stable. Enabled by default.
PT-BR:
Executa o bloco pelo menos uma vez e depois verifica a condição.
EN-US:
Executes the block at least once and then checks the condition.
let i = 0
do {
println(f"Executado: {i}")
i = i + 1
} while i < 3
// Imprime mesmo se i já fosse ≥ 3 / Prints even if i were already ≥ 3
for...in
PT-BR:
Itera sobre intervalos (ranges). Suporta intervalos exclusivos (..) e inclusivos (..=).
EN-US:
Iterates over ranges. Supports exclusive (..) and inclusive (..=) ranges.
// Intervalo exclusivo / Exclusive range: 0, 1, 2, 3, 4
for i in 0..5 {
println(f"i = {i}")
}
// Intervalo inclusivo / Inclusive range: 1, 2, 3, 4, 5
for i in 1..=5 {
println(f"i = {i}")
}
// Percorrer array / Iterate over array
let arr = [10, 20, 30, 40, 50]
for i in 0..5 {
println(f"arr[{i}] = {arr[i]}")
}
loop
Status: stable. Enabled by default.
PT-BR:
Loop infinito. Use break para sair.
EN-US:
Infinite loop. Use break to exit.
let contador = 0
loop {
contador = contador + 1
if contador >= 5 {
break
}
}
// contador == 5
switch...case
Status: stable. Enabled by default.
PT-BR:
switch compara um valor contra múltiplos padrões explícitos. Requer um caso else padrão ou cobertura exaustiva.
EN-US:
switch compares a value against multiple explicit patterns. Requires a default else case or exhaustive coverage.
let dia = 3
switch dia {
case 1: {
println("Segunda / Monday")
}
case 2: {
println("Terça / Tuesday")
}
case 3: {
println("Quarta / Wednesday")
}
else: {
println("Outro dia / Other day")
}
}
break e continue
PT-BR:
breaksai imediatamente do loop mais interno.continuepula para a próxima iteração do loop mais interno.
EN-US:
breakimmediately exits the innermost loop.continueskips to the next iteration of the innermost loop.
// break — sai ao encontrar 3 / exits when finding 3
for i in 0..10 {
if i == 3 {
break
}
println(f"{i}")
// Imprime 0, 1, 2 / Prints 0, 1, 2
}
// continue — pula números pares / skips even numbers
for i in 0..8 {
if i % 2 == 0 {
continue
}
println(f"{i}")
// Imprime 1, 3, 5, 7 / Prints 1, 3, 5, 7
}
Loops Aninhados / Nested Loops
for i in 0..3 {
for j in 0..3 {
println(f"{i},{j}")
}
}
// break sai apenas do loop interno / break exits only the inner loop
for i in 0..5 {
for j in 0..5 {
if j == 2 {
break
// Sai do for j / Exits the for j
}
println(f"{i},{j}")
}
}