Questão FC373197
Considere que há 3 categorias para pagantes de pensões alimentícias: a primeira engloba os que pagam até 1 valor base (R$ 900.00), a segunda os que pagam de 2 até 4 valores base e
Algoritmos e Lógica de Programação
FCC · 2018
Considere que há 3 categorias para pagantes de pensões alimentícias: a primeira engloba os que pagam até 1 valor base (R$ 900.00), a segunda os que pagam de 2 até 4 valores base e a terceira os que pagam acima de 4 valores base. Um programador apresentou o trecho em pseudocódigo abaixo como solução para identificar os pagantes destas 3 categorias.
Var valor: real
...
imprima("Qual é o valor da pensão alimentícia? ")
leia(valor)
escolha (valor)
caso 900.00: imprima("Categoria 1")
caso 1800.00, 2700.00, 3600.00: imprima("Categoria 2")
senão imprima("Categoria 3")
fim_escolha
....
Um Técnico Programador, ao analisar o trecho acima, afirma corretamente que
- não há erro de lógica nem de sintaxe.
- o comando escolha deve ser substituído por um conjunto de comandos condicionais (se) aninhados que trate os valores da variável valor (do tipo real) como solicitado.
- o comando escolha é o mais adequado para a solução, pois os valores das pensões são múltiplos de 900.00.
- embora haja erro de sintaxe no comando escolha, a lógica da solução atende de forma correta o que foi solicitado no problema.
- para que a lógica da solução fique correta, basta trocar o tipo da variável valor para inteiro e retirar os .00 dos valores de cada caso do comando escolha.
Mostrar resposta e comentário
Gabarito
B
Comentário do professor
A alternativa está correta porque a estrutura ESCOLHA‑CASO trabalha com correspondência a valores *exatos*, enquanto o enunciado pede teste por intervalos (até 1 base, de 2 a 4 bases, acima de 4 bases). Para isso é necessário usar condicionais que aceitem operadores relacionais.
Usando a variável valor, os testes devem ser, por exemplo, \(valor \le 900.00\) para a primeira categoria, \(1800.00 \le valor \le 3600.00\) para a segunda, e \(valor > 3600.00\) para a terceira. Essas comparações são feitas naturalmente com a estrutura SE (possivelmente aninhada):
se \(valor \le 900.00\) então
imprima("Categoria 1")
senão se \(1800.00 \le valor \le 3600.00\) então
imprima("Categoria 2")
senão
imprima("Categoria 3")
fim_se
Conteúdo do catálogo FC Concursos · Atualizado em