1 program odkazem_a_hodnotou;
2
3 var x,y,z:byte;
4
5 procedure hodnotou(x,y,z:byte);
6 begin
7 x:=10;
8 y:=20;
9 z:=30;
10 end;
11
12 procedure odkazem(var x,y:byte; z:byte);
13 begin
14 x:=10;
15 y:=20;
16 z:=30;
17 end;
18
19
20 begin
21 x:=6; {Přiřazení a výpis hodnot}
22 y:=7;
23 z:=8;
24 writeln('Původní hodnoty');
25 writeln('x=',x);
26 writeln('y=',y);
27 writeln('z=',z);
28 writeln;
29
30 hodnotou(x,y,z); {'Při volání hodnotou se proceduře nebo funkci předá pouze hodnota dané proměnné a vytvoří se její kopie.
31 Pracuje se s touto kopií, a proto změny její hodnoty nemají vliv na původní proměnnou.}
32 writeln('Nové hodnoty po volání hodnotou');
33 writeln('x=',x);
34 writeln('y=',y);
35 writeln('z=',z);
36 writeln;
37
38
39 odkazem(x,y,z); {Při volání odkazem se odkazujeme přímo do paměti, na adresu, kde je daná proměnná uložena.
40 Proto se hodnoty proměnných volaných odkazem (proměnné 'x' a 'y') mění.}
41 writeln('Nové hodnoty po volání odkazem');
42 writeln('x=',x);
43 writeln('y=',y);
44 writeln('z=',z);
45 writeln;
46
47
48 writeln('Při volání hodnotou se proceduře nebo funkci předá pouze hodnota dané proměnné a vytvoří se její kopie.');
49 writeln('Pracuje se s touto kopií, a proto změny její hodnoty nemají vliv na původní proměnnou.');
50 writeln;
51 writeln('Při volání odkazem se odkazujeme přímo do paměti, na adresu kde je daná proměnná uložena.');
52 writeln('Proto se hodnoty proměnných volaných odkazem (proměnné "x" a "y") mění.');
53 end.