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.


Error 15: file not found (TESTUNIT.TPU)

Pokud se setkáte s tímto problémem, zkuste následující postup (BÚNO předpokládejme, že váš program je v souboru testprog.pas a jednotka v souboru testunit.pas):

  1. Zkontrolujte, jestli se soubory testprog.pas a testunit.pas nacházejí ve stejném adresáři (nechť se jmenuje třeba TESTADR).
  2. Přepněte IDE do adresáře TESTADR: File->Change Dir, vyberte adresář TESTDIR a klikněte postupně na Chdir a OK.
  3. Otevřete soubor testprog.pas: File->Open
  4. Přeložte program pomocí Compile->Build (přeloží všechny zdrojáky včetně jednotek znovu).

Zásobník a fronta

Motivační příklady: ukázali jsme si, jak lze zkontrolovat správné uzávorkování aritmetického výrazu s využitím zásobníku a jak se dá využít fronta v algoritmu na vybarvování souvislých ploch v bitmapě.

Vzhledem k tomu, že na wikipedii je celkem zdařilý popis obou struktur včetně zdrojového kódu v pascalu, nebudu plýtvat svým časem na duplikování informací.

Zkuste si napsat programovou jednotku, která vám umožní využívat zásobník nebo frontu.

Domácí úkol

Domácí úkol je dobrovolný a tedy oficiálně za 0 bodů. Úloha má název Kyblík. Cílem je naprogramovat záplavový algoritmus podobný tomu, který byl předveden na cvičení. Pokud odevzdáte funkční řešení, máte nárok na 40 bonusových bodů (které se nepočítají do základu pro výpočet povinných 60%). Zadání se mi snad podaří vyvěsit v CodExu do konce týdne.