domingo, 8 de maio de 2011

Aula 5 - 10.05.2011

Programação estruturada

Programação estruturada é uma forma de programação de computadores que preconiza que todos os programas possíveis podem ser reduzidos a apenas três estruturas: sequência, decisão e interação, desenvolvida por Michael A. Jackson no seu livro "Principles of Program Design" de 1975.
Tendo, na prática, sido transformada na Programação modular, a Programação estruturada orienta os programadores para a criação de estruturas simples em seus programas, usando as subrotinas e as funções. Foi a forma dominante na criação de software anterior à programação orientada por objetos.
Apesar de ter sido sucedida pela programação orientada por objetos, pode-se dizer que a programação estruturada ainda é muito influente, uma vez que grande parte das pessoas ainda aprendem programação através dela. Além disso, por exigir formas de pensar relativamente complexas, a programação orientada a objetos até hoje ainda não é bem compreendida ou usada pela maioria.
Há de se acrescentar também que inúmeras linguagens ainda extremamente relevantes nos dias de hoje, como o Cobol ainda utilizam o paradigma estruturado (muito embora possuam suporte para a orientação à objetos).

Fonte: http://pt.wikipedia.org/wiki/Programa%C3%A7%C3%A3o_estruturada

Programação estruturada na Teoria

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.

1) 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}
2) 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}
3) 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.

Fonte: http://www.dca.fee.unicamp.br/cursos/EA876/apostila/HTML/node7.html

Nenhum comentário:

Postar um comentário