Analise o trecho de pseudocódigo a seguir. Em algumas lingua...

Próximas questões
Com base no mesmo assunto
Q1069966 Algoritmos e Estrutura de Dados

Analise o trecho de pseudocódigo a seguir.


Imagem associada para resolução da questão


Em algumas linguagens de programação é possível fazer a passagem de parâmetros como byref ou byvalue, e assim podemos supor que a função ƒ acima poderia ser reescrita especificando, para cada parâmetro, uma das duas formas citadas.

Supondo-se que o primeiro e o segundo parâmetro da função tenham sido passados como byref e o terceiro, como byvalue, os quatro valores exibidos pelo comando print seriam, respectivamente,

Alternativas

Comentários

Veja os comentários dos nossos alunos

Vou tentar explicar.

A primeira coisa que você saber é a diferença entre byref e byvalue.

byref: "Por referência. Um argumento definido como sendo ByRef, altera o valor da variável que foi passada como parâmetro para o procedimento."

byvalue: "Por valor. Um argumento definido como sendo ByValnão altera o valor da variável que foi passada como parâmetro para o procedimento."

O enunciado nos diz que "x" e "y" serão passados por byref e "z", por byvalue. Aqui, já deveríamos ter em mente que, se a função atribuir outros valores para "x" e "y" eles irão ser alterados "fora da função" também.

Pois bem, indo para a função, temos o seguinte:

a = 10 (ou seja, o valor de "x")

b = 2 (ou seja, o valor de "y")

c = 3 (ou seja, o valor de "z")

No laço de repetição, temos: "b" é menor ou igual a "c" (2 <= 3)? Sim. Então:

  1. a = b + c (a = 2 + 3), logo: a = 5 //aqui vai uma observação importante: como "x" foi passado por referência (byref) e "a" representa "x", então, fora da função, "x" agora tem o valor de 5.
  2. y = b + 1 (y = 2 + 1), logo: y = 3 //mesma ideia do comentário anterior. "b" faz referência a "y" e vice-versa. Então, se "y" foi alterado, "b" também será alterado. Daí temos, agora, que b = 3.

Dentro da função, estamos assim:

a = 5

b = 3

c = 3

Fora da função, estamos assim:

x = 5

y = 3

z = 3

Continuando para o próximo e último laço de repetição:

b <= c? 3 <= 3? Sim! Então, vamos entrar para o laço:

  1. a = b + c (a = 3 + 3), logo: a = 6 //mesmos comentários anteriores.
  2. y = b + a (y = 3 + 1), logo: y = 4 //mesmos comentários anteriores.

Agora, dentro da função estamos assim:

a = 6

b = 4

c = 3

Fora da função:

x = 6

y = 4

c = 3

Passando para o laço, temos: b <= c? 4 <= 3? Não! Então, não vamos mais executar esse laço.

Assim, retornamos a + b + c, ou seja, 6 + 4 + 3 = 13.

O print vai mostrar:

f(x, y, z) = 13

x = 6

y = 4

z = 3

(13, 6, 4, 3), alternativa letra "B".

Fonte: https://sites.google.com/site/programacaoonline/family-blog/vb-net/-byval-e-byref-em-vb-net

Clique para visualizar este comentário

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