Ana səhifə

Universidade Regional Integrada do Alto Uruguai e das Missões Campus Frederico Westphalen Departamento de Engenharias e Ciência da Computação Algoritmos e Estrutura de Dados I informática I


Yüklə 0.52 Mb.
səhifə7/23
tarix25.06.2016
ölçüsü0.52 Mb.
1   2   3   4   5   6   7   8   9   10   ...   23

7.Estruturas de Controle do Fluxo de Execução


Até o momento os algoritmos estudados utilizam apenas instruções primitivas de atribuição, e de entrada e saída de dados. Qualquer conjunto de dados fornecido a um algoritmo destes será submetido ao mesmo conjunto de instruções, executadas sempre na mesma seqüência.

No entanto, na prática muitas vezes é necessário executar ações diversas em função dos dados fornecidos ao algoritmo. Em outras palavras, dependendo do conjunto de dados de entrada do algoritmo, deve-se executar um conjunto diferente de instruções. Além disso, pode ser necessário executar um mesmo conjunto de instruções um número repetido de vezes. Em resumo é necessário controlar o fluxo de execução das instruções (a seqüência em que as instruções são executadas num algoritmo) em função dos dados fornecidos como entrada do mesmo.

De acordo com o modo como o controle do fluxo de instruções de um algoritmo é feito, as estruturas básicas de controle são classificadas em:


  • Estruturas seqüenciais

  • Estruturas de decisão

  • Estruturas de repetição

7.1Comandos Compostos


Um comando composto é um conjunto de zero ou mais comandos (ou instruções) simples, como atribuições e instruções primitivas de entrada ou saída de dados, ou alguma das construções apresentadas neste capítulo.

Este conceito é bastante simples e será útil e conveniente nos itens seguintes, na definição das estruturas básicas de controle de execução.


7.2Estrutura Seqüencial


Na estrutura seqüencial os comandos de um algoritmo são executados numa seqüência pré-estabelecida. Cada comando é executado somente após o término do comando anterior.

Uma estrutura seqüencial é delimitada pelas palavras-reservadas Início e Fim e contém basicamente comandos de atribuição, comandos de entrada e comandos de saída. Os algoritmos do capítulo anterior são algoritmos que utilizam uma única estrutura seqüencial.

Um algoritmo puramente seqüencial é aquele cuja execução é efetuada em ordem ascendente dos números que identificam cada passo. A passagem de um passo ao seguinte é natural e automática, e cada passo é executado uma única vez.

7.3Estruturas de Decisão


Neste tipo de estrutura o fluxo de instruções a ser seguido é escolhido em função do resultado da avaliação de uma ou mais condições. Uma condição é uma expressão lógica.

A classificação das estruturas de decisão é feita de acordo com o número de condições que devem ser testadas para que se decida qual o caminho a ser seguido. Segundo esta classificação, têm-se 3 tipos de estruturas de decisão:



  • Estrutura de Decisão Simples (Se ... então)

  • Estrutura de Decisão Composta (Se ... então ... senão)

  • Estrutura de Decisão Múltipla do Tipo Escolha (Escolha ... Caso ... Senão)

Os algoritmos puramente seqüenciais podem ser usados na solução de um grande número de problemas, porém existem problemas que exigem o uso de alternativas de acordo com as entradas do mesmo.

Nestes algoritmos, as situações são resolvidas através de passos cuja execução é subordinada a uma condição. Assim, o algoritmo conterá passos que são executados somente se determinadas condições forem observadas.

Um algoritmo em que se tem a execução de determinados passos subordinada a uma condição é denominado algoritmo com seleção.

7.3.1Estruturas de Decisão Simples ( Se ... então )


Nesta estrutura uma única condição (expressão lógica) é avaliada. Dependendo do resultado desta avaliação, um comando ou conjunto de comandos serão executados (se a avaliação for verdadeira) ou não serão executados (se a avaliação for falsa).

Há duas sintaxes possíveis para a estrutura de decisão simples:



  • SE <condição> ENTÃO <comando_único>
    Ex: Se X > 10 Então Escreva “X é maior que 10”

  • SE <condição> ENTÃO
    INÍCIO
    <
    comando_composto>
    FIM
    Ex: Se X > 10 Então
    Início
    cont := cont + 1
    soma := soma + x
    Escreva “X é maior que 10”
    FIM

