Aula 10 – Comando de Decisão
Múltipla e Comando de Repetição
   Prof. André Constantino da Silva
           LOGT1 – Lógica
               Noturno


             18 de maio de 2012
Na aula anterior...

• Resultados dos operadores matemáticos

• Operadores
    - Relacionais
    - Lógicos


• Comando de Decisão Múltipla
Nesta aula...

• Comando de Decisão Múltipla
• Comandos de Repetição
Comando de Decisão Múltipla

Algumas situações
exigem a realização
de uma ação dentre
várias ações
possíveis, baseado
no valor de uma
variável (condição)

- Estutura escolha
Exemplo
Considere a seguinte classificação de
faixa etária de atletas:
                Categoria                Idade
     Infantil                  5 a 10 anos
     Juvenil                   11 a 15 anos
     Junior                    16 a 20 anos
     Profissional              21 a 25 anos
     Não classificado          Demais idades


Como seria um algortimo que leia a idade
do atleta e diga qual é a categoria deste
atleta?
Resposta
        Usando conhecimentos aprendidos
algoritmo "categorias de atletas"
var
  idade: inteiro
inicio
     leia(idade)
     se (idade >= 5) e (idade <= 10) entao
         escreva("Atleta é da categoria Infantil")
     senao
         se (idade >= 11) e (idade <= 15) entao
             escreva("Atleta é da categoria Juvenil")
         senao
             se (idade >= 16) e (idade <= 20) entao
                  escreva("Atleta é da categoria Junior")
             senao
                  se (idade >= 21) e (idade <= 25) entao
                       escreva("Atleta é da categoria Profissional")
                  senao
                       escreva("O atleta não pode ser classificado nas categorias")
                  fimse
             fimse
         fimse
     fimse
fimalgoritmo
Resposta – Usando Escolha
algoritmo "categorias de atletas"
var
  idade: inteiro
inicio
     leia(idade)
     escolha idade
           caso 5, 6, 7, 8, 9, 10
              escreva("Atleta é da categoria Infantil")
           caso 11, 12, 13, 14, 15
              escreva("Atleta é da categoria Juvenil")
           caso 16, 17, 18, 19, 20
              escreva("Atleta é da categoria Junior")
           caso 21, 22, 23, 24, 25
              escreva("Atleta é da categoria Profissional")
           outrocaso
              escreva("O atleta não pode ser classificado nas categorias")
     fimescolha
fimalgoritmo
Estrutura do Escolha

escolha <expressão-de-seleção>
    caso <valor1a>, <valor2a>, ..., <valorna>
        <comandos-a>
    caso <valor1b>, <valor2b>, ..., <valornb>
        <comandos-b>
    caso <valor1c>, <valor2c>, ..., <valornb>
        <comandos-c>
    ...
    outrocaso
        < comandos-x>
fimescolha
Exercício
Vamos classificar os alunos conforme a
frequência na matéria Considerando que a
frequência seja um número inteiro de 0 a
10.
               Categoria           Frequência
     Assíduo                            10
     Boa frequência                    8 ou 9
     Frequência regular                6 ou 7
     Baixa frequência               3, 4 ou 5
     Baixíssima frequência          0, 1 ou 2
     Frequencia não pode ser            <0
Escreva um algoritmo que imprima a qual
     negativa

categoriaque 0nãoaluno pertence.10
           um pode ser
     Frequencia
     maior
                               >
Exercício
Altere o algoritmo para a seguinte
situação:
              Categoria           Frequência
    Assíduo                   9 < frequencia <= 10
    Boa frequência            7 < frequencia <= 9
    Frequência regular        5 < frequencia <= 7
    Baixa frequência          2 < frequencia <= 5
    Baixíssima frequência     0 <= frequencia <= 2
    Frequencia não pode ser           <0
    negativa
    Frequencia não pode ser          > 10
    maior que 0
Quando usar qual?
Todos são estruturas de condição

•   se-entao

•   se-entao-senao

•   escolha
Observem
  • Onde está a condição na estrutura?

se <expressão-lógica-verdadeira> entao
                                         escolha <expressão-de-seleção>
        <comando(s)1>                             caso <valor1a>, <valor2a>, ...
