Assinale a alternativa em que na função Func1 os parâmetros par1 e par2 estão declarados por referência.
A. [ ] funcao Func1(var par1: inteiro; par2:caractere): inteiro
B. [ ] funcao Func1(par1: inteiro; var par2:caractere): inteiro
C. [ ] funcao Func1(ref par1: inteiro; val par2:caractere): inteiro
D. [ ] funcao Func1(val par1: inteiro; ref par2:caractere): inteiro
A. [ ] funcao Func1(var par1: inteiro; par2:caractere): inteiro
B. [ ] funcao Func1(par1: inteiro; var par2:caractere): inteiro
C. [ ] funcao Func1(ref par1: inteiro; val par2:caractere): inteiro
D. [ ] funcao Func1(val par1: inteiro; ref par2:caractere): inteiro
Passo 1
O enunciado pede para identificar a declaração em que ambos os parâmetros
e
são passados por referência. O conteúdo aqui é o mecanismo de passagem de parâmetros:
- Em Pascal, usa-se
para referência e, sem , é por valor. - Em C#-like, usa-se
para referência e ou omissão para valor.
Passo 2
Para que um parâmetro seja por referência, ele precisa estar marcado com
var
(Pascal) ou ref
(C#). Caso contrário—isto é, se estiver sem marcação ou com val
—ele será por valor.Passo 3
Analisando a alternativa A:
funcao Func\(1\)(var par\(1\): inteiro; par\(2\):caractere): inteiro
par\(1\)
está por referência (var
).par\(2\)
está sem marcaçãopor valor.
Logo, só um está por referência.
Passo 4
Analisando a alternativa B:
funcao Func\(1\)(par\(1\): inteiro; var par\(2\):caractere): inteiro
par\(1\)
sem marcaçãopor valor. par\(2\)
por referência (var
).
Só um por referência.
Passo 5
Analisando a alternativa C:
funcao Func\(1\)(ref par\(1\): inteiro; val par\(2\):caractere): inteiro
par\(1\)
por referência (ref
).par\(2\)
por valor (val
).
Só um por referência.
Passo 6
Analisando a alternativa D:
funcao Func\(1\)(val par\(1\): inteiro; ref par\(2\):caractere): inteiro
par\(1\)
por valor (val
).par\(2\)
por referência (ref
).
Só um por referência.
Passo 7
Nenhuma das alternativas declara os dois parâmetros por referência, pois em cada caso sempre um deles fica como passagem por valor.
Resposta
Nenhuma.