Considere a existência de uma linguagem de programação na qu...

Próximas questões
Com base no mesmo assunto
Q1862016 Algoritmos e Estrutura de Dados
Considere a existência de uma linguagem de programação na qual, na invocação de uma função, a passagem dos parâmetros seja exclusivamente por valor. O código abaixo está escrito nessa linguagem e os comentários (“//”) explicam o significado de cada linha. Que valor será atribuído à variável “b” após a execução do seguinte código?
a = 100                // atribui o valor 100 à variável “a”
f(a + 1)                // invoca a execução da função “f”
b = a                   // atribui o valor da variável “a” à variável “b”

def f(a) {             // define a função “f”
    a = a + 10
}

Assinale a alternativa CORRETA.
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Alternativa correta: C - 100

Vamos entender como chegamos a essa conclusão analisando passo a passo o código apresentado na questão.

Primeiramente, a variável a é atribuída com o valor 100:

a = 100

Em seguida, a função f é chamada com a + 1 como argumento:

f(a + 1)

Aqui, é crucial entender o conceito de passagem de parâmetros por valor. Quando uma função é chamada por valor, a função recebe uma cópia do valor original. Portanto, a função f receberá 101 (já que a = 100 e a + 1 resulta em 101).

Dentro da função f, o parâmetro a é incrementado em 10:

def f(a) {
    a = a + 10
}

No entanto, como essa alteração ocorre em uma cópia do valor original de a, o valor da variável a fora da função f permanece inalterado.

Depois da chamada da função, atribuímos o valor de a à variável b:

b = a

Como o valor de a fora da função não foi alterado pela chamada da função (devido à passagem por valor), b receberá o valor 100.

Portanto, a alternativa correta é C - 100.

Vamos agora justificar as alternativas incorretas:

A - 101: Esta alternativa estaria correta se a passagem de parâmetros fosse por referência e o valor de a fosse modificado diretamente. No entanto, como a passagem é por valor, isso não ocorre.

B - 110: Esta alternativa sugere que o valor de a foi modificado dentro da função e esta alteração impactou b. Como discutido, isso não acontece na passagem por valor.

D - 111: Esta alternativa mistura os resultados e não faz sentido lógico dentro do contexto da passagem por valor e das operações realizadas.

E - 11: Esta alternativa não tem base no código fornecido e parece ser uma escolha arbitrária sem relação com as operações realizadas.

Espero ter esclarecido a questão. Se precisar de mais alguma informação ou tiver dúvidas adicionais, estou à disposição! Boa sorte nos estudos!

Clique para visualizar este gabarito

Visualize o gabarito desta questão clicando no botão abaixo

Comentários

Veja os comentários dos nossos alunos

Como é passagem por valor, nada que é feito com a variável a, dentro da função, altera o a fora da mesma.

A questão é bem precisa quando pedi o valor será atribuído à variável “b” após a execução do seguinte código.

Então b = a  que é mesma coisa que b =100

Logo a alternativa é a letra C

Passagem por valor, e não por endereço, questão bem elaborada.

Pegadinha do malandroooo!!

passagem por valor.

Gab C

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo