Podprogramom môže byť:
Pozri si nasledovný program:
Program opakovaniePrikazov1;
Uses Crt;
Var i : Integer;
Begin
textcolor(white);
GotoXy(10,5);
For i := 1 to 10 do
Begin
write(chr(3));
End;
GotoXy(10,7);
For i := 1 to 10 do
Begin
write(chr(3));
End;
GotoXy(10,9);
For i := 1 to 10 do
Begin
write(chr(3));
End;
GotoXy(10,11);
For i := 1 to 10 do
Begin
write(chr(3));
End;
Readkey;
End.
Pri vypisovaní zvoleného znaku do riadkov používam stále rovnakú postupnosť príkazov resp. jeden príkaz:
For i := 1 to 10 do
Begin
write(chr(3));
End;
Preto definujeme na začiatku procedúru (podprogram), ktorý bude po zavolaní vykonávať túto činnosť:
Program opakovaniePrikazov2;
Uses Crt;
procedure opakuj;
Var i : Integer;
begin
textcolor(white);
for i := 1 to 10 do
write(chr(3));
end;
begin
GotoXy(10,5);
opakuj;
GotoXy(10,7);
opakuj;
GotoXy(10,9);
opakuj;
GotoXy(10,11);
opakuj;
Readkey;
end.
Procedúra s parametrom
Teraz sa pokúsime urobiť malú úpravu tohto programu - pridáme do procedúry parameter:
Program opakovaniePrikazov3;
Uses Crt;
procedure opakuj(x,y:integer); {premenne x,y = parametre resp. argumenty}
Var i : Integer; {lokalna premenna}
begin
gotoxy(x,y);
textcolor(white);
for i := 1 to 10 do
write(chr(3));
end;
begin
opakuj(10,5);
opakuj(10,7);
opakuj(10,9);
opakuj(10,11);
Readkey;
end.
A teraz ešte iné ukážky procedúr s parametrom:
program procedura1;
procedure pozdrav(s:string;i:integer);
begin
writeln(s);
writeln(i);
end;
begin
pozdrav('caf',3);
readln;
end.
a ešte raz:
program procedura2;
procedure pozdrav(s:string);
var i:integer;
begin
for i:=1 to 5 do
writeln(s);
end;
begin
pozdrav('caf');
readln;
end.
Ukážka funkcie prakticky:
program funkcie1;
var vysledok:integer;
function Plus(i,j:integer):integer;
begin
Plus:=i+j;
end;
begin
vysledok:=Plus(1,2);
writeln(vysledok);
readln;
end.
Prakticky v nasledúcom programe:
Program PreponaPytagoras;
Uses Crt;
Var stranaA, stranaB : Real;
AN : Char;
jednotka : String;
Function PytagFcia(A:Real; B:Real) : Real;
Begin
PytagFcia:= SQRT(A*A + B*B);
End;
Begin
Writeln('Vypocet prepony pravouhleho trojuholnika:');
Repeat
Writeln;
Write('Zadaj dlzku 1 odvesny : ');
Readln(stranaA);
Write('Zadaj dlzku 2 odvesny : ');
Readln(stranaB);
Repeat
Write('V akych jednotkach pocitam? : [m alebo cm] ');
Readln(jednotka);
Until (jednotka = 'm') or (jednotka = 'cm');
Writeln('Prepona = ',PytagFcia(stranaA,stranaB):10:2,' ',jednotka);
Writeln;
Write('Opakovat? ');
AN := Readkey;
Until (AN in ['N','n']);
End.