Pular para o conteúdo principal

Questão de Programação — Conceitos básicos de programação — INSTITUTO AOCP 2025

ProgramaçãoConceitos básicos de programação
Código
qg542689
Banca
INSTITUTO AOCP
Órgão
SANESUL
Ano
2025
Nível
Superior
Cargo
Analista de Tecnologia da Informação
Você, como analista de tecnologia da informação, foi designado para desenvolver uma automação que organize arquivos de um escritório, classificando-os em pastas específicas com base em suas extensões. Por exemplo, arquivos .pdf devem ser movidos para a pasta “Documentos”; arquivos .jpg, para a pasta “Imagens”, entre outros. Considerando as boas práticas de programação em Python, qual das seguintes abordagens é a mais eficiente e organizada para implementar essa solução?
  1. ACriar uma longa sequência de comandos condicionais “if” e “else” para verificar a extensão de cada arquivo e movê-lo para a pasta correta.
  2. BUsar apenas listas para armazenar os nomes dos arquivos e suas extensões, manipulando-as diretamente com loops e comandos de manipulação de strings.
  3. CEscrever todo o código em um único bloco, sem utilizar funções ou classes, para garantir que o programa seja executado de forma linear e sem interrupções.
  4. DIgnorar as estruturas de dados e criar variáveis separadas para cada tipo de arquivo, movendo-os manualmente para as pastas correspondentes.
  5. EUtilizar um dicionário para associar extensões de arquivo aos nomes das pastas, criar funções para organizar o código e usar loops para processar vários arquivos de forma eficiente. O script Python pode ser ainda estruturado em módulos.
Revelar gabarito e comentário

GabaritoE — Utilizar um dicionário para associar extensões de arquivo aos nomes das pastas, criar funções para organizar o código e usar loops para processar vários arquivos de forma eficiente. O script Python pode ser ainda estruturado em módulos.

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”.

Boas práticas em Python: dicionários, funções e módulos

Gabarito: letra E. A abordagem mais eficiente e organizada para associar extensões de arquivo a pastas é usar um dicionário (mapeamento chave→valor), funções para modularizar o código e loops para processar vários arquivos — exatamente o que a alternativa E descreve. Essa combinação segue os princípios de organização, reutilização e legibilidade que caracterizam as boas práticas de programação em Python.

O problema apresentado é um clássico de mapeamento: cada extensão de arquivo (chave) deve ser associada a uma pasta de destino (valor). Em Python, a estrutura de dados natural para esse tipo de relação é o dicionário (dict), que permite acesso direto ao valor por meio da chave, com complexidade média de O(1) — muito mais eficiente do que uma cadeia de condicionais que precisa testar cada extensão uma a uma. Além disso, o uso de funções permite isolar a lógica de organização em blocos reutilizáveis, e a modularização (separar o código em módulos) facilita a manutenção e o teste do programa. A alternativa E reúne todos esses elementos, sendo a mais alinhada às boas práticas.

Para entender por que as demais alternativas são inferiores, é preciso ter clareza sobre o que cada conceito oferece. O dicionário é uma estrutura de dados heterogênea que armazena pares chave-valor, permitindo buscar um valor rapidamente a partir de sua chave. As funções são blocos de código nomeados que podem ser chamados e reutilizados, recebendo parâmetros e retornando resultados — elas evitam repetição e organizam o fluxo do programa. Os loops (como for e while) permitem iterar sobre uma coleção de elementos, executando um bloco de código para cada um. A modularização consiste em dividir o programa em arquivos (módulos) que agrupam funções e classes relacionadas, promovendo a separação de responsabilidades.

Na prática, uma implementação eficiente para o problema seria algo como: criar um dicionário extensoes_pastas = {".pdf": "Documentos", ".jpg": "Imagens", ...}, definir uma função organizar_arquivo(arquivo) que extrai a extensão, consulta o dicionário e move o arquivo para a pasta correspondente, e usar um loop for arquivo in lista_arquivos: para processar todos os arquivos. Essa estrutura é limpa, fácil de estender (basta adicionar novas entradas ao dicionário) e evita a repetição de código. A alternativa E captura exatamente essa solução.

