Aqui está o gabarito (chave de correção) detalhado e estruturado para a sua prova de Conceitos de Linguagens de Programação (CLP).
Preparei os critérios de correção para facilitar a atribuição dos pontos em cada questão.
Gabarito Oficial – Avaliação de Linguagens de Programação
Questão 1. Asserção-Razão: Compilação vs Interpretação (7 pts)
- Resposta Correta: a) As asserções I e II são verdadeiras, e a II é uma justificativa técnica correta da I.
- Critério de Correção: Atribuir os 7 pontos apenas para a marcação da alternativa A. A linguagem C (compilada nativamente) converte o código para instruções de máquina antes da execução, o que a torna extremamente eficiente em laços e recursões em comparação com a sobrecarga de traduzir bytecode em tempo de execução na máquina virtual do Python.
Questão 2. Auditoria Técnica: Amarrações e Escopo (7 pts)
- a) (2 pts) A afirmação é: ( x ) Falsa.
- b) (5 pts) Justificativa e Correção:
- Termos a riscar no texto: A palavra “dinâmico” e a frase “acessar e modificar diretamente a variável x da funcao_A”.
- Justificativa Esperada: C e Java utilizam o escopo estático (léxico). Isso significa que a visibilidade e a amarração da variável são determinadas pela estrutura de blocos do código-fonte (em tempo de compilação), e não pela ordem das chamadas em tempo de execução. Logo, a
funcao_Bnão tem visibilidade sobre as variáveis locais dafuncao_A.
Questão 3. Análise de Cenário: Gestão de Memória (7 pts)
- Resposta Esperada (em tópicos para facilitar a correção):
- Resolve o vazamento? Sim, o
free(q)liberta a memória alocada dinamicamente no Heap. - O valor 10 será impresso? Não.
- Explicação (O que ocorrerá): A passagem do ponteiro
xpara o parâmetropem C ocorre por valor. O ponteiroprecebe apenas uma cópia dex. Alterarpnão afetaxnamain. Assim,xcontinua a serNULL. Tentar fazerprintfde*xresultará num erro fatal de execução (Segmentation Fault / Falha de segmentação). Além disso, invocarfree(q)destrói a zona de memória onde o 10 foi guardado.
- Resolve o vazamento? Sim, o
- Critério de Correção: 2 pontos para dizer que resolve o leak, 2 pontos para confirmar que não imprime o 10, e 3 pontos para a explicação técnica da passagem por valor e do erro do ponteiro
NULL.
Questão 4. Matriz de Decisão Arquitetural: Persistência (7 pts)
- Associações (4 pts totais / 1,33 pts cada):
- [ C ] 1. Sistema bancário… (SGBD gere concorrência e integridade transacional).
- [ B ] 2. API REST que envia o estado… (A serialização converte o estado em texto estruturado leve para transporte via rede).
- [ A ] 3. Script em background registrando uso de CPU… (Logs textuais são rápidos para inserções sequenciais simples).
- Tarefa 2 - Justificativa (3 pts): * Resposta Esperada: Para comunicar um estado complexo via rede entre um backend (Java) e um frontend (Angular), a serialização (JSON) é a única viável por criar um formato estruturado, leve e agnóstico de plataforma. Arquivos de texto seriam difíceis de interpretar (parse) de forma fiável, e abrir uma ligação direta ao SGBD no frontend comprometeria a segurança e a arquitetura.
Questão 5. Refatoração: Paradigmas de Programação (7 pts)
- Pilar violado (2 pts): Encapsulamento (ou Ocultação de Informação).
- Código Refatorado (5 pts):
- Critérios: O estudante deve obrigatoriamente tornar o atributo privado e fornecer um método de comportamento (ex:
sacaroulevantar) que faça a verificação de negócio.
- Critérios: O estudante deve obrigatoriamente tornar o atributo privado e fornecer um método de comportamento (ex:
public class ContaBancaria {
private double saldo; // 1. Mudou para private
// 2. Criou método de manipulação com regra de negócio
public void sacar(double valor) {
if (valor > 0 && (this.saldo - valor >= 0)) {
this.saldo -= valor;
}
}
}(Nota de correção: Considere correto se o estudante criar um método setSaldo* desde que este inclua o if de validação para impedir valores negativos. Soluções que apenas colocam métodos get/set vazios sem lógica de validação não ganham a cotação total, pois não resolvem o problema arquitetural descrito no cenário).*