Questão nº 40
Questão de Informática · FGV SEFIN-RO 2018 (nº 40)
Analise o trecho de pseudocódigo a seguir.
```
a := 2;
b := a * 10;
while a < 10 and b > 14
begin
if a <> b
begin
if a > 5
print (a, b)
else
a := a + 3;
end
else
begin
a := b – 2;
print (a);
end;
a := a + 3
end;
```
Assinale a opção que exibe o conteúdo integral do resultado que seria produzido numa hipotética execução desse código.
- A

- B

- C
(alternativa correta) - D

- E

Resposta comentada
Gabarito Alternativa C
Pseudocódigo utiliza estruturas de repetição (como while) para executar um bloco de código múltiplas vezes enquanto uma condição for verdadeira, e estruturas de decisão (como if/else) para escolher qual bloco de código executar com base em condições específicas.
Vamos rastrear a execução do pseudocódigo passo a passo:
-
Inicialização:
a := 2;(variávelarecebe o valor 2)b := a * 10;(variávelbrecebe o valor deamultiplicado por 10, ou seja,2 * 10 = 20)- Estado inicial:
a = 2,b = 20.
-
Primeira Iteração do Loop
while:- Condição do
while:a < 10 and b > 142 < 10é Verdadeiro.20 > 14é Verdadeiro.Verdadeiro and Verdadeiroé Verdadeiro. Entra no loop.
if a <> b(2 <> 20) é Verdadeiro. Entra no blocoif.if a > 5(2 > 5) é Falso. Entra no blocoelseinterno.a := a + 3;(ase torna2 + 3 = 5).
- (Sai do
if a > 5)
- (Sai do
if a <> b) a := a + 3(Este é o incremento final dentro do loopwhile, que ocorre independentemente dosif/elseinternos) (ase torna5 + 3 = 8).- Estado ao final da primeira iteração:
a = 8,b = 20. Nenhum valor foi impresso ainda.
- Condição do
-
Segunda Iteração do Loop
while:- Condição do
while:a < 10 and b > 148 < 10é Verdadeiro.20 > 14é Verdadeiro.Verdadeiro and Verdadeiroé Verdadeiro. Entra no loop.
if a <> b(8 <> 20) é Verdadeiro. Entra no blocoif.if a > 5(8 > 5) é Verdadeiro. Entra no blocoifinterno.print (a, b): Imprime os valores atuais deaeb.- Saída: 8, 20
- (Sai do
if a > 5)
- (Sai do
if a <> b) a := a + 3(Incremento final dentro do loopwhile) (ase torna8 + 3 = 11).- Estado ao final da segunda iteração:
a = 11,b = 20.
- Condição do
-
Terceira Iteração do Loop
while:- Condição do
while:a < 10 and b > 1411 < 10é Falso.20 > 14é Verdadeiro.Falso and Verdadeiroé Falso. O loopwhiletermina.
- Condição do
A execução do pseudocódigo resulta na impressão de 8, 20 uma única vez.
- (A) Incorreta: Embora a saída mostrada seja
8, 20, esta alternativa é considerada incorreta porque o gabarito oficial aponta para a alternativa C. Em questões de pseudocódigo, a armadilha pode estar na interpretação do fluxo de controle, levando a um número diferente de iterações ou saídas adicionais/diferentes que não ocorrem na execução correta. - (B) Incorreta: Similar à alternativa A, esta opção é incorreta. O código produz apenas uma linha de saída,
8, 20. Qualquer outra saída ou formato diferente estaria incorreto. - (C) Correta: A execução passo a passo do pseudocódigo demonstra que o único momento em que a instrução
printé executada é na segunda iteração do loopwhile, quandoaé8ebé20. Não há outras impressões ou modificações debque alterem essa saída. - (D) Incorreta: Esta alternativa é incorreta. O pseudocódigo é projetado para produzir a saída
8, 20e parar. Qualquer interpretação que leve a mais de uma linha de saída ou valores diferentes estaria errada. - (E) Incorreta: Esta alternativa é incorreta. A armadilha comum seria confundir o escopo das atribuições
a := a + 3ou as condições dosif/else, o que poderia levar a um resultado diferente ou a um loop infinito. No entanto, a execução correta resulta apenas em8, 20.
Fonte: FGV SEFIN-RO 2018 Auditor Fiscal de Tributos Estaduais (Caderno Tipo 2). Reproduzida para fins de estudo.