Na parte anterior vimos como inicialmente o controle de fluxo era dominado pelas instruções GOTO, gerando códigos confusos, propícios a bugs e de difícil manutenção. A reação a isto foi a Programação Estruturada.
A Programação Estruturada simplifica o controle de fluxo pela quebra do programa em estruturas geradas encadeando sub-estruturas de uma poucas formas padronizadas:
- Sequência: na qual uma estrutura é executada incondicionalmente em seguida a outra. Em quase todas as linguagens isto é feito codificando uma estrutura logo em seguida a outra.
- Seleção: onde uma entre várias estruturas é executada conforme o estado do programa. As linguagens estruturadas fazem isto através de instruções como IF/THEN/ELSE e SWITCH.
- Repetição: onde uma estrutura é executada até que um certo estado do programa seja atendido. As instruções normalmente encontradas são WHILE, FOR, DO UNTIL.
Embora seja pouco usual, existe uma forma gráfica de representar o fluxo de um programa estruturado. O fluxo abaixo corresponde ao meu exemplo do algorítimo de Euclides:
Reparar que para obedecer às regras da estruturação foi preciso acrescentar uma iniciação dummy para r e duplicar o teste r <> 0 (alguns compiladores otimizadores conseguem suprimir este teste duplicado ao gerar o código).
Para encerrar esta etapa, vejamos o algoritmo de Euclides codificado de forma estruturada em Pascal:
beginA seguir: vamos fazer um pequeno desvio para falar sobre a Programação Modular.
write ('m = ');
read (m);
write ('n = ');
read (n);
r := 1;
while r <> 0 do
begin
r := m mod n;
if (r <> 0) then
begin
m := n;
n:= r;
end
end;
writeln (n);
end.
Nenhum comentário:
Postar um comentário