📦 Programação Procedural
Organize código em procedimentos reutilizáveis!
🔨O que é programação procedural?
Programação procedural organiza código em funções (procedimentos) que podem ser chamadas múltiplas vezes. É uma evolução da programação imperativa, adicionando modularidade e reutilização.
Características
- Código organizado em funções
- Reutilização através de chamadas de função
- Parâmetros e valores de retorno
- Escopo local de variáveis
Exemplo básico: Funções utilitárias
-- Procedimento simples função saudacao(nome) exiba("Olá, " .. nome .. "!") fim -- Função com retorno função soma(a, b) retorne a + b fim -- Usando as funções saudacao("Maria") local resultado = soma(10, 20) exiba(resultado) -- 30
Exemplo: Calculadora modular
-- Operações básicas função adicione(a, b) retorne a + b fim função subtraia(a, b) retorne a - b fim função multiplique(a, b) retorne a * b fim função divida(a, b) se b == 0 então retorne nulo, "Divisão por zero!" fim retorne a / b fim -- Função de alto nível função calcule(operacao, a, b) se operacao == "+" então retorne adicione(a, b) fim se operacao == "-" então retorne subtraia(a, b) fim se operacao == "*" então retorne multiplique(a, b) fim se operacao == "/" então retorne divida(a, b) fim retorne nulo, "Operação inválida" fim -- Usando exiba(calcule("+", 10, 5)) -- 15 exiba(calcule("*", 3, 7)) -- 21
Exemplo: Processamento de lista
-- Função para filtrar números pares função filtre_pares(lista) local resultado = {} para i, valor em obtenha_pares_indexados(lista) faça se valor % 2 == 0 então tabela.insira(resultado, valor) fim fim retorne resultado fim -- Função para somar lista função some_lista(lista) local soma = 0 para i, valor em obtenha_pares_indexados(lista) faça soma = soma + valor fim retorne soma fim -- Função para exibir lista função exiba_lista(lista) exiba(tabela.concatene(lista, ", ")) fim -- Pipeline de processamento local numeros = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10} local pares = filtre_pares(numeros) local soma = some_lista(pares) exiba("Números pares:") exiba_lista(pares) -- 2, 4, 6, 8, 10 exiba("Soma: " .. soma) -- 30
Exemplo: Sistema de validação
-- Validadores função valide_email(email) retorne texto.encontre(email, "@") e texto.encontre(email, "%.") fim função valide_idade(idade) retorne idade >= 0 e idade <= 150 fim função valide_nome(nome) retorne texto.obtenha_comprimento(nome) >= 2 fim -- Função principal de validação função valide_usuario(nome, idade, email) se não valide_nome(nome) então retorne falso, "Nome inválido" fim se não valide_idade(idade) então retorne falso, "Idade inválida" fim se não valide_email(email) então retorne falso, "Email inválido" fim retorne verdadeiro, "Válido" fim -- Testando local ok, msg = valide_usuario("Ana", 25, "ana@exemplo.com") exiba(ok, msg) -- verdadeiro, "Válido"
Vantagens da programação procedural
- ✅ Código reutilizável
- ✅ Mais fácil de testar (funções isoladas)
- ✅ Mais fácil de manter
- ✅ Reduz duplicação de código
- ✅ Facilita trabalho em equipe
Programação procedural é a base para código organizado e manutenível!