W językach z rodziny Pascal/Delphi sposób przekazywania parametrów wynika bezpośrednio z deklaracji parametrów formalnych.
Przekazywanie przez referencję zachodzi wtedy, gdy parametr jest poprzedzony słowem kluczowym Var. Oznacza to, że do procedury trafia odwołanie do tej samej zmiennej, która została użyta jako argument wywołania. W praktyce procedura może zmienić jej wartość, a efekt będzie widoczny także po powrocie z procedury.
Przekazywanie przez wartość (bez Var) polega na utworzeniu kopii argumentu w parametrze lokalnym. Modyfikacje wykonane w procedurze dotyczą wtedy tylko tej kopii i nie zmieniają oryginalnej zmiennej wywołującej.
W pokazanej deklaracji: Procedure Zadanie (Var a, b, c: Byte; Var x: Word); zarówno grupa a, b, c, jak i parametr x mają poprzedzające je Var. To przesądza, że w momencie wywołania procedury wszystkie te argumenty są przekazywane przez referencję.
Dlaczego pozostałe odpowiedzi nie pasują?
- "wartość" byłaby poprawna, gdyby przy parametrach nie było Var (czyli procedura dostałaby kopie).
- "wskaźnik" to inne pojęcie: wskaźnik jest osobnym typem/daną, którą zwykle deklaruje się jawnie. Samo Var nie oznacza, że przekazujesz wskaźnik jako wartość.
- "stałą" wiąże się z parametrami tylko do odczytu (np. Const), a nie z możliwością modyfikacji argumentu.
Wskazówka egzaminacyjna: jeśli w nagłówku widzisz Var, myśl "procedura może zmienić argument"; jeśli Var nie ma, myśl "procedura pracuje na kopii".