A semântica desta construção é a seguinte: a condição é avaliada:

Se o resultado for verdadeiro, então o comando_único ou o conjunto de comandos (comando_composto) delimitados pelas palavras-reservadas início e fim serão executados. Ao término de sua execução o fluxo do algoritmo prossegue pela instrução seguinte à construção, ou seja, o primeiro comando após o comando_único ou a palavra-reservada fim.

– No caso da condição ser falsa, o fluxo do algoritmo prossegue pela instrução seguinte à construção, ou seja, o primeiro comando após o comando_único ou a palavra-reservada fim, sem executar o comando_único ou o conjunto de comandos (comando_composto) entre as palavras-reservadas início e fim.

Exemplo de algoritmo que lê um número e escreve se o mesmo é maior que 10:



Algoritmo exemplo_estrutura_de_decisão_simples

Var X : inteiro

Início

Leia X

Se X > 10 Então Escreva “X é maior que 10”

Fim.

7.3.2Estruturas de Decisão Composta ( Se ... então ... senão )


Nesta estrutura uma única condição (expressão lógica) é avaliada. Se o resultado desta avaliação for verdadeiro, um comando ou conjunto de comandos serão executados. Caso contrário, ou seja, quando o resultado da avaliação for falso, um outro comando ou um outro conjunto de comandos serão executados.

Há duas sintaxes possíveis para a estrutura de decisão composta:



  • SE <condição> ENTÃO <comando_único_1>
    SENÃO <
    comando_único_2>

    Ex: Se X > 100 Então Escreva “X é maior que 100”
    Senão Escreva “X não é maior que 100”

  • SE <condição> ENTÃO
    INÍCIO
    <
    comando_composto_1>
    FIM
    SENÃO
    INÍCIO
    <
    comando_composto_2>
    FIM

    Ex: Se X > 100 Então
    Início
    cont_a := cont_a + 1
    soma_a := soma_a + x
    Escreva “X é maior que 100”
    FIM
    SENÃO
    Início
    cont_b := cont_b + 1
    soma_b := soma_b + x
    Escreva “X não é maior que 100”
    FIM


A semântica desta construção é a seguinte: a condição é avaliada:

– Se o resultado for verdadeiro, então o comando_único_1 ou o conjunto de comandos (comando_composto_1) delimitados pelas palavras-reservadas início e fim serão executados. Ao término de sua execução o fluxo do algoritmo prossegue pela instrução seguinte à construção, ou seja, o primeiro comando após o comando_único_2 ou a palavra-reservada fim do comando_composto_2.

– Nos casos em que a condição é avaliada como falsa, o comando_único_2 ou o conjunto de comandos (comando_composto_2) delimitados pelas palavras-reservadas início e fim serão executados. Ao término de sua execução o fluxo do algoritmo prossegue pela instrução seguinte à construção, ou seja, o primeiro comando após o comando_único_2 ou a palavra-reservada fim do comando_composto_2.

Exemplo de algoritmo que lê um número e escreve se o mesmo é ou não maior que 100:



Algoritmo exemplo_estrutura_de_decisão_composta

Var X : inteiro

Início

Leia X

Se X > 100 Então Escreva “X é maior que 100”

Senão Escreva “X não é maior que 100”

Fim.

Nos algoritmos, a correta formulação de condições, isto é, expressões lógicas, é de fundamental importância, visto que as estruturas de seleção são baseadas nelas. As diversas formulações das condições podem levar a algoritmos distintos. Considerando o problema:

Dado um par de valores x, y, que representam as coordenadas de um ponto no plano, determinar o quadrante ao qual pertence o ponto, ou se está sobre um dos eixos cartesianos.”

A solução do problema consiste em determinar todas as combinações de x e y para as classes de valores positivos, negativos e nulos.

Os algoritmos podem ser baseados em estruturas concatenadas uma em seqüência a outra ou em estruturas aninhadas uma dentro da outra, de acordo com a formulação da condição.

O algoritmo a seguir utiliza estruturas concatenadas.



