Základní struktura programu

Program se v Pascalu člení na tři části: hlavičku, definice s deklaracemi a tělo.

Hlavička nám určuje o jaký typ programu jde. Měla by také v podobě komentáře obsahovat informace o tom, co program dělá. Též si sem můžeme napsat, co ještě chceme dodělat a co se stane, změníme-li konstanty na začátku.

Definice a deklarace zde si nadefinujeme vše, co náš program bude potřebovat.

Tělo zde jsou umístěny samotné příkazy, které se vykonají. Lze se setkat i s přístupem, že někdo nadefinuje celý program v proceduře SpustVse a v tělo pak vypadá takto:
Begin
SpustVse;
End.
Ale to už záleží jen na vás.

Takto vypadá program v Pascalu (hlavička, definice s deklaracemi, tělo)

{$X+ a nastavení dalších nezbytných přepínačů, aby šel kód vždy bez problémů přeložit}
Program NázevProgramu;
{Tohle je jenom vzorový program}

{Konec hlavičky a začátek definic a deklarací}
uses NázevJednotek;
label NázvyNávěští;
const Konstanta1 = Výraz1;
      Konstanta2 = Výraz2;
            ...
type NázevTypu1 = Definice1;
     NázevTypu2 = Definice2;
            ...
var NázevProměnné1 : TypProměnné1;
    NázevProměnné2 : TypProměnné2;
            ...
procedure NázevProcedury1(parametry1);
DefiniceProcedury1;

procedure NázevProcedury2(parametry2);
DefiniceProcedury2;
            ...

function NázevFunkce1(parametry):VýslednýTypFunkce1;
DefiniceFunkce1;

function NázevFunkce2(parametry):VýslednýTypFunkce2;
DefiniceFunkce2;
            ...
{Konec definic s deklaracemi a začátek těla programu}
Begin
  Příkaz1;
  Příkaz2;
     ...
  PříkazN;
End.

{Konec těla programu}
Dále se sice psát může, ovšem je to zcela ignorováno (asi tak jako komentář)

