3.4 Programação estruturada

Uma das operações mais notáveis em um computador é a capacidade de tomar decisões previamente estabelecidas e de fato um computador pode realizar muito rápido um conjunto de decisões. Dependendo do nível de programação um programa pode tomar decisões tão complexas quanto a de um ser humano, no entanto essas decisões complexas de um programa de computador são compostas por decisões elementares que por sua vez, em geral, são compostas por comparação entre duas ou três variáveis. Dependendo do resultado da comparação é realizado outras sequências de decisões. Em geral as decisões no Fortran são tomadas pelo comando if, que por sua vez estão contidos ou não dentro de outros comandos do.

Em conjunto com os camandos if e do, temos outros comando para controlar a execução que são os comandos continue, pause, stop, end, call e return. O comando call é utilizado para transferir o controle de execução para uma subrotina e o comando return é utilizado para retornar para o programa principal uma vez estando dentro de uma subrotina3.7.

A programação estruturada é um método para combinar as estruturas de controle formadas por blocos de do e if de maneira organizada e que, principalmente, traduza em linguagem universal de programação o problema a ser resolvido. A estruturação do programa, ou seja, a tradução entre as equações que estão no papel (livros) e o programa propriamente dito deve tornar-se por hábito uma parte muito importante na logística da construção. Um dos fatores de boa logísitca para a construção de um programa é levar em conta que o código computacional seja de execução rápida e também preciso, por outro lado, tempos extras de execução e processamento torna-se em disperdício de recursos.

Essas estruturas de controle são formadas por quatro estruturas básicas de controle:

  1. Estrutura Sequencial - vários blocos de comandos podem ser colocados para serem executados seqüencialmente;
  2. Estrutura if-then-else - um bloco pode ser construído unindo-se dois blocos mediante ha uma condição;
  3. Estrutura de laço do while - um bloco pode ser construído colocando-se um bloco interno de laço do tipo do while;
  4. Estrutura de repetição, repetindo sob condição - um bloco pode ser construído colocando-se um bloco interno de laço de repetição do tipo repita a operação mediante uma condição.

A maior dificuldade para programadores iniciantes e já com algum conhecimento é o de expressar de modo organizado a idéia e a lógica estrutural do programa. De modo prático, seria a capacidade que o programado possui para explicar o que um determinado programa executa e como ele executa. Para possibilitar a expressão do funcionamento do programa de forma fácil e organizada utilizaremos o conceito de programação estruturada que é a técnica de construir programas de forma organizada utilizando-se da combinação das formas básicas das estruturas de controle.

Dentro do esquema da programação estruturada, podemos expressar um programa como uma sequência de blocos constituídos pelas estruturas. Uma vez estabelecido esta sequência de blocos veremos que a estrutura permite também estabelecer um fluxo de sequências lógicas afim de resolver um determinado problema. Esta idéia de fluxo de sequências lógicas baseado nas estruturas básicas de controle é o que conhecemos como um fluxograma.


Tabela 3.3: Símbolos para fluxograma.
Image processamento Processamento: instrução ou conjunto de instruções que indicam processamento de dados.
Image decisao Decisão: condição que pode desviar o fluxo do programa para outros pontos do programa.
Image direcao Direção de Fluxo: indica a direção do fluxo.
Image terminal2 Terminal: utilizado no início e no final do diagrama de fluxo.
Image io Entrada/Saída: Entrada ou saída genérica de dados ou resultados.
Image docrel Relatório: utilizado principalmente para saída de resultados.
Image conector Conector: conecta uma entrada ou saída para outra parte do programa.
Image conector2 Conector entre páginas: conecta páginas do diagrama de fluxos.
Image subprog Sub-programa externo: referência à um sub-programa externo ao diagrama de fluxo.


Observe que um fluxograma apresenta algumas características:

O exemplo do fluxograma abaixo é o exemplo da estrutura do comando if da seção 3.5.2, e ele verifica quais números entre -30 e 30 são divisíveis por 3 (programa 3.5.2). O fluxograma referente ao programa pode ser construído utilizando-se dos símbolos que traduz as estruturas de controle conforme a figura 3.1.

Figura 3.1: Fluxograma referente ao programa que verifica quais números entre $-30$ e $30$ são divisíveis por $3$.
Image fluxo1

A seguir, exemplifico as formas de fluxograma para o do explícito, do infinito e do while.

Um outra forma de construir um código em linguagem universal é aplicando o conceito de psedocódigo. O pseudocódigo é muito semelhante ao código fonte, com todas as indentações, porém as sintaxes são substituídas por palavras de ação, marcações de início, fim e questionamento.