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