Nyní se blíže podívejme na hlavičku. Úplně na začátku jsou tzv. direktivy překladače (ty slouží k nastavení některých vlastností, které jsou nutné pro správný běh programu. Tyto vlastnosti jdou též nastavit v Options/Compiler. (např. {$X+} zapne Extended syntax. {$P+} povolí Open parametrs). Více se jimi budeme zabývat až časem. Pochopitelně je můžete vynechat.

Na druhém místě je pak slovo program následováno názvem programu. Vyhrazené slovo program nás informuje o tom, že půjde o spustitelnou aplikaci (a ne např. o DLL knihovnu).

Následuje komentář, kde bychom měli najít všechny potřebné informace (o tom, k čemu program je a jak se používá). Třeba takto:
{Hraje piškvorky.Ovládání intuitivní. Zatím NEDODĚLÁN - zbývá dokončit funkci PocitacNaTahu}

V Pascalu se komentáře uzavírají do složených závorek. V samotném komentáři se tedy nemůže vyskytnou konec této závorky (ale kdo by ho tam chtěl?!) Také se vyhněte kombinaci znaků (* a *). O nich si něco povíme později. A za { nikdy nepište znak $. Tato kombinace totiž slouží k něčemu jinému než psaní komentářů.

Celé definice a deklarace pak můžete vynechat. Pokud je uvedete, musíte pamatovat na to, že na prvním místě je uses a pak label. (Pokud používáte pouze nejběžnější příkazy, můžete uses vynechat. Label pak vynechejte, nepoužíváte-li nikde návěští. Návěští lze vynechat téměř vždy). Ostatní části pak můžete uvádět zcela v libovolném pořadí a kolikrát chcete. Jenom vždy dodržujte zásadu, že v definicích používáte jen věci, které jste již dříve definovali (o výjimkách později).

Tělo je pak tvořeno jediným složeným příkazem, který je ukončen tečkou.

Do těla se píší příkazy.

Dále můžeme vytvořit programovou jednotku (tzv. unitu), ta má tvar (Hlavička, interface, implementace, inicializační část):

{$X+ či další nezbytné přepínače}
unit NázevUnity;
{Tohle je jenom vzorová unita}

{Konec hlavičky a začátek části interface (tj. rozhraní pro komunikaci se zbytkem programu)}
interface
usesNázevJednotek;
const Konstanta1 = Výraz1;
      Konstanta2 = Výraz2;
            ...
type NázevTypu1 = Definice1;
     NázevTypu2 = Definice2;
            ...
var NázevProměnné1 : TypProměnné1;
    NázevProměnné2 : TypProměnné2;
            ...

procedure NázevProcedury1(parametry1); {Jenom hlavička, tělo procedury dodefinujeme v implementation}
procedure NázevProcedury2(parametry2); {V sekci interface není povolena direktiva forward, byla by zbytečná}
function NázevFunkce1(parametry):VýslednýTypFunkce1;
function NázevFunkce2(parametry):VýslednýTypFunkce2;
{Konec interface a začátek vlastní implementace}
implementation
uses NázevJednotek;
label NázvyNávěští;
const Konstanta1 = Výraz1;
      Konstanta2 = Výraz2;
            ...
type NázevTypu1 = Definice1;
     NázevTypu2 = Definice2;
            ...
var NázevProměnné1 : TypProměnné1;
    NázevProměnné2 : TypProměnné2;
            ...

{Konec implementační části a začátek části inicializační -- tj. toho, co má program udělat, jakmile se jednotka načte do paměti. Tato část může využívat vše definované dříve.}
procedure NázevProcedury1; {Tělo procedury definované v interface, stačí zkrácená hlavička}
DefiniceProcedury1;
procedure NázevProcedury2;
DefiniceProcedury2;
            ...

function NázevFunkce1;
DefiniceFunkce1;

function NázevFunkce2;
DefiniceFunkce2;
            ...
Begin
  Příkaz1;
  Příkaz2;
     ...
  PříkazN;
End. {Tento end je zde vždy (bez ohledu na to, zda jsme použili část implementation, interface, či begin)}

{Konec inicializační části a tím i celé unity. V Delphi ještě může následovat část Finalization, která říká, jak má unita po sobě uklidit.}
Za end. se sice psát může, ovšem je to zcela ignorováno (asi tak jako komentář)

Vše definované v sekci interface je použitelné i mimo naší unitu, naproti tomu část implementation zůstává mimo unitu skryta. Inicializační část obsahuje příkazy, které se spustí spuštěním programu, který danou unitu využívá (pracujeme-li např. s grafikou, je výhodné umístit příkazy pro inicializaci grafického režimu do této části.)

Napíšeme-li nyní v programu uses NazevUnity; můžeme v něm používat vše, co jsme definovali v části interface.

Další věcí, kterou lze v Pascalu vytvořit, je DLL knihovna. Ta má stejnou strukturu jako hlavní program. (Jedná se vlastně o spustitelnou aplikaci.) Navíc má jen část exports, která informuje, které funkce naší knihovny můžou používat i jiné programy.

DLL knihovna se v Pascalu člení na čtyři části: hlavičku, definice s deklaracemi, část exports a tělo.

Hlavička nám poskytuje informaci o tom, že se jedná o DLL knihovnu. Měla by také obsahovat komentář s popisem a seznamem exportovaných funkcí.

Definice a deklarace zde definujeme vše, co naše knihovna potřebuje.

Část exports nám říká, jaké funkce a procedury můžeme používat v jiných programech.

Tělo Zde jsou umístěny příkazy, které se vykonají při načtení knihovny.
DLL knihovna nejčastěji využívá spoustu unit a sama pouze obsahuje seznam věcí, které se mají exportovat.

Knihovna vypadá takto (hlavička, definice s deklaracemi,část exports a tělo):

{$X+}
Library NázevKnihovny;
{Tohle je jenom vzorový program}

{Konec hlavičky}
uses NázevJednotek;
label NázvyNávěští;
const Konstanta1 = Výraz1;
      Konstanta2 = Výraz2;
            ...
type NázevTypu1 = Definice1;
     NázevTypu2 = Definice2;
            ...
var NázevProměnné1 : TypProměnné1;
    NázevProměnné2 : TypProměnné2;
            ...
procedure NázevProcedury1(parametry1);
DefiniceProcedury1;

procedure NázevProcedury2(parametry2);
DefiniceProcedury2;
            ...

function NázevFunkce1(parametry):VýslednýTypFunkce1;
DefiniceFunkce1;

function NázevFunkce2(parametry):VýslednýTypFunkce2;
DefiniceFunkce2;
            ...
{Konec definic a deklaraci}
Exports
      PrvnipolozkaKExportu, {Položka k exportu je název nějaké funkce naší knihovny}
      DruhapolozkaKExportu, {Případně doplněná o nějaký modifikátor (index 14, resident, name 'Karel')}
      TretipolozkaKExportu; {Ano středník je jen za poslední z nich, jinde jsou čárky}

{Konec seznamu exportovanych vlastnosti a funkci}
Begin
  Příkaz1;
  Příkaz2;
     ...
  PříkazN;
End.

{Konec vlastního těla DLL knihovny}
Za end. se sice psát může, ovšem je to zcela ignorováno (asi tak jako komentář)

To by bylo pro dnešek vše.