Blocos de Código
Entenda a estrutura fundamental: `:` inicia e `fim` encerra blocos.
A Regra do `:` e `fim`
Em MambaScript, todo bloco de código segue uma regra simples:
: indica o início de um bloco
fim indica o fim desse bloco
Isso se aplica a condicionais, loops e funções — sem exceção. Se faltar um deles, você receberá um erro.
Correto vs Incorreto
✓ Correto
se idade >= 18: escreva "Maior de idade" fim
✗ Errado - Falta o `:`
se idade >= 18 escreva "Maior de idade" fim
Erro: esperava `:` após a condição
✗ Errado - Falta `fim`
se idade >= 18: escreva "Maior de idade"
Erro: bloco não foi encerrado com `fim`
Condicional `se` / `senao`
se condicao: # código se verdadeiro senao: # código se falso fim
Nota: O `senao` também leva `:` e não tem `fim` próprio — o `fim` fecha o bloco inteiro do `se`.
Exemplo prático:
variavel nota = 7 se nota >= 5: escreva "Aprovado" senao: escreva "Reprovado" fim
Condicional Encadeada (`senao se`)
Você pode encadear múltiplas condições:
variavel nota = 7 se nota >= 9: escreva "Excelente" senao: se nota >= 7: escreva "Ótimo" senao: escreva "Precisa melhorar" fim fim
💡 Dica: Cada `se` tem o seu próprio `fim`.
Loop `enquanto`
enquanto condicao: # código repetido fim
Exemplo:
variavel contador = 1 enquanto contador <= 5: escreva "Contagem: " + contador contador = contador + 1 fim
Loop `para`
para variavel de inicio ate fim: # código repetido fim
Exemplo:
para i de 1 ate 10: escreva i fim
Funções
funcao nome(parametros): # código da função retorna valor fim
Exemplo:
funcao somar(a, b): retorna a + b fim escreva somar(3, 5)
Blocos Aninhados (Nested)
Blocos podem estar dentro de outros blocos. Cada um precisa do seu próprio `fim`:
para i de 1 ate 3: se i == 2: escreva "Encontrei o 2!" senao: escreva "Número: " + i fim fim
💡 Dica: Se estás a receber erro de `fim` inesperado, conta quantos blocos abriu e quantos `fim` tens — devem ser iguais!
Checklist: Evitar Erros
- ✓Todo `se`, `senao`, `enquanto`, `para` e `funcao` tem `:` no final
- ✓Todo bloco é encerrado com `fim`
- ✓Blocos aninhados têm um `fim` para cada abertura
- ✓`senao` não precisa de seu próprio `fim`
- ✓Indentação ajuda a visualizar blocos (embora não seja obrigatória)