Introdução à Lógica
Desvios Condicionais
Regis Pires Magalhã[email protected]
Última atualização em 17/04/2008
Comando de desvio• Permite que o algoritmo decida autonomamente
entre caminhos possíveis, qual irá executar.• Exemplo:
se "tiver R$10,00 sobrando" entao
"irei ao cinema"
fimse
Bloco de comandos• Um bloco de comandos é uma série de comandos
• Em um bloco ou todos os comandos são executados ou nenhum é.
• Exemplo:
leia(n1, n2)
media <- (n1+n2)/2
escreva("A média é ", media)
Fluxograma do desvio• Somente um dos blocos de comando é
executado.
condiçãocondição
Bloco de Bloco de comandos 1comandos 1
Bloco de Bloco de comandos 2comandos 2
falsafalsaverdadeiraverdadeira
Comando se
se <condicao> entao <bloco de comandos 1>senao <bloco de comandos 2>fimse
Comando se simplificado
• Caso o bloco de comandos depois do senão seja vazio, esta parte pode ser omitida.
• A forma geral simplificada é:
se <condicao> entao <bloco de comandos>fimse
Fluxograma se simplificado• O bloco de comandos é executado somente se a condição
for verdadeira.• Caso contrário o algoritmo prossegue normalmente
condiçãocondição
Bloco de Bloco de comandos 1comandos 1
verdadeiraverdadeira
falsafalsa
Exemplo
algoritmo "domingo"inicio acorde se estiver fazendo sol entao va a praia compre um picole senao leia jornal durma acorde fimse almocefimalgoritmo
Exemplo• Ler dois números e imprimir o maior
algoritmo "maior"var num1,num2,maior : inteiroinicio escreva("Primeiro número: ") leia(num1) escreva("Segundo número: ") leia(num2) se num1 > num2 entao
maior <- num1 senao
maior <- num2 fimse escreva("O maior é ", maior)fimalgoritmo
Comandos se aninhados• As duas formas do comando se podem aparecer
dentro de outros comando se.
se estiver fazendo sol entao se eu tiver dinheiro entao
vou a Portugal fimsefimse
algoritmo "maior"var num1,num2,maior : inteiroinicio escreva("Primeiro número: ") leia(num1) escreva("Segundo número: ") leia(num2) se num1 = num2 entao escreva("Os números são iguais.") senao se num1 > num2 entao maior <- num1 senao maior <- num2 fimse escreva("O maior é ", maior) fimsefimalgoritmo
Quando usar se aninhados?• Quando tivermos de executar blocos de comandos
diferentes para a cláusula senão das duas condições.
se estiver fazendo sol entao se eu tiver dinheiro entao vou a Portugal senao vou a praia fimsesenao vou dormirfimse
Exemplo• Uma empresa vai dar uma gratificação aos empregados
que tenham mais de 1 ano de serviço: 10% para os que tenham menos de 10 anos e 25% para os demais. Calcule a gratificação de um dado funcionário, dado o seu salário e o tempo de serviço.
Gratificaçãoalgoritmo "aumento"var salario, tempo, gratificacao : realinicio escreva("Entre com o salario: ") leia(salario) escreva("Entre com o tempo de servico: ") leia(tempo) se tempo > 1 entao se tempo < 10 entao gratificacao <- 0.1*salario senao gratificacao <- 0.25*salario fimse fimse escreva("Gratificação: ", gratificacao)fimalgoritmo
Estruturas de Decisão Múltipla do Tipo Caso
• Na estrutura de decisão do tipo Caso pode haver uma ou mais condições a serem testadas e um comando diferente associado a cada uma destas.
• A sintaxe da construção de Caso é:escolha <expressao>caso <exp_1>,<exp_2>,...,<exp_n>
<bloco_de_comandos_1>caso <exp_1>,<exp_2>,...,<exp_n>
<bloco_de_comandos_2>...caso <exp_1>,<exp_2>,...,<exp_n>
<bloco_de_comandos_n>outrocaso
<bloco_de_comandos_s>fimescolha
Fluxograma - Caso
algoritmo "extenso"var numero : inteiroinicio escreva("Digite um numero: ") leia(numero) escolha numero caso 1 escreva("um") caso 2 escreva("dois") caso 3 escreva("três") caso 4 escreva("quatro") caso 5 escreva("cinco") caso 6 escreva("seis") outrocaso escreva("só sei contar até seis") fimescolhafimalgoritmo
Exemplo• Algoritmo para reajustar o salário de acordo com a função. Se for
técnico, aumentar o salário 50%, se for gerente, aumentar 30% e se for outro cargo, aumentar 20%.algoritmo "reajuste_salarial"var salario, salario_reaj : real profissao: caracterinicioescreva("Digite o salário: ")leia(salario)escreva("Digite a profissão: ")leia(profissao)escolha profissaocaso "técnico" salario_reaj <- 1.5 * salariocaso "gerente" salario_reaj <- 1.3 * salariooutrocaso salario_reaj <- 1.2 * salariofimescolhaescreva("Salário Reajustado: ", salario_reaj)fimalgoritmo
Fluxograma
Exemplo – Sealgoritmo "idade"var idade : inteiro resultado : caracterinicioescreva("Digite sua idade: ")leia(idade)se (idade >= 0) e (idade <= 3) entao resultado <- "Bebê"senao se (idade >= 4) e (idade <= 10) entao resultado <- "Criança" senao se (idade >= 11) e (idade <= 18) entao resultado <- "Adolescente" senao resultado <- "Adulto" fimse fimsefimseescreva("Você é um ", resultado)fimalgoritmo
Exemplo – Casoalgoritmo "idade"var idade : inteiro resultado : caracterinicioescreva("Digite sua idade: ")leia(idade)escolha idadecaso 0,1,2,3 resultado <- "Bebê"caso 4,5,6,7,8,9,10 resultado <- "Criança"caso 11,12,13,14,15,16,17,18 resultado <- "Adolescente"outrocaso resultado <- "Adulto"fimescolhaescreva("Você é um ", resultado)fimalgoritmo
Recommended