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
Funkceeof
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 souboruf
dosáhli konce.eoln(f)
vrátí true, pokud další znak, který by přečetla funkceread(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.
![](images/kodova_klavesnice.jpg)
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ů.