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.