Programové moduly (jednotky) ---------------------------- unit jmeno; interface . . . implementation . . . begin end. Příklad: -------- definice ATD zásobník, implementovaný pomocí dynamického jednosměrného lineárního seznamu. Hodnotami (položkami) zásobníku jsou reálná čísla. unit zasobnik; interface type ukprvek=^prvek; prvek = record d: pointer; n: ukprvek end; zasob=ukprvek; procedure Init(var z:zasob); procedure Pop(var z:zasob; var ds: pointer); procedure Push(var z:zasob; ds: pointer); function Empty(z:zasob): boolean; implementation { Syntax Turbo Pascal } procedure Init; begin z:=nil; end; procedure Pop; var Pom:ukprvek; begin if not Empty(z) then begin ds:=z^.d; Pom:=z; z:=z^.n; dispose(pom); end; end; procedure Push; var Pom:Ukprvek; begin new(Pom); Pom^.d:=ds; Pom^.n:=z; z:=Pom; end; function Empty; begin Empty:=z=nil end; end. ----------------------------------------- program Obrat; { Vstup: řada reálných čísel. Výstup: vstupní řada v obráceném pořadí. } uses Zasobnik; var UR:^real; X:zasob; begin Init(X); while not SeekEof do begin new(UR) read(UR^); Push(X,pointer(UR)) end; while not Empty(X) do begin Pop(X,pointer(UR)); write(UR^:7:2); end end. ------------------------------------- Abstraktní typ "Uspořádané pole" unit UspPole; interface const N = 1000; type DatPole = array [1..N] of pointer; SortAr = record Obsaz: word; DP: DatPole end; TypPorovnani = function (A,B:pointer):boolean; procedure Init(var SA: SortAr); procedure SAInsert(var SA: SortAr; D:pointer); procedure SAList(SA: SortAr; var Out: text); function Empty(SA: SortAr): boolean; var Srovnej: TypPorovnani; implementation procedure Init(var SA: SortAr); begin SA.Obsaz:=0; end; procedure SAInsert(var SA: SortAr; D:pointer); var I:word; begin I:=1; while (I<=SA.Obsaz) and Srovnej(D,SA.DP[i]) do Inc(I); for J:=SA.Obsaz downto I do SA.DP[J+1]:=SA.DP[J]; SA.DP[I]:=D; Inc(SA.Obsaz); end; procedure SAList(SA: SortAr; var Out: text); begin end; function Empty(SA: SortAr): boolean; begin Empty:=SA.Obsaz=0 end end. --------------------------------- program Razeni; uses UspPole; var S:SortAr; {$f+} function Serad(X,Y: pointer):boolean; begin Serad:=string(X^)>string(Y^) end; {$F-} begin Srovnej:=Serad; ...