fimse                                                      <comandos-a>
                                                  caso <valor1b>, <valor2b>, ...
                                                           <comandos-b>
                                                  caso <valor1c>, <valor2c>, ...
                                                           <comandos-c>
                                                  ...
se <expressão-lógica-verdadeira> entao
                                                  outrocaso
        <comando(s)1>                                      < comandos-x>
senao                                    fimescolha
        <comando(s)2>
fimse
Observem
  Quantas opções de comandos a executar existem?


se <expressão-lógica-verdadeira> entao
                                         escolha <expressão-de-seleção>
        <comando(s)1>                             caso <valor1a>, <valor2a>, ...
fimse                                                      <comandos-a>
                                                  caso <valor1b>, <valor2b>, ...
                                                           <comandos-b>
                                                  caso <valor1c>, <valor2c>, ...
                                                           <comandos-c>
                                                  ...
se <expressão-lógica-verdadeira> entao
                                                  outrocaso
        <comando(s)1>                                      < comandos-x>
senao                                    fimescolha
        <comando(s)2>
fimse
Estrutura de Repetição
Estrutura de Repetição
• Decidir e controlar quantas vezes
  uma ação (ou conjunto de ações)
  deve ser executada

• Também chamadas de estruturas de
  iteração ou laços

• Em Portugol, temos:
   - enquanto-faca
   - para-faca
Exemplo 1
• Imprimir * cem vezes
Exemplo 1
algoritmo " escreve_*_100_vezes"
var i: inteiro
inicio
i <- 1
enquanto i <= 100 faca
   escreval(“*”)
   i <- i+1
fimenquanto
fimalgoritmo
Exemplo 2
• Imprimir de 1 a 5
Exemplo 2
algoritmo " escreve_numeros_1_a_5"
var i: inteiro
inicio
i <- 1
enquanto i <= 5 faca
   escreval(i)
   i <- i+1
fimenquanto
fimalgoritmo
Estrutura de Repetição enquanto-faca




enquanto <expressão-lógica-verdadeira> faca
    <seqüência-de-comandos>
fimenquanto
Exemplo 3


Faça um algoritmo que leia um
numero do usuário e só pare de
solicitar o número somente quando
ele digitar 1001
Exemplo 3

algoritmo "digite1001"
var numero: inteiro
inicio
enquanto (numero <> 1001) faca
   leia(numero)
fimenquanto
fimalgoritmo
Exemplo 3


Faça um algoritmo que leia uma
palavra do usuário e pare de
solicitar a palavra somente quando
ele digitar sair
Exemplo 3

algoritmo "digiteSair"
var texto: caracter
inicio
enquanto (texto <> "sair") faca
   leia(texto)
fimenquanto
fimalgoritmo
Exemplo 4
• Escreva * a quantidade de vezes do
  usuário pedir
Exemplo 4
algoritmo "escreva varias vezes"
var
  quantidade, totalimpresso: inteiro
inicio
  escreva("Digite a quantidade de vezes: ")
  leia(quantidade)
  totalimpresso <- 0
  enquanto (totalimpresso <> quantidade) faca
     escreva("*")
     totalimpresso <- totalimpresso + 1
  fimenquanto
fimalgoritmo
Exemplo 5
• Leia um número inteiro positivo do
  usuário e escreva todos os números
  inteiros até o número escolhido
Exemplo 5
algoritmo "escreva numeros inteiros"
var
  numerodesejado, numeroatual: inteiro
inicio
  escreva("Digite um numero inteiro: ")
  leia(numerodesejado)
  numeroatual <- 0
  enquanto (numeroatual <> numerodesejado) faca
     escreva(numeroatual, " ")
     numeroatual <- numeroatual + 1
  fimenquanto
  escreva(numeroatual, " ")
fimalgoritmo
Exemplo 6
• Calcular o n-ésimo elemento da
  sequência

1, 3, 5, 7, 9, ...
1, 3, 5, 7, 9, ...
algoritmo "categorias de atletas"
var
  indicedesejado, indice, numeroanterior, numeroatual:
