Podprogramy

Na závěr pár rad, jak si usnadnit práci. V Pascalu si můžeme vytvořit své vlastní příkazy, kterým říkáme procedury. Nejčastěji je používáme, chceme-li se vyhnout opisování dlouhých a přitom neustále stejných částí kódu - pomocí procedury je celé shrneme do jediného krátkého příkazu. V těle naší procedury smíme pochopitelně využívat pouze příkazy, které Pascal již zná (tedy i dříve definované procedury).

procedure NázevProcedury;
begin
end;
(proceduru musíme spáchat těsně před beginem, kterým začíná program.
Stane-li se, že procedura má své vlastní proměnné (nikdo jiný je nepoužívá), je lepší je definovat až přímo v proceduře (var mezi procedure a begin)
Procedure ProhodAB;
var PomocnaPromenna:integer;
begin
PomocnaPromenna:=B;
B:=A;
A:=PomocnaPromenna;

end.

Když máme takto nadefinovanou proceduru, můžeme ji použít kdekoliv v programu, stačí jen napsat její jméno. V našem případě pak máme příkaz ProhodAB, který prohodí A s B.

Bylo by ale zapotřebí, aby jedna a táž procedura uměla prohodit třeba i C a D... I to Pascal umožňuje - slouží k tomu tzv. parametry:
Procedure Prohod(var PrA,PrB:integer);
Var Pomoc:integer;
Begin

Pomoc:=PrA;
PrA:=PrB;
PrB:=Pomoc;
End.

Takovouto proceduru pak voláme takto Prohod(A,B) a ona prohodí A s B. Napíšeme-li pak Prohod(C,X) - tak prohodí C s X (Při volání procedury jsou naše parametry nahrazeny proměnnými v závorce). Pokud nechceme, aby se hodnota původních proměnných měnila, tak není nic snazšího, než u parametrů vynechat var:tedy asi takto procedure NevimCo(A,B:integer) (Měla by naše prohazovací procedura bez toho var smysl?)

No a poslední vymožeností jsou funkce. Platí o nich to samé co o procedurách, jsou ovšem o něco specifičtější.

Definice:
function NázevFunkce(Parametry):VýslednýTyp;
Dále je vše stejné jako u procedur. Jediný rozdíl je v tom, že funkce není příkaz, ale udává hodnotu. Někde v těle funkce (tedy mezi jejím begin a end) se musí objevit přiřazení NázevFunkce:=Hodnota; (Toto přiřazení se ale smí objevit jen jednou)
Raději na příkladě:

Program NasobeniSOdcitanim;
uses Crt;
var A,B,C:integer;

function NasobAOdecti(NA,NB:integer):integer;
begin
 Sound(NA);
 Delay(NB)
 NoSound;
 NasobAOdecti:=NA*NB-NA-NB;
end;

Begin
 Readln(A,B);
 C:=NasobAOdecti(A,B);
 Writeln(C);
 Readln;
End.

Doufám, že nyní je vše zřejmé. Nyní již umíte vše potřebné k tomu, abyste mohli napsat téměř jakýkoliv užitečný program. Pište své vlastní programy a pište a pište a pište. Chybami se člověk učí.

Nyní musíte sami získat zkušenosti (= napsat tak 50 vlastních prográmků) a zběhlost v používání IDE a nápovědy.

Pokud získáte pocit, že vše, co jsem zde uvedl, je vám jasné, a budete se chtít dále zdokonalit, přečtěte si sekci pro pokročilé.