Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Logica Algoritmo 04 Decisao

13,935 views

Published on

  • Be the first to comment

Logica Algoritmo 04 Decisao

  1. 1. Introdução à Lógica Desvios Condicionais <ul><ul><li>Regis Pires Magalhães </li></ul></ul><ul><ul><li>[email_address] </li></ul></ul><ul><ul><li>Última atualização em 17/04/2008 </li></ul></ul>
  2. 2. Comando de desvio <ul><li>Permite que o algoritmo decida autonomamente entre caminhos possíveis, qual irá executar. </li></ul><ul><li>Exemplo: </li></ul><ul><ul><li>se &quot;tiver R$10,00 sobrando&quot; entao </li></ul></ul><ul><ul><ul><li>&quot;irei ao cinema&quot; </li></ul></ul></ul><ul><ul><li>fimse </li></ul></ul>
  3. 3. Bloco de comandos <ul><li>Um bloco de comandos é uma série de comandos </li></ul><ul><li>Em um bloco ou todos os comandos são executados ou nenhum é. </li></ul><ul><li>Exemplo: </li></ul><ul><ul><li>leia(n1, n2) </li></ul></ul><ul><ul><li>media <- (n1+n2)/2 </li></ul></ul><ul><ul><li>escreva(&quot;A média é &quot;, media) </li></ul></ul>
  4. 4. Fluxograma do desvio <ul><li>Somente um dos blocos de comando é executado. </li></ul>condição Bloco de comandos 1 Bloco de comandos 2 falsa verdadeira
  5. 5. Comando se <ul><li>se <condicao> entao </li></ul><ul><li><bloco de comandos 1> </li></ul><ul><li>senao </li></ul><ul><li><bloco de comandos 2> </li></ul><ul><li>fimse </li></ul>
  6. 6. Comando se simplificado <ul><li>Caso o bloco de comandos depois do senão seja vazio, esta parte pode ser omitida. </li></ul><ul><li>A forma geral simplificada é: </li></ul><ul><li>se <condicao> entao </li></ul><ul><li><bloco de comandos> fimse </li></ul>
  7. 7. Fluxograma se simplificado <ul><li>O bloco de comandos é executado somente se a condição for verdadeira. </li></ul><ul><li>Caso contrário o algoritmo prossegue normalmente </li></ul>condição Bloco de comandos 1 verdadeira falsa
  8. 8. Exemplo <ul><li>algoritmo &quot;domingo&quot; </li></ul><ul><li>inicio </li></ul><ul><li>acorde </li></ul><ul><li>se estiver fazendo sol entao </li></ul><ul><li>va a praia </li></ul><ul><li>compre um picole </li></ul><ul><li>senao </li></ul><ul><li>leia jornal </li></ul><ul><li>durma </li></ul><ul><li>acorde </li></ul><ul><li>fimse </li></ul><ul><li>almoce </li></ul><ul><li>fimalgoritmo </li></ul>
  9. 9. Exemplo <ul><li>Ler dois números e imprimir o maior </li></ul><ul><ul><li>algoritmo &quot;maior&quot; </li></ul></ul><ul><ul><li>var num1,num2,maior : inteiro </li></ul></ul><ul><ul><li>inicio </li></ul></ul><ul><ul><li>escreva(&quot;Primeiro número: &quot;) </li></ul></ul><ul><ul><li>leia( num1 ) </li></ul></ul><ul><ul><li>escreva(&quot;Segundo número: &quot;) </li></ul></ul><ul><ul><li>leia( num2 ) </li></ul></ul><ul><ul><li>se num1 > num2 entao </li></ul></ul><ul><ul><li>maior <- num1 </li></ul></ul><ul><ul><li>senao </li></ul></ul><ul><ul><li>maior <- num2 </li></ul></ul><ul><ul><li>fimse </li></ul></ul><ul><ul><li>escreva(&quot;O maior é &quot;, maior ) </li></ul></ul><ul><ul><li>fimalgoritmo </li></ul></ul>
  10. 10. Comandos se aninhados <ul><li>As duas formas do comando se podem aparecer dentro de outros comando se . </li></ul><ul><li>se estiver fazendo sol entao </li></ul><ul><li> se eu tiver dinheiro entao </li></ul><ul><li> vou a Portugal fimse fimse </li></ul>
  11. 11. <ul><li>algoritmo &quot;maior&quot; </li></ul><ul><li>var num1,num2,maior : inteiro </li></ul><ul><li>inicio </li></ul><ul><li>escreva(&quot;Primeiro número: &quot;) </li></ul><ul><li>leia(num1) </li></ul><ul><li>escreva(&quot;Segundo número: &quot;) </li></ul><ul><li>leia(num2) </li></ul><ul><li>se num1 = num2 entao </li></ul><ul><li>escreva(&quot;Os números são iguais.&quot;) </li></ul><ul><li>senao </li></ul><ul><li>se num1 > num2 entao </li></ul><ul><li>maior <- num1 </li></ul><ul><li>senao </li></ul><ul><li>maior <- num2 </li></ul><ul><li>fimse </li></ul><ul><li>escreva(&quot;O maior é &quot;, maior) </li></ul><ul><li>fimse </li></ul><ul><li>fimalgoritmo </li></ul>
  12. 12. Quando usar se aninhados? <ul><li>Quando tivermos de executar blocos de comandos diferentes para a cláusula senão das duas condições. </li></ul><ul><li>se estiver fazendo sol entao </li></ul><ul><li> se eu tiver dinheiro entao </li></ul><ul><li> vou a Portugal </li></ul><ul><li> senao </li></ul><ul><li> vou a praia fimse </li></ul><ul><li>senao </li></ul><ul><li> vou dormir fimse </li></ul>
  13. 13. Exemplo <ul><li>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. </li></ul>
  14. 14. Gratificação <ul><li>algoritmo &quot;aumento&quot; </li></ul><ul><li>var salario, tempo, gratificacao : real </li></ul><ul><li>inicio </li></ul><ul><li>escreva(&quot;Entre com o salario: &quot;) </li></ul><ul><li>leia( salario ) </li></ul><ul><li>escreva(&quot;Entre com o tempo de servico: &quot;) </li></ul><ul><li>leia( tempo ) </li></ul><ul><li>se tempo > 1 entao </li></ul><ul><li>se tempo < 10 entao </li></ul><ul><li> gratificacao <- 0.1*salario </li></ul><ul><li>senao </li></ul><ul><li> gratificacao <- 0.25*salario </li></ul><ul><li>fimse </li></ul><ul><li>fimse </li></ul><ul><li>escreva(&quot;Gratificação: &quot;, gratificacao ) </li></ul><ul><li>fimalgoritmo </li></ul>
  15. 15. Estruturas de Decisão Múltipla do Tipo Caso <ul><li>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. </li></ul><ul><li>A sintaxe da construção de Caso é: </li></ul><ul><ul><li>escolha <expressao> </li></ul></ul><ul><ul><li>caso <exp_1>,<exp_2>,...,<exp_n> </li></ul></ul><ul><ul><li><bloco_de_comandos_1> </li></ul></ul><ul><ul><li>caso <exp_1>,<exp_2>,...,<exp_n> </li></ul></ul><ul><ul><li><bloco_de_comandos_2> </li></ul></ul><ul><ul><li>... </li></ul></ul><ul><ul><li>caso <exp_1>,<exp_2>,...,<exp_n> </li></ul></ul><ul><ul><li><bloco_de_comandos_n> </li></ul></ul><ul><ul><li>outrocaso </li></ul></ul><ul><ul><li><bloco_de_comandos_s> </li></ul></ul><ul><ul><li>fimescolha </li></ul></ul>
  16. 16. Fluxograma - Caso
  17. 17. <ul><li>algoritmo &quot;extenso&quot; </li></ul><ul><li>var numero : inteiro </li></ul><ul><li>inicio </li></ul><ul><li>escreva(&quot;Digite um numero: &quot;) </li></ul><ul><li>leia(numero) </li></ul><ul><li>escolha numero </li></ul><ul><li>caso 1 </li></ul><ul><li>escreva(&quot;um&quot;) </li></ul><ul><li>caso 2 </li></ul><ul><li>escreva(&quot;dois&quot;) </li></ul><ul><li>caso 3 </li></ul><ul><li>escreva(&quot;três&quot;) </li></ul><ul><li>caso 4 </li></ul><ul><li>escreva(&quot;quatro&quot;) </li></ul><ul><li>caso 5 </li></ul><ul><li>escreva(&quot;cinco&quot;) </li></ul><ul><li>caso 6 </li></ul><ul><li>escreva(&quot;seis&quot;) </li></ul><ul><li>outrocaso </li></ul><ul><li>escreva(&quot;só sei contar até seis&quot;) </li></ul><ul><li>fimescolha </li></ul><ul><li>fimalgoritmo </li></ul>
  18. 18. Exemplo <ul><li>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%. </li></ul><ul><ul><li>algoritmo &quot;reajuste_salarial&quot; </li></ul></ul><ul><ul><li>var </li></ul></ul><ul><ul><li>salario , salario_reaj : real </li></ul></ul><ul><ul><li>profissao : caracter </li></ul></ul><ul><ul><li>inicio </li></ul></ul><ul><ul><li>escreva(&quot;Digite o salário: &quot;) </li></ul></ul><ul><ul><li>leia( salario ) </li></ul></ul><ul><ul><li>escreva(&quot;Digite a profissão: &quot;) </li></ul></ul><ul><ul><li>leia( profissao ) </li></ul></ul><ul><ul><li>escolha profissao </li></ul></ul><ul><ul><li>caso &quot;técnico&quot; </li></ul></ul><ul><ul><li>salario_reaj <- 1.5 * salario </li></ul></ul><ul><ul><li>caso &quot;gerente&quot; </li></ul></ul><ul><ul><li>salario_reaj <- 1.3 * salario </li></ul></ul><ul><ul><li>outrocaso </li></ul></ul><ul><ul><li>salario_reaj <- 1.2 * salario </li></ul></ul><ul><ul><li>fimescolha </li></ul></ul><ul><ul><li>escreva(&quot;Salário Reajustado: &quot;, salario_reaj ) </li></ul></ul><ul><ul><li>fimalgoritmo </li></ul></ul>
  19. 19. Fluxograma
  20. 20. Exemplo – Se <ul><li>algoritmo &quot;idade&quot; </li></ul><ul><li>var </li></ul><ul><li>idade : inteiro </li></ul><ul><li>resultado : caracter </li></ul><ul><li>inicio </li></ul><ul><li>escreva(&quot;Digite sua idade: &quot;) </li></ul><ul><li>leia(idade) </li></ul><ul><li>se (idade >= 0) e (idade <= 3) entao </li></ul><ul><li>resultado <- &quot;Bebê&quot; </li></ul><ul><li>senao </li></ul><ul><li>se (idade >= 4) e (idade <= 10) entao </li></ul><ul><li>resultado <- &quot;Criança&quot; </li></ul><ul><li>senao </li></ul><ul><li>se (idade >= 11) e (idade <= 18) entao </li></ul><ul><li>resultado <- &quot;Adolescente&quot; </li></ul><ul><li>senao </li></ul><ul><li>resultado <- &quot;Adulto&quot; </li></ul><ul><li>fimse </li></ul><ul><li>fimse </li></ul><ul><li>fimse </li></ul><ul><li>escreva(&quot;Você é um &quot;, resultado) </li></ul><ul><li>fimalgoritmo </li></ul>
  21. 21. Exemplo – Caso <ul><li>algoritmo &quot;idade&quot; </li></ul><ul><li>var </li></ul><ul><li>idade : inteiro </li></ul><ul><li>resultado : caracter </li></ul><ul><li>inicio </li></ul><ul><li>escreva(&quot;Digite sua idade: &quot;) </li></ul><ul><li>leia(idade) </li></ul><ul><li>escolha idade </li></ul><ul><li>caso 0,1,2,3 </li></ul><ul><li>resultado <- &quot;Bebê&quot; </li></ul><ul><li>caso 4,5,6,7,8,9,10 </li></ul><ul><li>resultado <- &quot;Criança&quot; </li></ul><ul><li>caso 11,12,13,14,15,16,17,18 </li></ul><ul><li>resultado <- &quot;Adolescente&quot; </li></ul><ul><li>outrocaso </li></ul><ul><li>resultado <- &quot;Adulto&quot; </li></ul><ul><li>fimescolha </li></ul><ul><li>escreva(&quot;Você é um &quot;, resultado) </li></ul><ul><li>fimalgoritmo </li></ul>

×