21
Introdução à Lógica Desvios Condicionais Regis Pires Magalhães [email protected] Última atualização em 17/04/2008

Logica Algoritmo 04 Decisao

Embed Size (px)

Citation preview

Page 1: Logica Algoritmo 04 Decisao

Introdução à Lógica

Desvios Condicionais

Regis Pires Magalhã[email protected]

Última atualização em 17/04/2008

Page 2: Logica Algoritmo 04 Decisao

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

Page 3: Logica Algoritmo 04 Decisao

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)

Page 4: Logica Algoritmo 04 Decisao

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

Page 5: Logica Algoritmo 04 Decisao

Comando se

se <condicao> entao <bloco de comandos 1>senao <bloco de comandos 2>fimse

Page 6: Logica Algoritmo 04 Decisao

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

Page 7: Logica Algoritmo 04 Decisao

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

Page 8: Logica Algoritmo 04 Decisao

Exemplo

algoritmo "domingo"inicio acorde se estiver fazendo sol entao va a praia compre um picole senao leia jornal durma acorde fimse almocefimalgoritmo

Page 9: Logica Algoritmo 04 Decisao

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

Page 10: Logica Algoritmo 04 Decisao

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

Page 11: Logica Algoritmo 04 Decisao

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

Page 12: Logica Algoritmo 04 Decisao

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

Page 13: Logica Algoritmo 04 Decisao

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.

Page 14: Logica Algoritmo 04 Decisao

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

Page 15: Logica Algoritmo 04 Decisao

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

Page 16: Logica Algoritmo 04 Decisao

Fluxograma - Caso

Page 17: Logica Algoritmo 04 Decisao

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

Page 18: Logica Algoritmo 04 Decisao

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

Page 19: Logica Algoritmo 04 Decisao

Fluxograma

Page 20: Logica Algoritmo 04 Decisao

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

Page 21: Logica Algoritmo 04 Decisao

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