Buscar

Aula06_Decisao_se_senao

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 3, do total de 56 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 6, do total de 56 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 9, do total de 56 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Prévia do material em texto

Universidade Federal da Grande Dourados
Faculdade de Ciências Exatas e de Tecnologias
Curso de Bacharelado em Sistemas de Informação
Algoritmos
Estruturas de controle – se...então...senão...fim_se
Profª Janne Oeiras Lachi
1
Plano de aula
` O objetivo da aula é estudar a tomada de decisão
` Veremos:
` Desvio condicional simples
` Desvio condicional composto
` Desvio condicional encadeado
2
Desvio condicional
` Usado quando devemos tomar uma decisão
` Exemplo 1:
` Elaborar um algoritmo que leia dois valores numéricos reais 
desconhecidos. Em seguida o algoritmo deve efetuar a adição dos 
dois valores lidos e apresentar o resultado se ele for maior que 
10.
` Note que SOMENTE mostraremos o resultado SE a soma for 
maior que 10. Há uma condição para mostrar o resultado.
3
Desvio condicional
` Exemplo 2:
` Leia um número e escreva se ele é igual a 5, a 200, a 400, se ele 
está no intervalo entre 500 e 1000 (inclusive), ou se ele está fora 
dos escopos anteriores. 
` Aqui devemos testar SE:
… N=5
… N= 200
… N=400
… 500 <= N .e. N <= 1000
… N não corresponde às opções anteriores.
4
Desvio condicional
` Nem sempre a condição está explícita no enunciado
` Exemplo 3:
` Leia a idade de uma pessoa e escreva a sua classe eleitoral.
• Não eleitor: abaixo de 16 anos
• Eleitor Obrigatório: entre 18 e 65 anos
• Eleitor Facultativo: entre 16 e 18 anos e maior do que 65 anos
` Aqui vamos usar decisão para definir a classe eleitoral de acordo 
com a idade fornecida;
` Note que não aparece a palavra SE no enunciado, porém vamos 
usar esse comando na resolução do problema.
5
Desvio condicional
` Nem sempre a condição está explícita no enunciado
` Exemplo 4:
` Dados 3 números, escreva-os em ordem crescente (suponha 
números diferentes).
` Aqui vamos usar decisão para ordenar os números dados como 
entrada
` Note que não aparece a palavra SE no enunciado, porém vamos 
usar esse comando na resolução do problema
6
Desvio condicional simples
` Português estruturado utiliza a instrução:
` se (<condição>) então...fim-se
` Se a condição estabelecida for verdadeira, serão executadas 
todas as instruções definidas entre se...então e fim_se
` Depois serão executadas todas as instruções existentes após 
fim_se
` Se a condição estabelecida for falsa, serão executadas as 
instruções definidas após a instrução fim_se
7
Desvio condicional simples
programa <nome>
início
se (<condição>) então
<comando 1>
<comando 2>
.
<comando n>
fim_se
.
.
.
fim
Comandos dentro do bloco se são executados
caso a condição seja VERDADEIRA
• Se a condição estabelecida for 
verdadeira, serão executadas todas as 
instruções definidas entre se...então e 
fim_se
• Depois serão executadas todas as 
instruções existentes após fim_se
8
Desvio condicional simples
Programa <nome>
início
se (<condição>) então
<comando 1>
<comando 2>
.
<comando n>
fim_se
.
.
.
fim
condição FALSA
Comandos NÃO são executados
Executa os comandos após o fim_se
• Se a condição estabelecida for falsa, 
serão executadas as instruções definidas 
após a instrução fim_se
9
Desvio condicional simples: exemplo
Elaborar um algoritmo que leia dois valores numéricos reais 
desconhecidos. Em seguida o algoritmo deve efetuar a adição dos dois 
valores lidos e apresentar o resultado se ele for maior que 10.
` 1º Passo: Criar o corpo mínimo em Português 
estruturado 
10
programa SOMA_MAIOR_10
início
fim
Note que foi dado um 
nome para o algoritmo
Note que o nome 
fornecido NÃO está
entre < >
Desvio condicional simples: exemplo
Elaborar um algoritmo que leia dois valores numéricos reais desconhecidos. Em seguida o algoritmo deve 
efetuar a adição dos dois valores lidos e apresentar o resultado se ele for maior que 10.
` 2º Passo: Solicite os dados de entrada
programa SOMA_MAIOR_10
início
escreva ″Informe dois números reais:″
leia x,y
fim
Vamos chamar os 2 
números de x e de y
11
Desvio condicional simples: exemplo
programa SOMA_MAIOR_10
início
escreva ″Informe um número real:″
leia x
escreva ″Informe outro número real:″
leia y
fim
Elaborar um algoritmo que leia dois valores numéricos reais desconhecidos. Em seguida o algoritmo deve 
efetuar a adição dos dois valores lidos e apresentar o resultado se ele for maior que 10.
` 2º Passo: Solicite os dados de entrada
Poderia ser....
12
Desvio condicional simples: exemplo
programa SOMA_MAIOR_10
início
escreva ″Informe um número real:″
leia x
escreva ″Informe outro número real:″
leia y
res Å x + y
fim
Elaborar um algoritmo que leia dois valores numéricos reais desconhecidos. Em seguida o 
algoritmo deve efetuar a adição dos dois valores lidos e apresentar o resultado se ele for maior 
que 10.
` 3º Passo: Definir o processamento
13
Desvio condicional simples: exemplo
14
programa SOMA_MAIOR_10
início
escreva ″Informe um número real:″
leia x
escreva ″Informe outro número real:″
leia y
res Å x + y
escreva “O resultado da soma dos dois numeros eh:”, res
fim
Elaborar um algoritmo que leia dois valores numéricos reais desconhecidos. Em seguida o 
algoritmo deve efetuar a adição dos dois valores lidos e apresentar o resultado se ele for maior 
que 10.
` 4º Passo: Mostrar a saída do algoritmo
Aqui é importante notar que somente devemos 
mostrar esse resultado SE ele for maior que 10. 
Precisamos colocar esse comando escreva
dentro de uma condição.
Desvio condicional simples: exemplo
Elaborar um algoritmo que leia dois valores numéricos reais desconhecidos. Em seguida o 
algoritmo deve efetuar a adição dos dois valores lidos e apresentar o resultado se ele for maior 
que 10.
` 5º Passo: Pensando sobre a condição
` O enunciado diz que o resultado deve ser apresentado somente 
se for maior que 10.
` Onde está guardado o resultado?
` Pense na elaboração de uma expressão relacional para colocar no 
comando se
programa SOMA_MAIOR_10
início
escreva ″Informe um número real:″
leia x
escreva ″Informe outro número real:″
leia y
res Å x + y
escreva “O resultado da soma dos dois numeros eh:”, res
fim
15
Desvio condicional simples: exemplo
16
programa SOMA_MAIOR_10
início
escreva ″Informe um número real:″
leia x
escreva ″Informe outro número real:″
leia y
res Å x + y
se (res > 10) então
escreva “O resultado da soma dos dois numeros eh:”, res
fim_se
fim
Elaborar um algoritmo que leia dois valores numéricos reais desconhecidos. Em seguida o algoritmo deve 
efetuar a adição dos dois valores lidos e apresentar o resultado se ele for maior que 10.
` 6º Passo: Criando uma decisão...
Vamos subordinar a saída do algoritmo 
a uma decisão. Preste atenção na 
indentação
Desvio condicional simples: exemplo
programa SOMA_MAIOR_10
var
x, y, res: real
início
escreva ″Informe um número real:″
leia x
escreva ″Informe outro número real:″
leia y
res Å x + y
se (res > 10) então
escreva “O resultado da soma dos dois numeros eh:”, res
fim_se
fim
Elaborar um algoritmo que leia dois valores numéricos reais desconhecidos. Em seguida o algoritmo deve 
efetuar a adição dos dois valores lidos e apresentar o resultado se ele for maior que 10.
` 7º Passo: Declarando as variáveis usadas
17
Desvio condicional simples: exemplo
programa SOMA_MAIOR_10
var
x, y, res: real 
início
escreva ″Informe um número real:″
leia x
escreva ″Informe outro número real:″
leia y
res Å x + y
se (res > 10) então
escreva “O resultado da soma dos dois numeros eh:”, res
fim_se
fim
Se SOMA <=10, o algoritmo não produz nenhuma saída.
18
Desvio condicional composto
` Português estruturado utiliza a instrução:
` se (<condição>) então ... senão ... fim-se
` Se acondição estabelecida for verdadeira, serão executadas 
todas as instruções definidas entre se...então e senão
` Se a condição estabelecida for falsa, serão executadas as 
instruções definidas entre senão e fim_se
` Somente após uma das possibilidades anteriores é que o 
programa executada as instruções existentes após fim_se
19
Desvio condicional composto: sintaxe
programa <nome>
início
se (<condição>) então
<comando 1>
<comando 2>
.
<comando n>
senão
<comando 1>
<comando 2>
.
<comando n>
fim_se
.
.
.
fim
• Caso a condição seja VERDADEIRA, comandos 
dentro do bloco se são executados.
• Depois serão executadas todas as instruções 
existentes após fim_se.
20
Desvio condicional composto: sintaxe
programa <nome>
início
se (<condição>) então
<comando 1>
<comando 2>
.
<comando n>
senão
<comando 1>
<comando 2>
.
<comando n>
fim_se
.
.
.
fim
• Caso a condição seja FALSA, comandos dentro 
do bloco senão são executados.
• Depois serão executadas todas as instruções 
existentes após fim_se.
21
Desvio condicional: exemplo
` Elaborar um algoritmo que leia o nome e a altura de duas 
pessoas. O seu algoritmo deve comparar as duas alturas 
lidas e apresentar como saída o nome da pessoa mais 
alta.
` Para isso:
` Devemos receber como entrada os nomes e as alturas das 
duas pessoas
` Comparar os valores das alturas lidas
` Se a primeira altura lida for maior que a segunda, 
escreveremos o como saída o nome da primeira pessoa. 
Senão, escreveremos o nome da segunda pessoa.
22
Desvio condicional composto: exemplo
programa COMPARACAO_ALTURA
início
fim
` 1º Passo: Crie o corpo mínimo
23
Desvio condicional composto: exemplo
` 2º Passo: Solicite os dados de entrada
programa COMPARACAO_ALTURA
início
escreva “Informe o nome da 1a pessoa:”
leia NOME1
escreva “Informe altura da 1a pessoa:”
leia ALTURA1
escreva “Informe o nome da 2a pessoa:”
leia NOME2
escreva “Informe altura da 2a pessoa:”
leia ALTURA2
fim
24
Desvio condicional composto: exemplo
25
` 3º Passo: Efetue o processamento dos dados
programa COMPARACAO_ALTURA
início
escreva “Informe o nome da 1a pessoa:”
leia NOME1
escreva “Informe altura da 1a pessoa:”
leia ALTURA1
escreva “Informe o nome da 2a pessoa:”
leia NOME2
escreva “Informe altura da 2a pessoa:”
leia ALTURA2
cond Å ALTURA1 > ALTURA2
fim
Veja que neste caso, o processamento consiste 
em fazer uma comparação de alturas. 
A variável cond será definida como do tipo lógico
`Elaborar um algoritmo que leia o nome e a altura de duas pessoas. O seu algoritmo deve 
comparar as duas alturas lidas e apresentar como saída o nome da pessoa mais alta.
Desvio condicional composto: exemplo
` 4º Passo: Mostrar a saída
programa COMPARACAO_ALTURA
início
escreva “Informe o nome da 1a pessoa:”
leia NOME1
escreva “Informe altura da 1a pessoa:”
leia ALTURA1
escreva “Informe o nome da 2a pessoa:”
leia NOME2
escreva “Informe altura da 2a pessoa:”
leia ALTURA2
cond Å ALTURA1 > ALTURA2
escreva “A pessoa mais alta eh:”, NOME1
escreva “A pessoa mais alta eh:”, NOME2
fim
Aqui temos DUAS possibilidades de saída do 
algoritmo.
26
Desvio condicional composto: exemplo
` 5º Passo: Criando a condição
programa COMPARACAO_ALTURA
início
escreva “Informe o nome da 1a pessoa:”
leia NOME1
escreva “Informe altura da 1a pessoa:”
leia ALTURA1
escreva “Informe o nome da 2a pessoa:”
leia NOME2
escreva “Informe altura da 2a pessoa:”
leia ALTURA2
cond Å ALTURA1 > ALTURA2
escreva “A pessoa mais alta eh:”, NOME1
escreva “A pessoa mais alta eh:”, NOME2
fim
Note que cada possibilidade de saída do algoritmo depende do valor 
na variável cond. Assim, o NOME1 deve ser apresentado SE a 
variável cond tiver o valor verdadeiro, senão devemos mostrar o 
NOME227
Desvio condicional composto: exemplo
` 5º Passo: Criando a condição
programa COMPARACAO_ALTURA
início
escreva “Informe o nome da 1a pessoa:”
leia NOME1
escreva “Informe altura da 1a pessoa:”
leia ALTURA1
escreva “Informe o nome da 2a pessoa:”
leia NOME2
escreva “Informe altura da 2a pessoa:”
leia ALTURA2
cond Å ALTURA1 > ALTURA2
se (cond = .V.) então
escreva “A pessoa mais alta eh:”, NOME1
senão
escreva “A pessoa mais alta eh:”, NOME2
fim_se
fim
Note que cada possibilidade de saída do algoritmo depende da expressão 
relacional que criamos. Assim, o NOME1 deve ser apresentado SE a condição
for verdadeira, senão devemos mostrar o NOME228
Desvio condicional composto: exemplo
29
` 6º Passo: Declarando variáveis
programa COMPARACAO_ALTURA
var
NOME1, NOME2: caractere
ALTURA1, ALTURA2: real
cond: lógico
início
escreva “Informe o nome da 1a pessoa:”
leia NOME1
escreva “Informe altura da 1a pessoa:”
leia ALTURA1
escreva “Informe o nome da 2a pessoa:”
leia NOME2
escreva “Informe altura da 2a pessoa:”
leia ALTURA2
cond Å ALTURA1 > ALTURA2
se (cond = .V.) então
escreva “A pessoa mais alta eh:”, NOME1
senão
escreva “A pessoa mais alta eh:”, NOME2
fim_se
fim
Desvio condicional composto: exemplo
` A variável res é desnecessária
programa COMPARACAO_ALTURA
var
NOME1, NOME2: caractere
ALTURA1, ALTURA2: real
cond: lógico
início
escreva “Informe o nome da 1a pessoa:”
leia NOME1
escreva “Informe altura da 1a pessoa:”
leia ALTURA1
escreva “Informe o nome da 2a pessoa:”
leia NOME2
escreva “Informe altura da 2a pessoa:”
leia ALTURA2
cond Å ALTURA1 > ALTURA2
se (cond = .V.) então
escreva “A pessoa mais alta eh:”, NOME1
senão
escreva “A pessoa mais alta eh:”, NOME2
fim_se
fim
A variável cond pode ser excluída sem 
prejuízo ao nosso algoritmo.
Note que com ela está consumindo 
recursos:
-memória porque precisamos de espaço 
para ela;
- processamento porque devemos fazer 
duas comparações relacionais
Vamos ajustar o código para minimizar o 
uso de recursos.
30
Desvio condicional composto: exemplo
` A variável res é desnecessária
programa COMPARACAO_ALTURA
var
NOME1, NOME2: caractere
ALTURA1, ALTURA2: real
cond: lógico
início
escreva “Informe o nome da 1a pessoa:”
leia NOME1
escreva “Informe altura da 1a pessoa:”
leia ALTURA1
escreva “Informe o nome da 2a pessoa:”
leia NOME2
escreva “Informe altura da 2a pessoa:”
leia ALTURA2
cond Å ALTURA1 > ALTURA2
se (cond = .V.) então
escreva “A pessoa mais alta eh:”, NOME1
senão
escreva “A pessoa mais alta eh:”, NOME2
fim_se
fim
programa COMPARACAO_ALTURA
var
NOME1, NOME2: caractere
ALTURA1, ALTURA2: real
início
escreva “Informe o nome da 1a pessoa:”
leia NOME1
escreva “Informe altura da 1a pessoa:”
leia ALTURA1
escreva “Informe o nome da 2a pessoa:”
leia NOME2
escreva “Informe altura da 2a pessoa:”
leia ALTURA2
se (ALTURA1 > ALTURA2) então
escreva “A pessoa mais alta eh:”, N
senão
escreva “A pessoa mais alta eh:”, N
fim_se
fim
1. Coloque a expressão dentro da condição
2. Remova a linha de atribuição da variável cond
3. Remova a declaração da variável31
Desvio condicional composto: exemplo
Programa COMPARACAO_ALTURA
var
NOME1, NOME2: caractere
ALTURA1, ALTURA2: real
início
escreva “Informe o nome da 1a pessoa:”
leia NOME1
escreva “Informe altura da 1a pessoa:”
leia ALTURA1
escreva “Informe o nome da 2a pessoa:”
leia NOME2
escreva “Informe altura da 2a pessoa:”
leia ALTURA2
se (ALTURA1 > ALTURA2) então
escreva “Pessoa mais alta:”, NOME1
senão
escreva “Pessoa mais alta:”, NOME2
fim_se
fim
Atenção: não esqueça de 
fazer a indentação
corretamente aqui.
32
Erros frequentes (1)
Programa COMPARACAO_ALTURA
var
NOME1, NOME2: caractere
ALTURA1, ALTURA2: real
início
escreva “Informe o nome da 1a pessoa:”
leia NOME1
escreva “Informe altura da 1a pessoa:”
leia ALTURA1
escreva “Informe o nome da 2a pessoa:”
leiaNOME2
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.05fim_se
fim_se
escreva “O novo salario eh:”, NOVO_SALARIO
fim
Podemos suprimir o teste (se 
“simples”) aqui (compare com o 
slide anterior). Se as condições 
anteriores forem falsas é porque 
o salário é maior que 1000 e já
podemos atribuir o acréscimo de 
5%.
Como visto no 
refinamento, nem sempre 
precisaremos usar todas 
as expressões definidas 
inicialmente para 
solucionar o problema, 
pois a lógica de 
programação permite a 
supressão de parte delas 
a depender do problema.52
Desvio condicional: exemplo
` Uma solução que funciona, mas que NÃO está adequada
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
fim_se
se ((SALARIO > 645) .e. (SALARIO <=1000)) então
NOVO_SALARIO Å SALARIO * 1.10
fim_se
se (SALARIO > 1000) então
NOVO_SALARIO Å SALARIO * 1.05
fim_se
escreva “O novo salario eh:”, NOVO_SALARIO
fim
Qual a diferença desta solução para a anterior?53
Exercícios
` Para cada valor abaixo, o que será impresso depois de executado 
o algoritmo?
` NUM = 5
` NUM = 0
` NUM = 2
programa testa_num
var
NUM: inteiro
QUALE: caractere
inicio
leia NUM
se (NUM > 0) então
QUALE Å “Numero positivo”
senão
se ( NUM < 0) então
QUALE Å “Numero negativo”
senão
QUALE Å “zero”
fim_se
fim_se
escreva QUALE
fim54
programa teste_mesa
var
A, B, C, D: inteiro
inicio
A ← <ultimo digito do seu RG>
B ← 3
C ← 5
D ← B +1
se (A > C) então
B ← 7 + D
se (D < A) então
D ← A+B
A ← B + D
fim_se
se (C < B) então
C ← D - A
fim_se
senão
B ← 2 + A
C ← B + D
se ( C < A) então
A ← C + B
D ← C - D
fim_se
fim_se
fim
Exercícios
` Dado o seguinte algoritmo:
Qual valor FINAL de A, B, C e D?
55
Referências
` ALGORITMOS. MANZANO – Lógica para desenvolvimento 
de programação de computadores. José Augusto N. G. 
Manzano, Jayr Figueiredo de Oliveira. São Paulo: Érica, 2006.
` ALGORITMOS ESTRUTURADOS. Harry Farrer, Christiano 
Gonçalves Becker, Eduardo Chaves Faria et al. 3ª Edição. Rio 
de Janeiro: LTC, 2008.
56
	Algoritmos
	Plano de aula
	Desvio condicional
	Desvio condicional
	Desvio condicional
	Desvio condicional
	Desvio condicional simples
	Desvio condicional simples
	Desvio condicional simples
	Desvio condicional simples: exemplo
	Desvio condicional simples: exemplo
	Desvio condicional simples: exemplo
	Desvio condicional simples: exemplo
	Desvio condicional simples: exemplo
	Desvio condicional simples: exemplo
	Desvio condicional simples: exemplo
	Desvio condicional simples: exemplo
	Desvio condicional simples: exemplo
	Desvio condicional composto
	Desvio condicional composto: sintaxe
	Desvio condicional composto: sintaxe
	Desvio condicional: exemplo
	Desvio condicional composto: exemplo
	Desvio condicional composto: exemplo
	Desvio condicional composto: exemplo
	Desvio condicional composto: exemplo
	Desvio condicional composto: exemplo
	Desvio condicional composto: exemplo
	Desvio condicional composto: exemplo
	Desvio condicional composto: exemplo
	Desvio condicional composto: exemplo
	Desvio condicional composto: exemplo
	Erros frequentes (1)
	Erros frequentes (2)
	Exercícios
	Exercícios
	Exercícios
	Desvios condicionais encadeados
	Desvio condicional encadeado: sintaxe
	Um problema
	Desvio condicional encadeado: exemplo
	Desvio condicional encadeado: exemplo
	Desvio condicional encadeado: exemplo
	Desvio condicional encadeado: exemplo
	Desvio condicional encadeado: exemplo
	Exemplo: observação
	Exemplo: observação
	Exemplo: observação
	Desvio condicional encadeado: exemplo
	Desvio condicional encadeado: exemplo
	Refinando o exemplo...
	Refinando o exemplo...
	Desvio condicional: exemplo
	Exercícios
	Exercícios
	Referências

Outros materiais