Programové jednotky
Dosud jsme psali kód programu vždy do jednoho souboru. To je v případě složitějších programů dost nepraktické - vzniká dlouhý kód, ve kterém se lze jen obtížně orientovat. Pascal (stejně jako snad skoro každý rozumný programovací jazyk) umožňuje programátorovi poskládat komplikovaný program z více souborů zvaných programové jednotky. Jedna programová jednotka by měla vždy obsahovat sadu funkcí, procedur, konstant, typových definic, a proměnných, které spolu nějak souvisí a v rámci programu plní nějakou úzce vymezenou úlohu.
Struktura jednotky v Pascalu je pevně dána:
Unit NAZEVJEDNOTKY; interface { zde jsou deklarovany konstanty, typy, promenne, funkce atd. ktere jednotka poskytuje } implementation { zde jsou implementovany vsechny funkce a procedury z casti interface } Begin { zde je inicializacni kod jednotky } End.
Abychom mohli používat interface, který jednotka nabízí, musíme Pascalu říct, že chceme jednotku použít. To lze zařídit vložením řádku
uses NAZEVJEDNOTKY;
na začátek programu.
Fronta
Na cvičení jsme programovali jednotku, která implementuje jednoduchou frontu. Zkuste si naprogramovat jednotku, která implementuje zásobník.

Reprezentace grafu
Čas od času se nám hodí pracovat s nějakým grafem. K reprezentaci můžeme použít různé datové struktury (uvedeno s příkladem kódu v pascalu - jak ho použít/zneužít/vylepšit nechávám k zamyšlení na dlouhé zimní večery):
- Matice sousednosti
var MatrixS: array[1..N,1..N] of integer;
- Matice incidence
var MatrixI: array[1..M,1..N] of boolean;
- Seznam sousedů
var Vertex: array[1..N] of word; Neighbours: array[1..(2*MAX_EDGE_CNT)] of word;
- Seznam hran
type TEdge = record u: word; v: word; end; var EdgeList: array[1..MAX_EDGE_CNT] of TEdge;
Přitom N
je vždy počet vrcholů grafu a M
je počet hran.
Domácí úkol
V CodExu byla zadána úloha: Lloydova osmička. Jde o speciální Vánoční úlohu. To znamená, že pokud ji budete odevzdávat na poslední chvíli, tak budete pravděpodobně programovat o Vánocích :) Na příštím cvičení žádnou úlohu do CodExu zadávat nebudu.