Episódio 15 — Loop Principal e Execução Ciclada
No episódio anterior, conseguimos estruturar comandos com variáveis internas, entradas dinâmicas e respostas condicionais. Agora, chegou o momento de organizar isso tudo em uma estrutura de execução controlada, com repetição automática, controle de fim e fluxo iterativo.
⚡️ Por que isso importa?
A maioria das aplicações não é formada por uma única execução, mas por ciclos de trabalho que dependem de eventos, dados ou tempo. Ter um "loop de interpretação" nos permite:
- Reagir a eventos em tempo real
- Reprocessar condições
- Aplicar novos filtros a dados que mudam
- Manter um fluxo vivo e interativo
Em outras palavras: saímos do estático e entramos no dinâmico.
⚖️ Introduzindo a chave loop
Vamos definir um novo elemento no JSON:
{
"acao": "loop",
"nome": "principal",
"max_iteracoes": 10,
"passos": [
{ "acao": "definir", "variavel": "contador", "valor": 1 },
{ "acao": "mostrar", "mensagem": "Rodando iteração ${contador}" },
{ "acao": "definir", "variavel": "contador", "valor": "${contador} + 1" },
{ "acao": "condicional", "se": "${contador} > 10", "entao": [
{ "acao": "parar_loop" }
] }
]
}
Essa estrutura:
- Cria um loop nomeado (
principal) - Permite um máximo de 10 iterações
- Executa os passos até que
parar_loopseja acionado ou o limite seja atingido
⏳ Controle fino: parar_loop, continuar_loop
Assim como em linguagens tradicionais temos break e continue, aqui teremos:
parar_loop: Interrompe o loop correntecontinuar_loop: Pula para a próxima iteração
Isso abre espaço para lógicas mais refinadas dentro do próprio JSON.
📆 Tempo de espera entre ciclos
Podemos incluir um tempo de espera entre as iterações, com um novo campo:
{
"acao": "loop",
"delay_ms": 500,
"passos": [ ... ]
}
Assim, temos um mini-agendador interno, ideal para loops que monitoram recursos, sensores ou estados.
🚀 Pronto para o runtime!
Com esse recurso, podemos:
- Criar loops monitorando status
- Reagir a mudanças de variáveis
- Controlar workflows com persistência
Nosso interpretador começa a ganhar vida própria.
✅ No próximo episódio:
Vamos explorar como:
- Fazer o loop aguardar eventos externos (ex: resposta de API ou clique do usuário)
- Criar um modo reativo
- Integrar
awaitcom fluxo declarativo
O caminho está cada vez mais fluido. Agora temos controle e fluxo.