Logica Algoritmo 04 Decisao

Preview:

Citation preview

Introdução à Lógica

Desvios Condicionais

Regis Pires Magalhãesregis@cefetpi.br

Ú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