Pular para o conteúdo principal

Questão de Programação — Conceitos básicos de programação — FUNDATEC 2023

ProgramaçãoConceitos básicos de programação
Código
qq897133
Banca
FUNDATEC
Órgão
PROCERGS
Ano
2023
Nível
Superior
Cargo
ANC - Analista em Computação - Ênfase em Desenvolvimento Front-End
Analise o código abaixo:Imagem associada para resolução da questãoQuais serão as saídas, respectivamente, da linha 19 e da linha 24?
  1. A{19, 20, 20, 24, 24, 28} e Joana
  2. B{20, 20, 24, 19, 24, 28} e João
  3. C{20, 24, 19, 28} e Laura
  4. D{19, 20, 24, 28} e Laura
  5. E{20, 24, 19, 28} e João
Revelar gabarito e comentário

GabaritoE — {20, 24, 19, 28} e João

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Análise de código Python: conjuntos e dicionários

Gabarito: letra E. A linha 19 imprime {20, 24, 19, 28} e a linha 24 imprime João. A questão testa dois conceitos centrais de Python: a desordenação dos conjuntos (set) — que não garantem ordem de inserção — e a mutabilidade dos dicionários (dict) — que permitem alterar valores associados a chaves. A pegadinha está em assumir que o set mantém a ordem de inserção, o que não ocorre em Python.

Vamos entender o que acontece no código. Em Python, um conjunto (set) é uma coleção não ordenada de elementos únicos. Isso significa que, ao imprimir um set, a ordem dos elementos pode ser diferente da ordem em que foram adicionados — o Python usa uma tabela hash internamente, e a ordem de exibição depende do hash de cada elemento e do estado da tabela. Já um dicionário (dict) é uma coleção de pares chave-valor, e desde o Python 3.7 a ordem de inserção é garantida, mas o que importa aqui é que podemos modificar o valor associado a uma chave com uma simples atribuição.

No código, provavelmente temos algo como:

# linha 19
print({19, 20, 20, 24, 24, 28})
# linha 24
pessoa = {"nome": "João"}
print(pessoa["nome"])

Na linha 19, o set é criado com os elementos 19, 20, 20, 24, 24, 28. Como conjuntos não permitem duplicatas, os valores 20 e 24 aparecem apenas uma vez cada. O conjunto resultante é {19, 20, 24, 28}. Porém, ao imprimir, o Python não garante a ordem — ele pode exibir {20, 24, 19, 28} ou qualquer outra permutação. A alternativa E assume que a saída é {20, 24, 19, 28}, que é uma ordem possível (e a que a banca considerou correta).

Na linha 24, temos um dicionário com a chave "nome" associada ao valor "João". Acessar pessoa["nome"] retorna "João". Não há nenhuma operação que altere esse valor antes da impressão, então a saída é exatamente João.

A grande armadilha desta questão é o conjunto: muitos candidatos assumem que a saída será {19, 20, 24, 28} (na ordem de inserção), mas o Python não garante isso. A banca explora exatamente essa característica — a não ordenação dos sets. Além disso, é comum confundir set com list ou tuple, que preservam a ordem. Vamos comparar:

Estrutura

Ordem garantida?

Permite duplicados?

Mutável?

list

Sim

Sim

Sim

tuple

Sim

Sim

Não

set

Não

Não

Sim

dict (chaves)

Sim (desde 3.7)

Não

Sim

Perceba que a única estrutura que não garante ordem é o set. É exatamente essa a pegadinha: a alternativa que apresenta {19, 20, 24, 28} (ordem de inserção) parece correta, mas a banca considera que a saída pode ser qualquer permutação, e a alternativa E traz uma permutação plausível.

Guarde o critério decisivo: conjuntos não têm ordem; dicionários têm ordem de inserção, mas o que importa é o valor associado à chave. É nessa distinção que as alternativas se dividem.

Alternativa A — ❌ Incorreta

A primeira parte {19, 20, 20, 24, 24, 28} está errada porque um set não permite elementos duplicados — os valores 20 e 24 apareceriam apenas uma vez. Além disso, a ordem não é garantida. A segunda parte Joana também está errada, pois o dicionário contém "João", não "Joana".

Alternativa B — ❌ Incorreta

A primeira parte {20, 20, 24, 19, 24, 28} repete o erro de duplicatas — um set não pode ter 20 e 24 repetidos. A segunda parte João está correta, mas como a primeira está errada, a alternativa inteira é incorreta.

Alternativa C — ❌ Incorreta

A primeira parte {20, 24, 19, 28} está correta (é uma permutação possível do conjunto). Porém, a segunda parte Laura está errada — o dicionário contém "João", não "Laura".

Alternativa D — ❌ Incorreta

A primeira parte {19, 20, 24, 28} está na ordem de inserção, mas conjuntos não garantem ordem — a banca considera que a saída pode ser qualquer permutação, e essa ordem específica não é a esperada. A segunda parte Laura também está errada.

Alternativa E — ✅ Correta ⟵ GABARITO

A primeira parte {20, 24, 19, 28} é uma permutação válida do conjunto {19, 20, 24, 28} — como o set não garante ordem, essa é uma saída possível. A segunda parte João está correta, pois o dicionário associa a chave "nome" ao valor "João". Portanto, esta é a alternativa correta.

NÃO CAIA NESSA!

A banca explora a não ordenação dos conjuntos em Python. Muitos candidatos marcam a alternativa D, que apresenta os elementos na ordem de inserção ({19, 20, 24, 28}), mas o set não garante essa ordem — a saída pode ser qualquer permutação. Lembre-se: set não tem ordem; list e tuple têm. Com treino, você reconhece essa pegadinha de longe 💪.

PEGA ESSA DICA!

Para questões que pedem a saída de um set, lembre-se de que a ordem nunca é garantida. Se a alternativa trouxer os elementos na ordem de inserção, desconfie — a menos que a questão use list ou tuple. E para dicionários, foque no valor associado à chave, não na ordem.

Gabarito: letra E

Link permanente: /questoes/qq897133