Questão de Algoritmos e Estrutura de Dados — Algoritmos — FCC 2023
- Código
- fc068621
- Banca
- FCC
- Órgão
- Copergás - PE
- Ano
- 2023
- Nível
- Superior
- Cargo
- Analista Sistemas
- A100 e 10.
- B100 e 11.
- C80 e 10.
- D90 e 11.
- E90 e 10.
GabaritoD — 90 e 11.
Gabarito: letra D (90 e 11). O penúltimo valor exibido de z é 90 (x=10, y=9) e o valor exibido de y é 11, pois após o término do laço interno y assume o valor 11 (condição de saída).
A questão testa o comportamento de laços para (for) em pseudocódigo, especificamente o valor final da variável de controle após a última iteração. No algoritmo apresentado:
para x ← 1 até 10 passo 1 faça
para y ← 1 até 10 passo 1 faça
z ← x * y;
exiba(z)
fim_para
exiba(y)
fim_paraO laço interno executa 10 vezes para cada x, exibindo z a cada iteração. Ao final do laço interno, y é incrementado para 11 (valor que excede o limite superior) e então é exibido. Esse processo se repete para x de 1 a 10.
zSão exibidos 100 valores de z (10×10). A ordem de exibição é crescente em y para cada x. O último z exibido é x=10, y=10 → z=100. O penúltimo z (99º) é x=10, y=9 → z=90. Confira a sequência do último bloco (x=10):
y=1: exibe 10
y=2: exibe 20
...
y=9: exibe 90 ← penúltimo z geral
y=10: exibe 100 ← último z
yApós cada laço interno, y é exibido com o valor que causa a saída do laço, ou seja, 11. O último y exibido (após x=10) também é 11.
100 e 10. O penúltimo z não é 100 (é o último), e o y exibido é 11, não 10.
100 e 11. O penúltimo z está errado (é 90).
80 e 10. 80 seria x=10, y=8 (terceiro anterior), e y=10 é o limite interno antes do incremento final, mas y exibido é 11.
90 e 11. Penúltimo z = 90 (x=10, y=9) e y = 11 após o laço.
90 e 10. O penúltimo z está correto, mas o y exibido é 11.
A banca explora a confusão entre o último valor assumido pela variável de controle dentro do laço (10) e o valor após o término (11). Muitos candidatos pensam que y termina em 10, mas na verdade o laço para incrementa a variável até ultrapassar o limite, deixando-a em 11. Memorize: ao final de um for (y=1; y<=10; y++), y vale 11.
Gabarito: letra D.
Link permanente: /questoes/fc068621