3.1 Paradigma Estrutural

Nos primórdios da computação, quando o paradigma imperativo era o único conhecido e se programava apenas em linguagens puramente imperativas, tais como Assembly , FORTRAN e COBOL , havia um recurso implementado pelo comando goto, que permitia saltos transferir a execução para qualquer linha específica dos programas. Fazendo uso deste recurso, era possível quebrar a linearidade do código, ou seja, a execução das linhas de código na ordem que foram escritas, o que tornava o software incrivelmente difícil de manter e compreender. Este estilo de programação era conhecido como código espaguete, uma vez que toda estrutura estava toda entrelaçada.

Em 1968 e 1987, Edsger W. Dijkstra e Niklaus Wirth respectivamente, publicaram artigos nos quais defendiam a abolição do goto nas linguagens de programação de alto nível, alegando que o comando induzia a vários erros de programação e promovia práticas ruins, além de tornar extremamente difícil a leitura de programas.

Este movimento deu origem à programação estruturada, que se fundamenta em três estruturas de controle de fluxo de código :

  • Estrutura de sequência: na qual um comando é executado após o outro, de forma linear, e, portanto sem o uso de goto;
  • Estrutura de decisão: na qual trechos do programa podem ser executados dependendo do resultado de um teste lógico;
  • Estrutura de iteração: na qual determinado trecho de código é repetido por um número finito de vezes, enquanto um teste lógico for verdadeiro.

Os exemplos a seguir evidenciam a melhora significativa no fluxo de controle proporcionada pelo paradigma estrutural.

O Exemplo 3 mostra um programa (em pseudocódigo) que lê dois números e imprime o maior entre eles (execução condicional), usando goto. O Exemplo 4 mostra um programa estruturado correspondente, sem o uso de goto.

Exemplo 3:

begin:

read a

read b

if b > a goto impb

print a

goto end

impb:

print b

end:

Exemplo 4:

read a

read b

if b > a

print b

else

print a

O Exemplo 5 mostra um programa (em pseudocódigo) que exibe os números de 1 a 10 (execução iterativa), usando goto. O Exemplo 6 mostra um programa estruturado correspondente, sem o uso de goto.

Exemplo 5:

begin:

x = 1

while:

if x > 10 goto end

print x

x = x + 1

goto while

end:

Exemplo 6:

x = 1

while x <= 10

print x

x = x + 1

end