inteiro
inicio
  indice <- 0
  numeroanterior <- 0
  numeroatual <- 1
  leia(indicedesejado)
  enquanto (indice <> indicedesejado) faca
     numeroanterior <- numeroatual
     numeroatual <- numeroanterior + 2
     indice <- indice + 1
     escreva(numeroatual, " ")
  fimenquanto
fimalgoritmo

Aula 10 - Comando de Decisão Múltipla e Comandos de Repetição

  • 1.
    Aula 10 –Comando de Decisão Múltipla e Comando de Repetição Prof. André Constantino da Silva LOGT1 – Lógica Noturno 18 de maio de 2012
  • 2.
    Na aula anterior... •Resultados dos operadores matemáticos • Operadores - Relacionais - Lógicos • Comando de Decisão Múltipla
  • 3.
    Nesta aula... • Comandode Decisão Múltipla • Comandos de Repetição
  • 4.
    Comando de DecisãoMúltipla Algumas situações exigem a realização de uma ação dentre várias ações possíveis, baseado no valor de uma variável (condição) - Estutura escolha
  • 5.
    Exemplo Considere a seguinteclassificação de faixa etária de atletas: Categoria Idade Infantil 5 a 10 anos Juvenil 11 a 15 anos Junior 16 a 20 anos Profissional 21 a 25 anos Não classificado Demais idades Como seria um algortimo que leia a idade do atleta e diga qual é a categoria deste atleta?
  • 6.
    Resposta Usando conhecimentos aprendidos algoritmo "categorias de atletas" var idade: inteiro inicio leia(idade) se (idade >= 5) e (idade <= 10) entao escreva("Atleta é da categoria Infantil") senao se (idade >= 11) e (idade <= 15) entao escreva("Atleta é da categoria Juvenil") senao se (idade >= 16) e (idade <= 20) entao escreva("Atleta é da categoria Junior") senao se (idade >= 21) e (idade <= 25) entao escreva("Atleta é da categoria Profissional") senao escreva("O atleta não pode ser classificado nas categorias") fimse fimse fimse fimse fimalgoritmo
  • 7.
    Resposta – UsandoEscolha algoritmo "categorias de atletas" var idade: inteiro inicio leia(idade) escolha idade caso 5, 6, 7, 8, 9, 10 escreva("Atleta é da categoria Infantil") caso 11, 12, 13, 14, 15 escreva("Atleta é da categoria Juvenil") caso 16, 17, 18, 19, 20 escreva("Atleta é da categoria Junior") caso 21, 22, 23, 24, 25 escreva("Atleta é da categoria Profissional") outrocaso escreva("O atleta não pode ser classificado nas categorias") fimescolha fimalgoritmo
  • 8.
    Estrutura do Escolha escolha<expressão-de-seleção> caso <valor1a>, <valor2a>, ..., <valorna> <comandos-a> caso <valor1b>, <valor2b>, ..., <valornb> <comandos-b> caso <valor1c>, <valor2c>, ..., <valornb> <comandos-c> ... outrocaso < comandos-x> fimescolha
  • 9.
    Exercício Vamos classificar osalunos conforme a frequência na matéria Considerando que a frequência seja um número inteiro de 0 a 10. Categoria Frequência Assíduo 10 Boa frequência 8 ou 9 Frequência regular 6 ou 7 Baixa frequência 3, 4 ou 5 Baixíssima frequência 0, 1 ou 2 Frequencia não pode ser <0 Escreva um algoritmo que imprima a qual negativa categoriaque 0nãoaluno pertence.10 um pode ser Frequencia maior >
  • 10.
    Exercício Altere o algoritmopara a seguinte situação: Categoria Frequência Assíduo 9 < frequencia <= 10 Boa frequência 7 < frequencia <= 9 Frequência regular 5 < frequencia <= 7 Baixa frequência 2 < frequencia <= 5 Baixíssima frequência 0 <= frequencia <= 2 Frequencia não pode ser <0 negativa Frequencia não pode ser > 10 maior que 0
  • 12.
    Quando usar qual? Todossão estruturas de condição • se-entao • se-entao-senao • escolha
  • 13.
    Observem •Onde está a condição na estrutura? se <expressão-lógica-verdadeira> entao escolha <expressão-de-seleção> <comando(s)1> caso <valor1a>, <valor2a>, ... fimse <comandos-a> caso <valor1b>, <valor2b>, ... <comandos-b> caso <valor1c>, <valor2c>, ... <comandos-c> ... se <expressão-lógica-verdadeira> entao outrocaso <comando(s)1> < comandos-x> senao fimescolha <comando(s)2> fimse
  • 14.
    Observem Quantasopções de comandos a executar existem? se <expressão-lógica-verdadeira> entao escolha <expressão-de-seleção> <comando(s)1> caso <valor1a>, <valor2a>, ... fimse <comandos-a> caso <valor1b>, <valor2b>, ... <comandos-b> caso <valor1c>, <valor2c>, ... <comandos-c> ... se <expressão-lógica-verdadeira> entao outrocaso <comando(s)1> < comandos-x> senao fimescolha <comando(s)2> fimse
  • 15.
  • 16.
    Estrutura de Repetição •Decidir e controlar quantas vezes uma ação (ou conjunto de ações) deve ser executada • Também chamadas de estruturas de iteração ou laços • Em Portugol, temos: - enquanto-faca - para-faca
  • 17.
  • 18.
    Exemplo 1 algoritmo "escreve_*_100_vezes" var i: inteiro inicio i <- 1 enquanto i <= 100 faca escreval(“*”) i <- i+1 fimenquanto fimalgoritmo
  • 19.
  • 20.
    Exemplo 2 algoritmo "escreve_numeros_1_a_5" var i: inteiro inicio i <- 1 enquanto i <= 5 faca escreval(i) i <- i+1 fimenquanto fimalgoritmo
  • 21.
    Estrutura de Repetiçãoenquanto-faca enquanto <expressão-lógica-verdadeira> faca <seqüência-de-comandos> fimenquanto
  • 22.
    Exemplo 3 Faça umalgoritmo que leia um numero do usuário e só pare de solicitar o número somente quando ele digitar 1001
  • 23.
    Exemplo 3 algoritmo "digite1001" varnumero: inteiro inicio enquanto (numero <> 1001) faca leia(numero) fimenquanto fimalgoritmo
  • 24.
    Exemplo 3 Faça umalgoritmo que leia uma palavra do usuário e pare de solicitar a palavra somente quando ele digitar sair
  • 25.
    Exemplo 3 algoritmo "digiteSair" vartexto: caracter inicio enquanto (texto <> "sair") faca leia(texto) fimenquanto fimalgoritmo
  • 26.
    Exemplo 4 • Escreva* a quantidade de vezes do usuário pedir
  • 27.
    Exemplo 4 algoritmo "escrevavarias vezes" var quantidade, totalimpresso: inteiro inicio escreva("Digite a quantidade de vezes: ") leia(quantidade) totalimpresso <- 0 enquanto (totalimpresso <> quantidade) faca escreva("*") totalimpresso <- totalimpresso + 1 fimenquanto fimalgoritmo
  • 28.
    Exemplo 5 • Leiaum número inteiro positivo do usuário e escreva todos os números inteiros até o número escolhido
  • 29.
    Exemplo 5 algoritmo "escrevanumeros inteiros" var numerodesejado, numeroatual: inteiro inicio escreva("Digite um numero inteiro: ") leia(numerodesejado) numeroatual <- 0 enquanto (numeroatual <> numerodesejado) faca escreva(numeroatual, " ") numeroatual <- numeroatual + 1 fimenquanto escreva(numeroatual, " ") fimalgoritmo
  • 30.
    Exemplo 6 • Calcularo n-ésimo elemento da sequência 1, 3, 5, 7, 9, ...
  • 31.
    1, 3, 5,7, 9, ... algoritmo "categorias de atletas" var indicedesejado, indice, numeroanterior, numeroatual: inteiro inicio indice <- 0 numeroanterior <- 0 numeroatual <- 1 leia(indicedesejado) enquanto (indice <> indicedesejado) faca numeroanterior <- numeroatual numeroatual <- numeroanterior + 2 indice <- indice + 1 escreva(numeroatual, " ") fimenquanto fimalgoritmo