TA 345/531 TP 257 Informática Aplicada à Engenharia de Alimentos.

TÉCNICA DA ELABORAÇÃO DE PROGRAMAS ESTRUTURADOS

Antecedentes

A realização de um programa pode ser feita de forma intuitiva, colocando a seqüência de passos, um a um, conforme vão aparecendo e colocando os desvios necessários quando isto for indispensável. As linguagens de programação denominadas interpretadores permitem isso. Tal é caso da linguagem Basic, adequada para iniciantes. Nos interpretadores não é necessário que o programa inteiro este totalmente terminado e depurado para poder rodar (que é o caso das linguagens denominadas compiladores). Esta abordagem de "ir fazendo" é viável apenas para programas simples.

O interpretador lê o programa e executa comando após comando, até que encontre um erro, após o qual pára, mostrando a linha onde o erro foi encontrado. É possível ver parte do programa funcionando e mostrando resultados, mesmo sem estar completo.

Quando os programas são grandes e complicados, a abordagem intuitiva falha, não se consegue visualizar o que o programa faz quando se lê a listagem do programa. O programador pode-se confundir "num emaranhado de desvios incondicionais (gotos)". As dificuldades de entendimento do programa aumentam exponencialmente com o tamanho do programa e o tempo dedicado a sua elaboração. Sobretudo, quando não se faz a documentação do mesmo.

Para resolver este tipo de situações, às vezes de difícil solução (os pequenos dramas dos programadores novatos), foi desenvolvida a técnica denominada Programação Estruturada. E foram criadas linguagens orientadas a este tipo de programação, as chamadas linguagens estruturadas, como os compiladores Pascal e C.

Tanto a nova técnica quanto as linguagens tiveram um sucesso arrasador, o que obrigou as firmas responsáveis pelas linguagens ultrapassadas a desenvolver novas versões que permitiam oferecer aos usuários as mesmas vantagens que as linguagens de programação estruturada ofereciam:

  1. Comandos novos adequados para a programação estruturada;
  2. Eliminação da necessidade de numerar as linhas;
  3. Ambiente de edição que permite correr para cima e para baixo o programa inteiro;
  4. Um sistema de trabalho "IDE" (Integrated Development Environment) com auxílio inteligente (help);
  5. Rapidez: possibilidade de compilar o programa fonte, para produzir programas executáveis (exe), capazes de rodar fora do ambiente de edição de forma muito mais rápida;
  6. Possibilidade de criar módulos (sub-rotinas ou procedimentos ou funções) com variáveis locais, compartilhadas e globais;
  7. E outras vantagens mais, como: Edição com recuos, Criação de arquivos fonte de texto ASCII, etc.

ALGORITMO - FLUXOGRAMA - LISTAGEM DE CÓDIGO FONTE

A Programação Estruturada é uma técnica de programação que permite estabelecer uma correspondência perfeita entre o algoritmo, o diagrama de programação (fluxograma) e a listagem de um programa.

O algoritmo mostra a seqüência de passos de processamento, em prosa. Pode ser chamado também de pseudo-código.

O fluxograma permite visualizar os caminhos ("fluxos") e as etapas de processamento de dados possíveis (e dentro destas os passos da programação).

A listagem de um programa antigamente era oculta, feita em código binário. Hoje a listagem das instruções usadas no programa é feita em texto ASCII ou ANSI, para facilitar a sua portabilidade entre máquinas diferentes e permitir a revisão e contínua renovação do programa.

POSSIBILIDADES PARA O FLUXO DE INFORMAÇÃO

Os dados podem:

  1. Serem processados em seqüência;
  2. Entrar em bifurcações que conduzem a processamentos diferentes.
  3. Entrar em laços de processamento, até atingirem certas condições em passos pré-determinados ou não.

SEQUÊNCIA BIFURCAÇÃO (SELEÇÃO) LAÇO CONTADO (PREFIXADO) LAÇO NÃO PREFIXADO