Algoritmo estruturas_concatenadas

Var x, y : inteiro

Início

Ler x, y

Se x=0 e y=0 Então Escrever “Ponto na origem”

Se x=0 e y<>0 Então Escrever “Ponto sobre o eixo y”

Se x<>0 e y=0 Então Escrever “Ponto sobre o eixo x”

Se x>0 e y>0 Então Escrever “Ponto no quandrante 1”

Se x<0 e y>0 Então Escrever “Ponto no quandrante 2”

Se x<0 e y<0 Então Escrever “Ponto no quandrante 3”

Se x>0 e y<0 Então Escrever “Ponto no quandrante 4”

Fim.

O algoritmo a seguir utiliza estruturas aninhadas ou encadeadas.



Algoritmo estruturas_aninhadas

Var x, y : inteiro

Início

Ler x, y

Se x<>0

Então Se y=0

Então Escrever “Ponto sobre o eixo x”

Senão Se x>0

Então Se y>0

Então Escrever “Ponto no quandrante 1”

Senão Escrever “Ponto no quandrante 4”

Senão Se y>0

Então Escrever “Ponto no quandrante 2”

Senão Escrever “Ponto no quandrante 3”

Senão Se y=0

Então Escrever “Ponto na origem”

Senão Escrever “Ponto sobre o eixo y”

Fim.

As estruturas concatenadas tem a vantagem de tornar o algoritmo mais legível, facilitando a correção do mesmo em caso de erros. As estruturas aninhadas ou encadeadas tem a vantagem de tornar o algoritmo mais rápido pois são efetuados menos testes e menos comparações, o que resulta num menor número de passos para chegar ao final do mesmo.

Normalmente se usa estruturas concatenadas nos algoritmos devido à facilidade de entendimento das mesmas e estruturas aninhadas ou encadeadas somente nos casos em que seu uso é fundamental.

7.3.3Estruturas de Decisão Múltipla do Tipo Escolha ( Escolha ... caso ... senão )


Este tipo de estrutura é uma generalização da construção Se, onde somente uma condição era avaliada e dois caminhos podiam ser seguidos. Na estrutura de decisão do tipo Escolha pode haver uma ou mais condições a serem testadas e um comando diferente associado a cada uma destas.

A sintaxe da construção de Escolha é:



ESCOLHA
CASO <condição_1>
<comando_composto_1>
CASO <condição_2>
<comando_composto_2>
...
CASO <condição_n>
<comando_composto_n>
SENÃO
<comando_composto_s>
FIM

Seu funcionamento é o seguinte: ao entrar-se numa construção do tipo Escolha, a condição_1 é testada: se for verdadeira, o comando_composto_1 é executado e após seu término, o fluxo de execução prossegue pela primeira instrução após o final da construção (fim); se a condição_1 for falsa, a condição_2 é testada: se esta for verdadeira, o comando_composto_2 é executado e ao seu término, a execução prossegue normalmente pela instrução seguinte ao final da construção (fim). O mesmo raciocínio é estendido a todas as condições da construção. No caso em que todas as condições são avaliadas como falsas, o comando_composto_s (correspondente ao Senão da construção) é executado.

Um caso particular desta construção é aquele em que o comando_composto_s não contém nenhuma instrução. Isto ocorre nas situações que não se deseja efetuar nenhuma ação quando todas as condições são falsas. Assim, pode-se dispensar o uso do Senão na construção Escolha.

Um exemplo de aplicação desta construção é o algoritmo para reajustar o salário de acordo com a função. Se for técnico, aumentar o salário 50%, se for gerente, aumentar 30% e se for outro cargo, aumentar 20%.



Algoritmo exemplo_estrutura_do_tipo_escolha

Var salário, salário_reaj : real

prof: caracter[20]



Início

Leia salário, prof

Escolha

Caso prof = “Técnico”

salário_reaj := 1.5 * salário



Caso prof = “Gerente”

salário_reaj := 1.3 * salário



Senão

salário_reaj := 1.2 * salário



Fim

Escreva “Salário Reajustado = ”, salário_reaj

Fim.
1   2   3   4   5   6   7   8   9   10   ...   23


Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©atelim.com 2016
rəhbərliyinə müraciət