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.