PROGRAMA CLÁSSICO

SEQÜÊNCIA COM CONEXÕES

Página 1 Página 2

PROGRAMAÇÃO ESTRUTURADA:

  1. Correspondência entre Fluxograma e Programa;
  2. Uso das 03 estruturas fundamentais de controle: Sequência-Seleção-Repetição;
  3. As estruturas usadas devem ter um início e um final;
  4. Programa escrito com identação (realce), espaços em branco e comentários para facilitar a leitura do mesmo;
  5. Eliminação das transferências incondicionais (os gotos);
  6. Desenho descendente e segmentação em módulos;
  7. Construção de módulos de tamanho adequado;
  8. Declaração do âmbito de ação das variáveis locais (dentro das funções) e globais (o programa inteiro);
  9. Documentação do programa.

DUAS TÉCNICAS INOVADORAS:

O DESENHO DESCENDENTE E - A SEGMENTAÇÃO EM MÓDULOS:

O desenho descendente permite apresentar um módulo ou função principal bastante enxuto (5-25 linhas), que articula de forma seqüencial, um certo número de blocos lógicos denominados simplesmente módulos ou funções que podemos classificar em módulos periféricos, auxiliares e mínimos.

Estes módulos periféricos podem (devem) representar processos complexos de tratamento de dados.

Os módulos periféricos podem conter outros módulos auxiliares, cujo campo seria apenas o módulo.

Pode-se projetar módulos mínimos (utilitários) para serem usados por diversos outros.

VANTAGENS DO USO DO DESENHO DESCENDENTE E A SEGMENTAÇÃO EM MÓDULOS:

  1. Pode-se visualizar rápida e facilmente os trabalhos que o programa realiza. Para cumprir esse objetivo o programa principal deve ser curto e óbvio, chamando apenas os módulos operativos conter apenas as variáveis fundamentais
  2. Os módulos operativos devem ter um tamanho adequado para identificar o trabalho realizado e facilitar a manutenção de programa. Os módulos operativos podem usar variáveis do programa principal (cujo valor alterariam) e devem usar variáveis locais ou auxiliares cujo campo é o próprio módulo.
  3. Tanto o programa, ou módulo principal, quanto os módulos operativos e os sub-modelos podem convocar ou chamar os módulos mínimos. A existência de módulos mínimos evita a duplicação de códigos e assim reduz o tamanho dos programas.

DESENHO DESCENDENTE

Módulo principal com módulos operacionais

Decomposição de um módulo operacional em sub-módulos e em módulos mínimos

Módulo mínimo com código básico

OUTRA FORMA DE VER A PROGRAMAÇÃO

DIAGRAMAS DAS POSSIBILIDADES DO FLUXO DA INFORMAÇÃO

SEQUÊNCIA LINEAR SIMPLES

ESTRUTURAS DE CONTROLE

BIFURCAÇÕES (Desvio Condicional)

Alternativa simples

Alternativa dupla

Alternativa tripla parcial

Alternativa tripla completa

Opção multipla

OUTRA FORMA DA ALTERNATIVA MÚLTIPLA (Apenas um caminho é usado)

LAÇOS DE PROCESSAMENTO COM REPETIÇÃO

(1) LAÇO WHILE

Se o teste indica que a condição se cumpre, então faça o laço (tarefa).

(2) LAÇO DO WHILE

Faça o laço (e as tarefas) até que o teste indique que a condição se cumpriu

Laço de repetição indeterminada com teste intermediário para forçar saída antecipada de um laço que pode ser "infinito" ou muito demorado na execução total.

 

(3) LAÇO FOR com número determinado de repetições (realiza a tarefa "n" vezes).

for (expressão1;expressão2;expressão3) instrução

 

expressão de inicialização

expressão para teste de condição

expressão de incremento


Exemplos de fluxogramas

Ir para o topo da Página

Ir para o Menu das Aulas