A programação estruturada estabelece uma disciplina de desenvolvimento de algoritmos que facilita a compreensão de programas através do número restrito de mecanismos de controle da execução de programas. Qualquer algoritmo, independentemente da área de aplicação, de sua complexidade e da linguagem de programação na qual será codificado, pode ser descrito através destes mecanismos básicos.
O princípio básico de programação estruturada é que um programa é composto por blocos elementares de código que se interligam através de três mecanismos básicos, que são seqüência, seleção e iteração. Cada uma destas construções tem um ponto de início (o topo do bloco) e um ponto de término (o fim do bloco) de execução.
Seqüência implementa os passos de processamento necessários para descrever qualquer programa. Por exemplo, um segmento de programa da forma ``faça primeiro a Tarefa a e depois a Tarefa b'' seria representado por uma seqüência de dois retângulos (Fig. 1.2a). A mesma contrução em pseudo-linguagem seria denotada pela expressão das duas tarefas, uma após a outra (Fig. 1.2b).
Seleção especifica a possibilidade de selecionar o fluxo de execução do processamento baseado em ocorrências lógicas. Há duas formas básicas de condição. A primeira forma é a construção IF, que permite representar fluxos da forma ``se a condição lógica x for verdadeira, faça a Tarefa a; senão (isto é, se a condição x for falsa), faça a Tarefa b.'' Na representação em fluxograma (Figura 1.3a), as duas setas que saem do losango de condição recebem rótulos T e F para indicar o fluxo de execução quando a condição especificada é verdadeira ou falsa, respectivamente. O retângulo sob a seta rotulada T normalmente é denominado o bloco then da construção, enquanto que o outro retângulo é denominado bloco else.
A outra forma de seleção estende o número de condições que podem ser avaliadas para definir o fluxo de execução. Esta construção, SWITCH (Fig. 1.4), permite representar fluxos da forma ``se a variável y tem o valor 1, faça a Tarefa a; se y tem o valor 2, faça a Tarefa b; se tem o valor 0, faça a Tarefa c; para qualquer outro valor, faça Tarefa d.''
Observe que a construção SWITCH não é essencial, uma vez que
ela pode ser representada em termos da seleção com IF, como
em
Entretanto, a utilização de estruturas SWITCH simplifica a expressão de
situações que ocorrem frequentemente em programas -- por exemplo, selecionar
ações dependendo de uma opção escolhida em um menu -- sem ter que recorrer ao
aninhamento excessivo de condições da forma IF. No entanto,
essa condição está restrita a condições lógicas envolvendo
exclusivamente testes de igualdade.
Iteração permite a execução repetitiva de segmentos do programa. Na forma básica de repetição, WHILE (Fig. 1.5), uma condição lógica é verificada. Caso seja verdadeira, o bloco de tarefas associado ao comando é executado. A condição é então reavaliada; enquanto for verdadeira, a tarefa é repetidamente executada.
Uma variante dessa construção é apresentada na Fig. 1.6, onde inicialmente a tarefa é executada e apenas então a condição de repetição é avaliada; quando a condição torna-se verdadeira, a iteração é encerrada.
Tipicamente, a estratégia de desenvolvimento top-down é utilizada na descrição algorítmica de procedimentos. Neste caso, um retângulo ou uma linha de pseudo-código pode descrever uma tarefa tão complexa quanto necessário, sendo que esta tarefa pode ser posteriormente descrita em termos de outro(s) fluxograma(s) ou pseudo-código(s). Em geral, são aplicados tantos refinamentos quantos forem necessários até atingir um ponto em que uma tarefa possa ser facilmente descrita em termos das construções suportadas pela linguagem de codificação.