Você está na página 1de 22

Algoritmos

Desvios condicionais
Instituto Vianna Junior
Desvios condicionais
Nesta Unidade aprenderemos as instruções que
fazem desvios na seqüência de execução de um
algoritmo, ou seja, não se trata mais dos
algoritmos que vimos até então, partes do
programa poderão ser executadas ou não,
dependendo de um determinado teste lógico ou
comando.
Ao ver os conceitos desta unidade, saberemos de
coisas como:
Como fazer desvios condicionais simples, com
apenas uma condição de execução.
Como fazer desvios condicionais compostos que
podem ter duas condições de execução.
Como fazer desvios condicionais encadeados,
criando uma série de opções diferentes na ordem
de execução do algoritmo.
Desvios condicionais simples

Vejamos mais um exemplo de algoritmos


seqüenciais. Considere um programa
para calcular a média das notas de um
aluno. O programa deve solicitar as
quatro notas via teclado e então exibir o
valor da média na tela. Isto pode ser
facilmente executado por um algoritmo
simples.
Desvios condicionais simples
EXEMPLO 10
algoritmo "Média das notas"
var
n1,n2,n3,n4 : real
soma : real
media : real
inicio
escreva("Digite a primeira nota: ")
leia(n1)
escreva("Digite a segunda nota: ")
leia(n2)
escreva("Digite a terceira nota: ")
leia(n3)
escreva("Digite a quarta nota: ")
leia(n4)
soma <-(n1+n2+n3+n4)
media<-(soma/4)
escreva("A média das notas do auno é ",media)
fimalgoritmo
Desvios condicionais simples

Agora imagine que este programa precisasse


também imprimir na tela o resultado da
aprovação do aluno, ou seja, se o aluno está
aprovado.
Para executar esta operação o programa precisa
TOMAR UMA DECISÃO, deve ser capaz de
executar um TESTE LÓGICO com o valor da
média final, verificar se o aluno está aprovado
e imprimir o resultado adequado na tela.
Para este tipo de função é usado um desvio
condicional
SE.... ENTÃO.
Desvios condicionais simples
Sintaxe:

se <expressão lógica> então


<sequencia de comandos a ser
executada caso o teste lógico retorne
verdadeiro>
fimse

seqüência normal de execução do


algoritmo
Desvios condicionais simples
Exemplo:

se media > 7 então


Escreva (“ALUNO APROVADO”)
fimse

seqüência normal de execução do


algoritmo

Obs: No caso do teste retornar falso, a


