Introdução
A Programação Estruturada surgiu no final dos anos 1960 e início dos anos 1970 como uma reação direta ao chamado “código espaguete” — programas repletos de saltos incondicionais (GOTO) que tornavam o fluxo de execução quase impossível de seguir. O marco histórico é o artigo de Edsger Dijkstra, “Go To Statement Considered Harmful” (1968), que propôs abandonar o GOTO em favor de estruturas de controle previsíveis.
Princípios centrais
O paradigma se apoia no Teorema da Programação Estruturada, segundo o qual qualquer algoritmo pode ser expresso combinando apenas três estruturas de controle:
- Sequência — instruções executadas uma após a outra, na ordem em que aparecem.
-
Seleção — desvios condicionais (
if/else,switch), que escolhem um caminho entre alternativas. -
Repetição — laços (
for,while,do-while) que repetem um bloco enquanto uma condição for satisfeita.
Além disso, o paradigma incentiva a modularização: dividir o programa em procedimentos e funções menores, cada um com uma responsabilidade clara, e o design top-down, em que o problema é refinado de uma visão geral para os detalhes de implementação.
Exemplo
csharp
// Exemplo de Programação Estruturada em C#
static decimal CalcularTotalComDesconto(decimal valorUnitario, int quantidade)
{
decimal desconto = 0;
// Seleção
if (quantidade >= 10)
{
desconto = 0.20m;
}
else if (quantidade >= 5)
{
desconto = 0.10m;
}
decimal total = valorUnitario * quantidade * (1 - desconto);
// Repetição
for (int i = 1; i <= quantidade; i++)
{
Console.WriteLine($"Processando item{i} de{quantidade}...");
}
return total; // Sequência
}
Enter fullscreen mode Exit fullscreen mode
Note que todo o fluxo é linear e previsível: entra-se no topo da função, cada linha executa em ordem, e as únicas variações de caminho vêm de if e for — nunca de um salto arbitrário.
Vantagens e limitações
- Vantagens: legibilidade, facilidade de depuração, raciocínio linear, base sólida para qualquer outro paradigma (structured programming é praticamente universal — até código funcional e orientado a objetos usa sequência/seleção/repetição dentro de funções e métodos).
- Limitações: conforme o sistema cresce, o compartilhamento de estado mutável entre muitas funções torna a manutenção difícil — problema que os paradigmas seguintes tentam resolver de formas diferentes.
Linguagens representativas: C, Pascal, Fortran (versões modernas), e qualquer linguagem no nível de suas funções/procedimentos.
답글 남기기