A pegadinha desta questão está em confundir eficiência com quantidade de código ou com simplicidade aparente. Alternativas como a A (longa sequência de if/else) até funcionam, mas são ineficientes e difíceis de manter quando o número de extensões cresce. A alternativa B (usar apenas listas) não aproveita a relação chave-valor, exigindo buscas lineares. A alternativa C (tudo em um único bloco) sacrifica a organização. A alternativa D (variáveis separadas) é inviável para muitos tipos de arquivo. A banca explora a ideia de que "funcionar" não é o mesmo que "ser eficiente e organizado" — e é essa distinção que separa a alternativa E das demais.

Guarde o critério decisivo: a solução ideal combina a estrutura de dados adequada (dicionário) com a organização do código (funções e módulos) e o processamento em massa (loops). É exatamente essa combinação que as alternativas incorretas deixam de apresentar, cada uma falhando em um aspecto específico.

1Estrutura de dados adequada
Dicionário (chave → valor)
Extensão → pasta
Acesso direto O(1)
2Organização do código
Funções (reutilização)
Módulos (separação de responsabilidades)
3Processamento em massa
Loops (for/while)
Iteração sobre arquivos
Solução ideal (Python)
LEVELsoulevel.com.br
Solução ideal (Python): Estrutura de dados adequada (Dicionário (chave → valor), Extensão → pasta, Acesso direto O(1)); Organização do código (Funções (reutilização), Módulos (separação de responsabilidades)); Processamento em massa (Loops (for/while), Iteração sobre arquivos)

Alternativa A — ❌ Incorreta

Criar uma longa sequência de comandos condicionais if/else para verificar cada extensão é ineficiente e pouco organizado. Cada nova extensão exigiria a adição de um novo bloco condicional, tornando o código extenso, repetitivo e difícil de manter. Além disso, a verificação é sequencial: para encontrar a pasta de uma extensão que está no final da cadeia, o programa precisa testar todas as anteriores. O dicionário resolve isso com acesso direto pela chave, sem necessidade de percorrer uma lista de condições.

Alternativa B — ❌ Incorreta

Usar apenas listas para armazenar nomes de arquivos e extensões, manipulando-as com loops e strings, é uma abordagem possível, mas não aproveita a relação natural de mapeamento entre extensão e pasta. Com listas, seria necessário percorrer toda a lista para encontrar a pasta correspondente a cada extensão (busca linear), o que é menos eficiente que o acesso direto por chave do dicionário. A alternativa não menciona a estrutura de dados mais adequada para o problema.

Alternativa C — ❌ Incorreta

Escrever todo o código em um único bloco, sem funções ou classes, contraria as boas práticas de programação. A falta de modularização dificulta a leitura, a manutenção e o reuso do código. Funções permitem isolar a lógica de organização, tornando o programa mais estruturado e testável. A execução linear não é uma vantagem — pelo contrário, a organização em blocos reutilizáveis é o que se espera de um código de qualidade.

Alternativa D — ❌ Incorreta

Ignorar estruturas de dados e criar variáveis separadas para cada tipo de arquivo é inviável e desorganizado. Para cada extensão, seria necessário criar uma variável distinta, o que torna o código extremamente repetitivo e impossível de generalizar. Essa abordagem não escala: se houver dezenas de extensões, o código se torna incontrolável. O dicionário, por outro lado, permite tratar todas as associações de forma uniforme e dinâmica.

Alternativa E — ✅ Correta ⟵ GABARITO

A alternativa E descreve a abordagem mais eficiente e organizada: utilizar um dicionário para associar extensões a pastas, criar funções para organizar o código e usar loops para processar vários arquivos. O dicionário oferece acesso direto à pasta a partir da extensão (chave), as funções promovem a reutilização e a legibilidade, e os loops automatizam o processamento em massa. A menção à estruturação em módulos reforça ainda mais a aderência às boas práticas, permitindo separar a lógica de organização em arquivos independentes e reutilizáveis.

PEGA ESSA DICA!

Em questões de boas práticas, procure a alternativa que combine a estrutura de dados adequada ao problema (dicionário para mapeamentos), a organização do código (funções, módulos) e o processamento eficiente (loops). Alternativas que propõem apenas condicionais, listas ou código monolítico geralmente são distratores — elas "funcionam", mas não são a melhor prática.

Gabarito: letra E

Link permanente: /questoes/qg542689