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

Passo 1

O enunciado pede para identificar a declaração em que ambos os parâmetros \text{par}(1) e \text{par}(2) são passados por referência. O conteúdo aqui é o mecanismo de passagem de parâmetros:
  • Em Pascal, usa-se \text{var} para referência e, sem \text{var}, é por valor.
  • Em C#-like, usa-se \text{ref} para referência e \text{val} 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ção \to por 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ção \to por 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.

Exercícios relacionados