Estrutura Decisão SE...ENTÃO...SENÃO

Propaganda
Algoritmo I
Aula 003
Comandos de Controle de Fluxo
 Estruturas condicionais
 Os algoritmos estudados até agora utilizam apenas instruções
primitivas de atribuição e de entrada e saída de dados. Isto quer dizer
que: qualquer conjunto de dados fornecido a este algoritmo, será
submetido ao mesmo conjunto de instruções, executadas sempre na
mesma seqüência.
 Porem, na realidade muitas vezes é necessário executar ações
diversas em função dos dados fornecidos ao algoritmo, isto é:
 Dependendo do conjunto de dados de entrada do algoritmo, devese executar um conjunto diferente de instruções.
 Pode ser necessário executar um mesmo conjunto de instruções
um número repetido de vezes.
 Então podemos dizer que:
 É 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 ao mesmo.
 Neste caso devemos utilizar estruturas básicas de controle do fluxo de
instruções de um algoritmo. De acordo com o modo como este controle é
feito, estas estruturas são classificadas em:
 Estruturas seqüenciais.
 Estruturas de decisão.
 Estruturas de repetição.
 Estrutura 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.
 Em termos de fluxogramas, a estrutura seqüencial é caracterizada por um
único fluxo de execução (um único caminho orientado) no diagrama.
 Em pseudocódigos, a estrutura seqüencial caracteriza-se por um conjunto
de comandos dispostos ordenadamente.
 Como exemplos de aplicação desta estrutura de controle tem-se os
algoritmos que trabalhamos até o momento, onde não há estruturas de
decisão ou de repetição.
Início
real: PRECO_UNIT, PRECO_TOT
inteiro: QUANT
PRECO_UNIT  5.0;
QUANT  10;
PRECO_TOT  PRECO_UNIT * QUANT;
Mostre(PRECO_TOT);
Fim.
 Estrutura 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 três tipos de estruturas de decisão:
 SE
 SE ... ENTÃO
 SE ... ENTÃO... SENÃO
 Escolha (CASO)
 Estrutura Decisão SE...ENTÃO
 Essa estrutura é representada por um comando que avalia uma expressão
lógica, resultando um valor que pode ser TRUE ou FALSE.
 Como conseqüência desse resultado, o processamento se fará por um dos
dois caminhos:
 SE o resultado for TRUE  serão executados os comandos
encontrados no caminho indicado pelo resultado TRUE.
 SE o resultado for FALSE  será efetuado um desvio sem comando
algum.
 Ambos os fluxos convergem para o final da estrutura.
false
expr_logica
true
comandos
 Estrutura Decisão SE...ENTÃO...SENÃO
 Essa estrutura é representada por um comando que avalia uma expressão
lógica, resultando um valor que pode ser TRUE ou FALSE. De acordo com
esse resultado, o processamento se fará por um de dois caminhos:
 SE o resultado for TRUE  serão executados os comandos
encontrados no caminho indicado pelo resultado TRUE.
 SE o resultado for FALSE  serão executados os comandos
encontrados no caminho indicado pelo resultado FALSE.
 Ambos os fluxos convergem para o final da estrutura.
false
Comandos para
caminho FALSE
expr_logica
true
Comandos para
caminho TRUE
 Estrutura Decisão ESCOLHA
 Nos dois tipos de estruturas de decisão apresentadas anteriormente,
ocorre uma escolha entre dois caminhos possíveis.
 A estrutura CASO (ESCOLHA) possibilita escolher mais de um caminho,
de acordo com um resultado a partir de uma expressão inteira.
 Aqui não se avalia uma expressão lógica, e, sim, uma expressão inteira,
cujo resultado numérico vai determinar o caminho a ser seguido.
 Não existe uma limitação do número de opções que podem ser definidas –
dependendo do problema proposto.
 Se nenhuma das opções for atendida, podemos definir um caminhopadrão. Este caminho é rotulado com o valor FALSE.
 O caso-padrão caracteriza-se por ser opcional nessa estrutura.
false
expr_inteira
true
valor1
comandos
padrão
comandos1
valorN
valor2
comandos2
...
comandosN
 Exemplos de Estruturas de Decisão SE...ENTÃO...SENÃO
inicio
(Equação de Bhaskara)
(SE...ENTÃO...SENÃO
EXTERNO)
A, B, C
false
A=0
‘Não é uma
equação
de 2º grau’
D  sqrt(B)-4 * A * C
(SE...ENTÃO...SENÃO
INTERNO)
false
R1  (-B + sqrt(D)) / (2 * A)
R2  (-B - sqrt(D)) / (2 * A)
D<0
true
true
‘Não existem
raízes reais!’
R1, R2
fim
 Exemplos de Estruturas de Decisão CASO
(Calculadora)
inicio
ACUM
OP
false
OP <> ‘=‘
true
VAL
fim
ACUM
false
‘+’
ACUM  ACUM + VAL
‘-’
ACUM  ACUM - VAL
‘*’
OP
‘/’
ACUM  ACUM * VAL
OP
ACUM  ACUM / VAL
 Exemplos de Estruturas de Decisão SE aninhada
Início
real: salario, sal_reaj;
caracter: prof;
mostre(“Informe o profissional: “);
leia(prof);
mostre(“informe o salario: “);
leia(salario);
SE (prof = “Técnico”)
sal_reaj  1.5 * salario;
SENÃO
SE (prof = “Gerente”)
sal_reaj  1.3 * salario;
SENÃO
sal_reaj  1.1 * salario;
FIM-SE
FIM-SE
mostre(“Salario reajustado: “, sal_reaj
Fim
 Exemplos de Estruturas de Decisão CASO
Início
real: salario, sal_reaj;
caracter: prof;
mostre(“Informe o profissional: “);
leia(prof);
mostre(“informe o salario: “);
leia(salario);
ESCOLHA
CASO prof = “Técnico”
sal_reaj  1.5 * salario;
CASO prof = “Gerente”
sal_reaj  1.3 * salario
SENÃO
sal_reaj  1.1 * salario
FIM-ESCOLHA
mostre(“Salario reajustado: “, sal_rea
Fim
Exercícios
1. Os exercícios estão disponíveis no portal, no arquivo:
Aula 003 - Algoritmo I - Lista exercícios 003.doc
Download