Questão
ID 67030Disciplina: Tecnologia da Informação
Assuntos: Conceitos e Propriedades das Linguagens de Programação, Programação Estruturada
Ano: 2025 Banca: PERFIL - ENADE Órgão: Segundo Simulado Pnd
Uma professora de um curso de graduação em Computação, na disciplina de Paradigmas de Linguagens de Programação, está explicando a diferença entre passagem de parâmetros 'por valor' e 'por referência'. Ela sabe que este é um ponto de grande confusão para os alunos, especialmente em linguagens como Python, que usam um mecanismo intermediário chamado 'passagem por atribuição' ou 'passagem por referência de objeto'. Para simplificar e focar no conceito fundamental, ela usa exemplos em uma linguagem hipotética que claramente distingue os dois modos. Ela explica: "Na **passagem por valor**, uma cópia do valor do argumento é passada para a função. Qualquer modificação que a função faça no parâmetro afeta apenas a cópia local, não a variável original fora da função. Na **passagem por referência**, um ponteiro ou uma referência para a variável original é passado para a função. A função pode então usar essa referência para modificar diretamente o valor da variável original." Ela então apresenta dois trechos de código nesta linguagem hipotética:
Código 1 (Passagem por Valor): `procedure modifica(valor x: inteiro) x = x + 10 variavel_a = 5 modifica(variavel_a) print(variavel_a)`
Código 2 (Passagem por Referência): `procedure modifica(referencia x: inteiro) x = x + 10 variavel_b = 5 modifica(variavel_b) print(variavel_b)`
Qual será a saída impressa por cada um dos códigos?