next up previous contents
Next: Codificação Up: Desenvolvimento de software Previous: Projeto   Sumário


Programação estruturada

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).

Figura: Construção estruturada: seqüência.
[fluxograma]
\includegraphics[scale=.5]{sequc.eps}
[pseudo-linguagem]

\begin{algorithm}{Sequencia}{}
\mbox{Tarefa} \; a \\
\mbox{Tarefa} \; b
\end{algorithm}

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.

Figura: Construção estruturada: seleção IF.
[fluxograma]
\includegraphics[scale=.4]{ifelse.eps}
[pseudo-linguagem]

\begin{algorithm}{SelecaoIf}{}
\begin{IF}{x}
\mbox{Tarefa} \; a
\ELSE
\mbox{Tarefa} \; b
\end{IF} \end{algorithm}

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
\begin{algorithm}{SelecaoMultiplaIf}{}
\begin{IF}{y = 1}
\mbox{Tarefa} \; a
\...
...refa} \; c
\ELSE
\mbox{Tarefa} \; d
\end{IF} \end{IF} \end{IF}\end{algorithm}
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.

Figura: Construção estruturada: seleção SWITCH.
[fluxograma]
\includegraphics[scale=.4]{switchcase.eps}
[pseudo-linguagem]

\begin{algorithm}{SelecaoSwitch}{}
\begin{SWITCH}{y}
\item{1} \\
\mbox{Taref...
...fa} \; c
\item{\DEFAULT} \\
\mbox{Tarefa} \; d
\end{SWITCH} \end{algorithm}

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.

Figura: Construção estruturada: repetição WHILE.
[fluxograma]
\includegraphics[scale=.4]{fpwhile.eps}
[pseudo-linguagem]

\begin{algorithm}{IteracaoWhile}{}
\begin{WHILE}{x}
\mbox{Tarefa} \; a
\end{WHILE} \end{algorithm}

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.

Figura: Construção estruturada: repetição REPEAT UNTIL.
[fluxograma]
\includegraphics[scale=.4]{fprepeat.eps}
[pseudo-linguagem]

\begin{algorithm}{IteracaoRepeat}{}
\begin{REPEAT}
{}\mbox{Tarefa} \; a
\end{REPEAT}{x}
\end{algorithm}

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.


next up previous contents
Next: Codificação Up: Desenvolvimento de software Previous: Projeto   Sumário
Ivan L. M. Ricarte 2003-02-14