A maior rede de estudos do Brasil

Grátis
56 pág.
Aula06_Decisao_se_senao

Pré-visualização | Página 3 de 4

NOME2
escreva “Informe altura da 2a pessoa:”
leia ALTURA2
se (ALTURA1 > ALTURA2) então
escreva “Pessoa mais alta:”, NOME1
senão (ALTURA1 < ALTURA2)
escreva “Pessoa mais alta:”, NOME2
fim_se
fim
Errado! O senão não tem 
condição associada. 
Preste atenção na 
sintaxe do comando.
33
Erros frequentes (2)
se (ALTURA1 > ALTURA2) então
escreva “Pessoa mais alta:”, NOME1
senão se (ALTURA1 < ALTURA2) então
escreva “Pessoa mais alta:”, NOME2
fim_se
Errado também! Fazendo 
mais uma comparação 
desnecessária. 
Indentação também 
errada.
se (ALTURA1 > ALTURA2) então
escreva “Pessoa mais alta:”, NOME1
senão 
se (ALTURA1 < ALTURA2) então
escreva “Pessoa mais alta:”, NOME2
fim_se
fim_se
Aqui com a indentação
correta é possível ver 
que está faltando o 
fim_se do se simples
34
Exercícios
` Qual será a saída dos seguintes trechos de algoritmos? 
Considere os seguintes valores de variáveis: A=2, B=3, C=5, 
D=9 e E=6. 
se ((A>2) .e. (B<7)) então
X ← (A+2) * (B -2)
senão
X ← (A+B) / C
fim_se
escreva X
se ((A=2) .ou. (B<7)) então
X ← (A+2) * (B -2)
senão
X ← (D+E) / B
fim_se
escreva X
se ((A>=2) .ou. (C <=1)) então
X ← (A+E) / 2
senão
X ← D*C
fim_se
escreva X
se ((C>=2) .e. (B <=7)) então
X ← (B+D) / E
senão
X ← A*B
fim_se
escreva X
se ((A>2) .ou. (B<7)) então
X ← (A+B*C)
senão
X ← (A+2) * (B -D)
fim_se
escreva X35
Exercícios
` Dado o seguinte algoritmo:
programa IMPRIME_AB
var
A, B: inteiro
inicio
A ← 1
B ← 5
se (A > B) então
A ← 5
senão
B ← 10
escreva A, B
fim_se
fim
Qual valor de A e B será impresso?
36
Exercícios
` Dado o seguinte algoritmo:
programa valor_L
var
A, B, C, D: logico
X, Y: real
V, L: inteiro
inicio
A ← .F.
B ← .V.
C ← .F.
X ← 1.8
Y ← 3.4
X ← X + 1
se (C .ou. (( X + Y > 5) .ou. (A .e. B)) então
L ← 0 
senão
L ← 1
fim_se
fim
Qual valor FINAL de L?
37
Desvios condicionais encadeados
` São usados quando há necessidade de estabelecer 
algumas verificações lógicas de condições definidas 
sucessivamente
` Uma determinada ação de um programa só pode ser 
executada se um conjunto anterior de condições for 
verificado
` Pode ser usada uma condição dentro de outra condição
38
Desvio condicional encadeado: sintaxe
se (<condição1>) então
<instruções para condição1 verdadeira>
senão
se (<condição2>) então
<instruções para condição2 verdadeira, porém condição1 falsa>
senão
<instruções para condição1 e condição2 falsas>
fim_se
fim_se
39
Um problema
` Elaborar um algoritmo que efetue o cálculo do reajuste 
de salário de um funcionário. Considere que o 
funcionário deve receber um reajuste de 15% caso seu 
salário seja menor ou igual a R$ 645,00. Se seu salário for 
maior que R$ 645,00, mas menor ou igual a R$ 1.000,00, 
seu reajuste deve ser 10%. Caso seja maior que 1.000,00, 
o reajuste deverá ser de 5%.
` É possível ver 3 condições no problema acima:
` Se salário <= R$ 645,00, reajuste de 15%
` Se R$ 645,00 < salário <= R$ 1.000,00, reajuste de 10%
` Se salário > R$ 1.000,00, reajuste de 5%
40
Desvio condicional encadeado: exemplo
programa REAJUSTA_SALARIO
inicio
fim
` Vamos criar o corpo mínimo do algoritmo e dar um 
nome
41
Desvio condicional encadeado: exemplo
` Vamos pensar nas entradas e saídas e os tipos de dados 
que elas representam
` Entrada: salário (real)
` Saída: novo salário (real)
programa REAJUSTA_SALARIO
var
SALARIO,NOVO_SALARIO: real
inicio
fim
42
Desvio condicional encadeado: exemplo
` Vamos solicitar a entrada
programa REAJUSTA_SALARIO
var
SALARIO,NOVO_SALARIO: real
inicio
escreva “Informe o salario atual:”
leia SALARIO
fim
43
Desvio condicional encadeado: exemplo
` Vamos estruturar nossas condições. Pensando na 1ª
condição:
` Se salário <= R$ 645,00 então reajuste de 15%
programa REAJUSTA_SALARIO
var
SALARIO, NOVO_SALARIO: real
inicio
escreva “Informe o salario atual:”
leia SALARIO
se (SALARIO <= 645) então
NOVO_SALARIO Å SALARIO * 1.15
senão
.
.
.
fim_se
fim
Vamos preencher 
aqui na próxima 
etapa.
Cuidado com a 
indentação
44
Desvio condicional encadeado: exemplo
` Pensando na 2ª condição:
` Se R$ 645,00 < salário <= R$ 1.000,00 então reajuste de 10%
45
programa REAJUSTA_SALARIO
var
NOVO_SALARIO: real
SALARIO: real
inicio
escreva “Informe o salario atual:”
leia SALARIO
se (SALARIO <= 645) então
NOVO_SALARIO Å SALARIO * 1.15
senão
se ((SALARIO > 645) .e. (SALARIO <=1000)) então
NOVO_SALARIO Å SALARIO * 1.10
senão
.
.
.
fim_se
fim_se
fim
Aqui está. Note 
que estamos 
dentro do senão.
Vamos preencher 
aqui na próxima 
etapa.
Exemplo: observação
` Atenção para a expressão
` Se R$ 645,00 < salário <= R$ 1.000,00 então reajuste de 10%
` Não podemos incluir a expressão assim: 645 < SALARIO <= 1000
` Note que a expressão usada na condição tem o operador lógico .e.
se ((SALARIO > 645) .e. (SALARIO <=1000)) então
NOVO_SALARIO Å SALARIO * 1.10
senão
.
.
.
fim_se
Exemplo: observação
` Vamos analisar:
` Suponha que a variável SALARIO tem o valor 1200
` 645 < SALARIO <= 1000
` 645 < 1200 <= 1000
` .V. <= 1000
` Se for em Linguagem C temos:
` 1 <= 1000
` Ou seja, o funcionário receberia um aumento de 10% e era para 
receber de 5%
se ((SALARIO > 645) .e. (SALARIO <=1000)) então
NOVO_SALARIO Å SALARIO * 1.10
senão
.
.
.
fim_se
Exemplo: observação
` Com o uso do operador lógico .e. não tem erro. Veja:
` Suponha que o SALARIO tem o valor 1200
` ((645 < SALARIO) .e. (SALARIO<= 1000 ))
` 645 < 1200 .e. 1200<= 1000
` .V. .e. .F.
` .F.
` Resultado é falso, não recebe aumento de 10%
` Vai tentar a próxima condição
Desvio condicional encadeado: exemplo
` Pensando na 3ª condição:
` Se salário > R$ 1.000,00 então reajuste de 5%
programa REAJUSTA_SALARIO
var
NOVO_SALARIO: real
SALARIO: real
inicio
escreva “Informe o salario atual:”
leia SALARIO
se (SALARIO <= 645) então
NOVO_SALARIO Å SALARIO * 1.15
senão
se ((SALARIO > 645) .e. (SALARIO <=1000)) então
NOVO_SALARIO Å SALARIO * 1.10
senão
se (SALARIO > 1000) então
NOVO_SALARIO Å SALARIO * 1.05
fim_se
fim_se
fim_se
fim49
Desvio condicional encadeado: exemplo
` Mostrando o resultado...
programa REAJUSTA_SALARIO
var
NOVO_SALARIO: real
SALARIO: real
inicio
escreva “Informe o salario atual:”
leia SALARIO
se (SALARIO <= 645) então
NOVO_SALARIO Å SALARIO * 1.15
senão
se ((SALARIO > 645) .e. (SALARIO <=1000)) então
NOVO_SALARIO Å SALARIO * 1.10
senão
se (SALARIO > 1000) então
NOVO_SALARIO Å SALARIO * 1.05
fim_se
fim_se
fim_se
escreva “O novo salario eh:”, NOVO_SALARIO
fim50
Refinando o exemplo...
` Mostrando o resultado...
programa REAJUSTA_SALARIO
var
NOVO_SALARIO: real
SALARIO: real
inicio
escreva “Informe o salario atual:”
leia SALARIO
se (SALARIO <= 645) então
NOVO_SALARIO Å SALARIO * 1.15
senão
se (SALARIO <=1000) então
NOVO_SALARIO Å SALARIO * 1.10
senão
se (SALARIO > 1000) então
NOVO_SALARIO Å SALARIO * 1.05
fim_se
fim_se
fim_se
escreva “O novo salario eh:”, NOVO_SALARIO
fim
Podemos suprimir uma das 
comparações (compare com o 
slide anterior). Se a primeira 
condição não for verdadeira é
porque o salário é maior que 622 
e aqui podemos testar se ele 
está abaixo de 1000.
51
Refinando o exemplo...
` Mostrando o resultado...
programa REAJUSTA_SALARIO
var
NOVO_SALARIO: real
SALARIO: real
inicio
escreva “Informe o salario atual:”
leia SALARIO
se (SALARIO <= 645) então
NOVO_SALARIO Å SALARIO * 1.15
senão
se (SALARIO <=1000) então
NOVO_SALARIO Å SALARIO * 1.10
senão
NOVO_SALARIO Å SALARIO * 1.05