Množiny a konce

Množiny

Pascal umožňuje definici typu množina. Na cvičení jsme si ukázali, jak lze zadefinovat konstantní množinu a použít ji například pro kontrolu vstupu.

  • Nejdřív je třeba deklarovat typ (např. množina znaků):
    type TSetOfChar = set of char;
  • Potom můžeme definovat konstantní množinu (nebudeme do ní nic přidávat ani z ní nic odebírat během práce programu):
    const PlatneZnaky: TSetOfChar = ['A'..'Z'];
  • Potom můžeme kdekoliv v programu snadno testovat libovolnou proměnnou typu char podobně jako proměnnou zn:
    if zn in PlatneZnaky then ...

eof & eoln

Funkce eof a eoln slouží k testování "čtecí" pozice v textovém souboru. K jejich správnému použití nám stačí vědět, že:
  • eof(f) vrátí hodnotu true, jestliže jsme v souboru f dosáhli konce.
  • eoln(f) vrátí true, pokud další znak, který by přečetla funkce read(f,zn) značí konec řádku.

Vyzkoušejte si, že volání funkce eof(f) ani eoln(f) ze souboru f nepřečte žádný znak.


příklad

Během cvičení jsme si naprogramovali jednoduchý program na počítání velkých písmen vtextovém souboru, jehož zdrojový kód si můžete prohlédnout a dle libosti s ním experimentovat.

zásobník vs. fronta

Letmo jsme probrali dvě důležité datové struktury, jejichž detailní popis včetně kódu můžete nalézt třeba na wikipedii.

To hlavní, co by jste si měli ze cvičení odnést je, že obě struktury lze použít k prohledávání stavového prostoru:

  • Se zásobníkem jde o prohledávání do hloubky.
  • S frontou jde o prohledávání do šířky.

rekurzivní generátor permutací

Na závěr jsme vymýšleli program pro agenta v utajení, který chce uhádnout číselný přístupový kód. Program rekurzivně generoval všechny permutace zadané délky.

Domácí úkol

V CodExu jsou zadány 2 úlohy Počítadlo a Převod permutace na cykly. Každá z nich je za 10 bodů.