Introdução à Lógica Desvios Condicionais Regis Pires Magalhães [email_address] Ú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(&quot;A média é &quot;, media)
Fluxograma do desvio Somente um dos blocos de comando é executado. condição Bloco de comandos 1 Bloco de comandos 2 falsa verdadeira
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ção Bloco de comandos 1 verdadeira falsa
Exemplo algoritmo &quot;domingo&quot; inicio acorde se  estiver fazendo sol  entao va a praia compre um picole senao leia jornal durma acorde fimse almoce fimalgoritmo
Exemplo Ler dois números e imprimir o maior algoritmo &quot;maior&quot; var  num1,num2,maior :  inteiro inicio escreva(&quot;Primeiro número: &quot;) leia( num1 ) escreva(&quot;Segundo número: &quot;) leia( num2 ) se  num1 > num2  entao maior  <-  num1 senao maior  <-  num2 fimse escreva(&quot;O maior é &quot;,  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   fimse fimse
algoritmo &quot;maior&quot; var num1,num2,maior : inteiro inicio escreva(&quot;Primeiro número: &quot;) leia(num1) escreva(&quot;Segundo número: &quot;) leia(num2) se num1 = num2 entao escreva(&quot;Os números são iguais.&quot;) senao se num1 > num2 entao maior <- num1 senao maior <- num2 fimse escreva(&quot;O maior é &quot;, maior) fimse fimalgoritmo
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   fimse senao     vou dormir fimse
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ção algoritmo &quot;aumento&quot; var  salario, tempo, gratificacao  : real inicio escreva(&quot;Entre com o salario: &quot;) leia( salario ) escreva(&quot;Entre com o tempo de servico: &quot;) leia( tempo ) se  tempo > 1  entao se  tempo < 10  entao   gratificacao <- 0.1*salario senao   gratificacao <- 0.25*salario fimse fimse escreva(&quot;Gratificação: &quot;,  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 &quot;extenso&quot; var numero : inteiro inicio escreva(&quot;Digite um numero: &quot;) leia(numero) escolha numero caso 1 escreva(&quot;um&quot;) caso 2 escreva(&quot;dois&quot;) caso 3 escreva(&quot;três&quot;) caso 4 escreva(&quot;quatro&quot;) caso 5 escreva(&quot;cinco&quot;) caso 6 escreva(&quot;seis&quot;) outrocaso escreva(&quot;só sei contar até seis&quot;) fimescolha fimalgoritmo
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 &quot;reajuste_salarial&quot; var salario ,  salario_reaj  : real profissao : caracter inicio escreva(&quot;Digite o salário: &quot;) leia( salario ) escreva(&quot;Digite a profissão: &quot;) leia( profissao ) escolha  profissao caso &quot;técnico&quot; salario_reaj  <-  1.5 *  salario caso &quot;gerente&quot; salario_reaj  <-  1.3 *  salario outrocaso salario_reaj  <-  1.2 *  salario fimescolha escreva(&quot;Salário Reajustado: &quot;,  salario_reaj ) fimalgoritmo
Fluxograma
Exemplo – Se algoritmo &quot;idade&quot; var idade : inteiro resultado : caracter inicio escreva(&quot;Digite sua idade: &quot;) leia(idade) se (idade >= 0) e (idade <= 3) entao resultado <- &quot;Bebê&quot; senao se (idade >= 4) e (idade <= 10) entao resultado <- &quot;Criança&quot; senao se (idade >= 11) e (idade <= 18) entao resultado <- &quot;Adolescente&quot; senao resultado <- &quot;Adulto&quot; fimse fimse fimse escreva(&quot;Você é um &quot;, resultado) fimalgoritmo
Exemplo – Caso algoritmo &quot;idade&quot; var idade : inteiro resultado : caracter inicio escreva(&quot;Digite sua idade: &quot;) leia(idade) escolha idade caso 0,1,2,3 resultado <- &quot;Bebê&quot; caso 4,5,6,7,8,9,10 resultado <- &quot;Criança&quot; caso 11,12,13,14,15,16,17,18 resultado <- &quot;Adolescente&quot; outrocaso resultado <- &quot;Adulto&quot; fimescolha escreva(&quot;Você é um &quot;, resultado) fimalgoritmo

Logica Algoritmo 04 Decisao

  • 1.
    Introdução à LógicaDesvios Condicionais Regis Pires Magalhães [email_address] Última atualização em 17/04/2008
  • 2.
    Comando de desvioPermite que o algoritmo decida autonomamente entre caminhos possíveis, qual irá executar. Exemplo: se &quot;tiver R$10,00 sobrando&quot; entao &quot;irei ao cinema&quot; fimse
  • 3.
    Bloco de comandosUm 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(&quot;A média é &quot;, media)
  • 4.
    Fluxograma do desvioSomente um dos blocos de comando é executado. condição Bloco de comandos 1 Bloco de comandos 2 falsa verdadeira
  • 5.
    Comando se se <condicao> entao <bloco de comandos 1> senao <bloco de comandos 2> fimse
  • 6.
    Comando se simplificadoCaso 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
  • 7.
    Fluxograma se simplificadoO bloco de comandos é executado somente se a condição for verdadeira. Caso contrário o algoritmo prossegue normalmente condição Bloco de comandos 1 verdadeira falsa
  • 8.
    Exemplo algoritmo &quot;domingo&quot;inicio acorde se estiver fazendo sol entao va a praia compre um picole senao leia jornal durma acorde fimse almoce fimalgoritmo
  • 9.
    Exemplo Ler doisnúmeros e imprimir o maior algoritmo &quot;maior&quot; var num1,num2,maior : inteiro inicio escreva(&quot;Primeiro número: &quot;) leia( num1 ) escreva(&quot;Segundo número: &quot;) leia( num2 ) se num1 > num2 entao maior <- num1 senao maior <- num2 fimse escreva(&quot;O maior é &quot;, maior ) fimalgoritmo
  • 10.
    Comandos se aninhadosAs 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 fimse fimse
  • 11.
    algoritmo &quot;maior&quot; varnum1,num2,maior : inteiro inicio escreva(&quot;Primeiro número: &quot;) leia(num1) escreva(&quot;Segundo número: &quot;) leia(num2) se num1 = num2 entao escreva(&quot;Os números são iguais.&quot;) senao se num1 > num2 entao maior <- num1 senao maior <- num2 fimse escreva(&quot;O maior é &quot;, maior) fimse fimalgoritmo
  • 12.
    Quando usar seaninhados? 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 fimse senao vou dormir fimse
  • 13.
    Exemplo Uma empresavai 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.
  • 14.
    Gratificação algoritmo &quot;aumento&quot;var salario, tempo, gratificacao : real inicio escreva(&quot;Entre com o salario: &quot;) leia( salario ) escreva(&quot;Entre com o tempo de servico: &quot;) leia( tempo ) se tempo > 1 entao se tempo < 10 entao gratificacao <- 0.1*salario senao gratificacao <- 0.25*salario fimse fimse escreva(&quot;Gratificação: &quot;, gratificacao ) fimalgoritmo
  • 15.
    Estruturas de DecisãoMú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
  • 16.
  • 17.
    algoritmo &quot;extenso&quot; varnumero : inteiro inicio escreva(&quot;Digite um numero: &quot;) leia(numero) escolha numero caso 1 escreva(&quot;um&quot;) caso 2 escreva(&quot;dois&quot;) caso 3 escreva(&quot;três&quot;) caso 4 escreva(&quot;quatro&quot;) caso 5 escreva(&quot;cinco&quot;) caso 6 escreva(&quot;seis&quot;) outrocaso escreva(&quot;só sei contar até seis&quot;) fimescolha fimalgoritmo
  • 18.
    Exemplo Algoritmo parareajustar 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 &quot;reajuste_salarial&quot; var salario , salario_reaj : real profissao : caracter inicio escreva(&quot;Digite o salário: &quot;) leia( salario ) escreva(&quot;Digite a profissão: &quot;) leia( profissao ) escolha profissao caso &quot;técnico&quot; salario_reaj <- 1.5 * salario caso &quot;gerente&quot; salario_reaj <- 1.3 * salario outrocaso salario_reaj <- 1.2 * salario fimescolha escreva(&quot;Salário Reajustado: &quot;, salario_reaj ) fimalgoritmo
  • 19.
  • 20.
    Exemplo – Sealgoritmo &quot;idade&quot; var idade : inteiro resultado : caracter inicio escreva(&quot;Digite sua idade: &quot;) leia(idade) se (idade >= 0) e (idade <= 3) entao resultado <- &quot;Bebê&quot; senao se (idade >= 4) e (idade <= 10) entao resultado <- &quot;Criança&quot; senao se (idade >= 11) e (idade <= 18) entao resultado <- &quot;Adolescente&quot; senao resultado <- &quot;Adulto&quot; fimse fimse fimse escreva(&quot;Você é um &quot;, resultado) fimalgoritmo
  • 21.
    Exemplo – Casoalgoritmo &quot;idade&quot; var idade : inteiro resultado : caracter inicio escreva(&quot;Digite sua idade: &quot;) leia(idade) escolha idade caso 0,1,2,3 resultado <- &quot;Bebê&quot; caso 4,5,6,7,8,9,10 resultado <- &quot;Criança&quot; caso 11,12,13,14,15,16,17,18 resultado <- &quot;Adolescente&quot; outrocaso resultado <- &quot;Adulto&quot; fimescolha escreva(&quot;Você é um &quot;, resultado) fimalgoritmo