Autor: Kub@z | 13.4.2004 |
procedure ahoj;
begin
writeln('Ahoj lidi');
writeln('Jak se mate?');
end;
begin
ahoj;
ahoj;
ahoj;
end.
procedure ahoj(kdo: string);
begin
writeln('Ahoj '+kdo);
end;
begin
ahoj('Petře'); (* vypíše "Ahoj Petře" *)
ahoj('Jano'); (* vypíše "Ahoj Jano" *)
ahoj('Honzo'); (* vypíše "Ahoj Honzo" *)
end.
procedure ahoj(kdo,pozdrav: string)
a pokud chcete použít více parametrů různého typu, oddělují se středníkem:procedure ahoj(kdo: string; cislo: integer)
V proceduře je také možné deklarovat lokální proměnné. Lokální proměnná je proměnná použitelná pouze v proceduře, kde je deklarována a nikde jinde. Naproti tomu globální proměnnou je možné použít kdekoliv - jak v hlavním programu, tak ve všech procedurách:
var text: string;
procedure ahoj;
begin
writeln(text); (* vypíše proměnnou text *)
end;
begin
text := 'ahoj lidi';
ahoj;
writeln(text);
end.
procedure ahoj;
var text: string;
begin
writeln(text); (* vypíše proměnnou text *)
end;
begin
text := 'ahoj lidi'; (* zde překladač zahlásí chybu *)
ahoj; (* proměnná text pro tuto část programu neexistuje *)
end.
function dvakrat(co: integer): integer;
begin
dvakrat := co*2;
end;
begin
writeln(dvakrat(5));
end.
function stranac(a,b: real): real;
begin
stranac := sqrt(a*a+b*b);
end;
begin
writeln('Strana c (a=3,b=4): ',stranac(3,4));
end.
function vydel(co,cim: real): real;
begin
if cim = 0 then begin (* pokud se dělitel = 0 tak se z funkce vyskočí *)
writeln('Nelze delit nulou'); (* a vypíše se text "Nelze delit nulou" *)
vydel := 0; (* funkce vydel vrátí hodnotu 0, aby bylo jasné že neproběhla *)
exit; (* vyskočení *)
end;
vydel := co / cim; (* pokud se dělitel není nula, provede se dělení *)
end;
begin
writeln(vydel(50,8));
writeln(vydel(88.2,0)); (* zkusíme dělit nulou *)
end.
var f: file;
begin
assign(f,'neexistujici');
{$I-}
reset(f);
{$I+}
if ioresult <> 0 then writeln('soubor se nepodarilo otevrit');
end.
procedure ahoj(var x: mujtyp);
Tím jsme řekli překladači, že "x" není proměnná jako parametr, ale je to odkaz na proměnnou uvedenou ve volání procedury. Zjednodušeně řečeno to znamená, že když přiřadíme hodnotu do "x" tak změníme obsah proměnné uvedené v parametru zavolání funkce. Vím, zní to sice trochu složitě, ale z příkladu je to hned jasné:
var prom: string;
procedure zmen(var txt: string);
begin
txt := 'Zmeneny text'; (* ve skutečnosti měníme hodnotu proměnné "prom" *)
end;
begin
prom := 'ahoj';
zmen(prom); (* Jako "var" parametr musí být vždy uvedena proměnná *)
writeln(prom); (* Vypíše "Zmeneny text" *)
end.