seqüência compreendida entre o
“se... fimse” será simplesmente
ignorada
Desvios condicionais simples
EXEMPLO 11:
Fazer um algoritmo que capture as 4
notas de um aluno via teclado, calcule
a média e imprima a frase “ ALUNO
APROVADO” caso a média seja maior
ou igual a 7
Desvios condicionais simples
algoritmo "Média das notas e apresentação do resultado"
var
n1,n2,n3,n4, soma, media : real
inicio
escreva("Digite a primeira nota: ")
leia(n1)
escreva("Digite a segunda nota: ")
leia(n2)
escreva("Digite a terceira nota: ")
leia(n3)
escreva("Digite a quarta nota: ")
leia(n4)
soma <-(n1+n2+n3+n4)
media<-(soma/4)
escreval("A média das notas do auno é ",media)
se media >= 7 entao
escreval(“**** ALUNO APROVADO ****")
fimse
fimalgoritmo
Desvios condicionais simples

No exemplo apresentado ficou “faltando”


alguma coisa, seria interessante escrever
também o complemento da informação
“ALUNO APROVADO” que seria
logicamente “ALUNO REPROVADO”.
Desvio condicional composto
se quisermos construir um algoritmo onde após
calculada a média, seja mostrada na tela uma
mensagem indicando se o aluno foi aprovado
ou reprovado. Utiliza-se o desvio condicional
composto se... então... senão!
Sintaxe:
se <condicao> então
<conjunto de comandos>
senão
<conjunto de comandos>
fimse
Desvio condicional composto
Veja que a se condição for verdadeira, os
comandos localizados até o senão serão
executados e o programa continuará
após o fimse.
Já se a condição for falsa, os comandos
entre senão e fimse é que serão
executados e o programa prossegue sua
execução;
Desvio condicional composto
EXEMPLO 12
algoritmo "Média das notas e apresentação do resultado"
var
n1,n2,n3,n4, soma, media : real
inicio
escreva("Digite a primeira nota: ")
leia(n1)
escreva("Digite a segunda nota: ")
leia(n2)
escreva("Digite a terceira nota: ")
leia(n3)
escreva("Digite a quarta nota: ")
leia(n4)
soma <-(n1+n2+n3+n4)
media<-(soma/4)
escreval("A média das notas do auno é ",media)
se media >= 7 entao
escreval(“**** ALUNO APROVADO ****")
fimse
fimalgoritmo
Desvio condicional
composto
EXEMPLO 13
Fazer um
algoritmo que
verifica a unidade
de horas (entre
24 horas)
capturada via
teclado e
informar se é dia
ou noite
Desvio condicional composto
algoritmo "dia e noite"
var
h: inteiro
inicio
escreval ("Entre com o valor da hora
(inteira, sem os minutos)")
leia (h)
se (h>=6) e (h<=18) entao
escreval ("é dia")
senao
escreva ("é noite")
fimse
fimalgoritmo
Desvios aninhados
Como foi visto anteriormente, ao
escrevermos desvios condicionais nos
algoritmos podemos definir um conjunto
de instruções, será executado quando
uma condição for satisfeita ou não.
No entanto, o desvio condicional também é
uma instrução. Logo podemos incluir
outros se... então... senão.... Fimse
dentro desta instrução.
Este processo é conhecido como
alinhamento de desvios condicionais.
Desvios aninhados
Sintaxe:
se <condição> então
<conjunto de comandos>
se <condição> então
<conjunto de comandos>
fimse
senão
<conjunto de comandos>
fimse

Qual a utilidade deste alinhamento? Exemplos é o


que não faltam. Basta imaginarmos um caso onde 3
ou mais situações devem ser tratadas.
Desvios
aninhados
Exemplo.
Fazer um
algoritmo onde,
dada a idade de
uma pessoa,
escreva se ela é
criança,
adolescente ou
adulta.
Desvios alinhados
algoritmo "criança, adolescente ou adulto"
var
id:inteiro
inicio
Escreval ("entre com a idade da pessoa")
leia (id)
se id<=12 entao
escreva ("é uma criança")
senao
se id<18 entao
escreva ("é um adolescente")
senao
escreva ("é um adulto")
fimse
fimse
fimalgorítmo
Estrutura escolha
Com a estrutura escolha ou seleção múltipla,
é possível comparar variáveis com uma
série de valores (ou outras variáveis) num
mesmo comando.
Sintaxe

escolha <expressão-de-seleção>
caso <exp11>, <exp12>, ..., <exp1n>
<seqüência de comandos-1>
caso <exp21>, <exp22>, ..., <exp2n>
<seqüência de comandos-2>
...
outrocaso
<seqüência de comandos-extra>
fimescolha
Estrutura escolha
Exemplo
1) Escreva um algoritmo que indique o estado de time de
futebol que foi digitado
algoritmo "Times"
Var
time: caractere
inicio
escreva ("Entre com o nome de um time de futebol conhecido: ")
leia (time)
escolha time
caso "Flamengo", "Fluminense", "Vasco", "Botafogo"
escreval ("É um time carioca.")
caso "São Paulo", "Palmeiras", "Santos", "Corínthians", "São Caetano"
escreval ("É um time paulista.")
caso "Atlético Mineiro", "Cruzeiro"
escreva ("É um time de Minas Gerais")
outrocaso
escreval ("Eu esperava por um time mais famoso, esse eu nem conheço")
fimescolha
fimalgoritmo
Exercícios
1) Desenvolver um algoritmo que calcule o reajuste de salário
sendo que existe 3 faixas diferenciadas de reajuste: para
salários de até R$ 500 o reajuste é de 15%, para salários até
R$ 1000, o reajuste é de 10% e acima de R$ 1000 o reajuste
é de 5%. Desenhar o fluxograma.
2) Elaborar um algoritmo para receber 3 valores reais
positivos como sendo os lados de um triangulo e verificar
se formam um triangulo. Caso positivo, informar ainda se o
triangulo é eqüilátero (3 lados iguais), isósceles( 2 lados
iguais) ou escaleno (com 3 lados diferentes). Desenhe o
fluxograma.
3) Do exercício resolvido para o algoritmo de separação de
cédulas, corrija o problema do algoritmo não ser capaz de
escolher se a palavra cédula tem ou não o S no final, faça-o
reconhecer a necessidade ou não do S.
4) Ainda para o algoritmo supra citado, modifique sua
estrutura para que ele forneça PREFERENCIALMENTE
cédulas de R$ 5,00 ao invés de R$ 10,00