Considere que há 3 categorias para pagantes de pensões alime...
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.
Um Técnico Programador, ao analisar o trecho acima, afirma corretamente que
Comentários
Veja os comentários dos nossos alunos
O pseudocódigo que atende ao que foi pedido se parece com o seguinte (usando comandos condicionais ao invés do comando de escolha):
Var valor: real
...
imprima("Qual é o valor da pensão alimentícia? ")
leia(valor)
se valor <= 900.00 então
imprima("Categoria 1")
senão
se valor <= 3600.00 então
imprima("Categoria 2")
senão
imprima("Categoria 3")
fim_se
fim_se
....
Resposta: b
LETRA B
No PHP esse CASE não funciona.
Gabarito: B
Há erro de lógica, pois a estrutura ESCOLHA-CASO seleciona valores exatos, e o requisito era de valores até os limites (que inclui qualquer valor entre os limites). A estrutura correta para testar se um valor está até 900.00 seria valor <= 900.00, e esse tipo de teste só pode ser feito com um condicional SE (uma vez que, como dito, ESCOLHA-CASO só trabalha com valores exatos).
É difícil falar de erro de sintaxe em pesudo-código (pois esse tipo de linguagem não possui regras formais rígidas), mas as linguagens que oferecem a estrutura de controle ESCOLHA-CASO normalmente utilizam apenas 1 valor para cada caso, diferentemente do que acontece na linha 5. Também houve omissão do ":" depois de "senão" na linha 6. Por último, não é comum a utilização de uma variável real (variável com parte decimal) - a maior parte das linguagens só aceita essa estrutura com números inteiros.
A) não há erro de lógica nem de sintaxe.
ERRADO. Conforme foi dito, existem os 2 tipos de erro.
B) 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.
CERTO. Condicionais aninhados são ótimos para realizar testes comparativos. Nesse caso, o código seria:
- se (valor <= 900.00) então
- imprima("Categoria 1")
- senão
- se (valor <= 3600.00) então
- imprima("Categoria 2")
- senão
- imprima("Categoria 3")
- fim_se
- fim_se
C) o comando escolha é o mais adequado para a solução, pois os valores das pensões são múltiplos de 900.00.
ERRADO. Em nenhum momento foi dito que o valor das pensões são múltiplos de 900.00, e ESCOLHA-CASO não é uma solução para testar intervalos.
D) embora haja erro de sintaxe no comando escolha, a lógica da solução atende de forma correta o que foi solicitado no problema.
ERRADO. Conforme foi dito, existem os 2 tipos de erro.
E) 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.
ERRADO. Isso resolveria o problema de utilização de uma variável REAL, mas ainda haveriam problemas lógicos e de sintaxe.
Força Guerreiro!!!!!!
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo