Programação Estruturada
Um programa de computador é um conjunto de instruções seqüenciais, que define as ações a serem executadas e a ordem na
qual essas ações devem ser executadas. Essas ações incluem o que se chama transferência de controle, que permite que a
instrução a ser executada não seja a imediatamente seguinte, passando o controle para outra instrução ou bloco de
instruções escrito em outra parte do programa. A transferência de controle permite a ramificação dos programas,
representando seqüências possíveis de instruções que o computador haverá de executar, a depender da satisfação ou não das
condições requeridas.
Segundo Deitel e Deitel (1) , o uso indiscriminado das transferências de controle é causador de muitas dificuldades dos
programadores para escrever e principalmente para depurar os programas. Na década de 1960 percebeu-se que a maior
responsável por isso era a instrução goto, existente em muitas linguagens, que permite a transferência de controle para
qualquer destino que se queira num programa. Os blocos ou ramos dos programas escritos usando goto podem possuir mais
de uma entrada e mais de uma saída, e isso é uma fonte de problemas.
Num trabalho muito importante, Bohm e Jacopini (2) demonstraram em 1966 que qualquer programa pode ser escrito sem
usar a instrução goto, usando apenas três tipos de estruturas de controle de entrada e de saída únicas. Isso evita os
problemas criados pelas entradas e saídas múltiplas, e permite a escrita de programas muito mais fáceis de serem
compreendidos.
Essas estruturas de controle são a seqüência, a seleção e a repetição.
As linguagens de computador estruturadas são linguagens que usam essas estruturas de entrada/saída únicas,
e não usam ou não tem a instrução goto. A linguagem Java é estruturada e não possui a instrução goto.
Programas e fluxogramas
Os programas podem ser representados por fluxogramas, diagramas que representam a ação do programa a partir de um
número limitado de símbolos que representam as ações básicas que um programa pode fazer. Um fluxograma consiste num
conjunto dessas estruturas ligadas umas às outras através dos símbolos de conexão. Um mesmo programa pode ser descrito,
em diferentes níveis de detalhe, por diferentes fluxogramas. O uso de fluxogramas no projeto de programas de computador, da sua concepção inicial ao produto final, contribui bastante para a obtenção de programas bem-estruturados e confiáveis.
Os seguintes elementos bastam para representar os programas de
computador como fluxogramas:
| Elementos de um fluxograma | |
![]() |
Utilizado para indicar o inicio e o fim de um algoritmo. |
![]() |
Indica o sentido do fluxo. |
![]() |
Símbolo de ação - indica que uma ação deve ser executada. |
![]() |
Símbolo de decisão - indica que uma decisão deve ser tomada. |
As três estruturas de controle de entrada/saída única de Bohm e Jacopini são as seguintes, representadas como fluxogramas:
| 1. A estrutura de seqüência: as ações são executadas, uma por vez, de forma encadeada, na ordem definida no programa. | ![]() |
![]() |
2. A estrutura de seleção: a partir da verificação de uma condição, o programa realiza ou não uma ação e volta à seqüência do programa. |
| 3. A estrutura de repetição: um bloco de ações é repetido um número de vezes conforme se deseje, e após isso o controle volta à seqüência do programa. | ![]() |
Um programa estruturado pode ser formado pela aplicação das seguintes regras:
1) Iniciar com o fluxograma mais simples.
2) Qualquer retângulo (ação) pode ser substituído por dois retângulos em seqüência . Isso significa que uma ação complexa do fluxograma inicial pode ser quebrada em ações mais simples, até que se chegue à ação mais elementar possível.
3) Qualquer retângulo pode ser substituído por qualquer estrutura de controle. Isso significa que entre as ações representadas no retângulo inicial podem estar tomadas de decisão
4) As regras 2 e 3 podem ser aplicadas quantas vezes quiser em qualquer ordem.
Aplicar as regras sempre resulta em um fluxograma estruturado com uma aparência de blocos de construção. A regra 2 gera uma pilha de estruturas de controle, e por isso é conhecida como regra do empilhamento. A regra 3 é chamada de regra de aninhamento pois resulta em estruturas de controle devidamente aninhadas. A regra 4, por sua vez, gera estruturas maiores. A aplicação repetida dessas regras, em sucessivos níveis de detalhe, representam o trabalho de se escrever um programa de computador e seu algoritmo, da definição inicial do que deve ser feito até o código do programa.
As estruturas de controle de entrada/saída única de java
A linguagem Java é uma linguagem estruturada e não possui a instrução goto; entretanto, essa é uma palavra reservada, "por via das dúvidas", e não pode ser usada em nenhum código escrito em Java.
Java implementa as três estruturas de controle de entrada saída únicas de Bohm e Jacopini em sete diferente estruturas de controle, que são as seguintes:
SEQUÊNCIA: Implementada naturalmente na forma que o compilador interpreta o código escrito do programa.
SELEÇÃO: A linguagem Java possui 3 estruturas de seleção, todas redutíveis a estrutura de seleção única básica da
programação estruturada. São elas:
Estrutura if (seleção única).
|
if (condição) { bloco de instruções; } |
![]() |
Estrutura if/else (seleção dupla).
|
if (condição) { bloco de instruções 1; } else { bloco de instruções 2; } |
![]() |
Estrutura switch (seleção múltipla).
|
Switch (critério) { case possibilidade1: bloco de instruções 1; break; case possibilidade2: default: } |
![]() |
Java implementa a estrutura de repetição de três formas diferentes:
Estrutura while
|
while (condição) { bloco de instruções; } |
![]() |
O programa verifica a condição e, se for verdadeira, executa a ação do bloco de instruções, após o que torna a verificar a condição. A execução do bloco de instruções é repetida até que a condição se torne falsa. Nesse caso, o controle do programa segue para a primeira instrução após a estrutura. Exercício
Estrutura do/while
| do { bloco de instruções; } while (condição); |
![]() |
Estrutura for
| for(expressão1; expressão2; expressão3) { bloco de instruções; } |
![]() |
1. DEITEL, H. M e Deitel, P. J.. Java, como programar. 4a.ed. - Porto Alegre: Bookman, 2003.
2. BOHM, C. e Jacopini, G. Flow Diagrams, Turing Machines, and Languages with only Two Formation Rules. Communications of the ACM, vol. 9, no. 5, maio 1966, pp 336-371.