3. Olekumasinad
Selle nädala teema on olekumasinad. Teoorias huvitab meid peamiselt olekumasinad, mis vastavad jah/ei küsimusele: kas sõne kuulub regulaaravaldise poolt defineeritud hulka. Praktikas on olekumasinad, mis lisaks midagi teevad, aga käituvad erinevalt sõltuvalt oma seisundis. Kodutöös on vaja joonistada paar klassikalist automaati, aga lisaks proovime olekumasina abil teksti natuke korrastada. Järgmistest materjalidest võib seetõttu olla abiks kodutöö lahendamisel:
- Automaatide joonistamine JFLAP abil. Iseseisvalt võite uurida, kuidas regulaaravaldisi disainida automaatide abil.
- Olekumasina näide. Ülesanne on kirjutada lihtne olekumasin, mis eemaldab tekstist HTML märgendid. Võite ka vaadata esimese kodutöö olekumasinad. Need mõlemad sobivad paremini iseseisvaks uurimiseks, aga praktikumides võib neid käsitleda, kui aega selleks jätkub.
Selle nädala eesmärk on õppida automaate joonistada (JFLAP abil). Neid automaate kasutatakse regulaarsete keelte ära tundmiseks. Automaatide disainimine peaks aitama Sind ka programme ja süsteeme paremini disainida, sest tihti peituvad nendes ka olekumasinad, mille välja toomisel läheb asi palju selgemaks. Kodutööga üritame natuke sellist olekupõhist mõtlemist harjutada, aga me rohkem teilt seda ei küsi...
Peamine on siin seega need JFLAP harjutused, millega saate harjutada fundamentaalsel tasemel programme disainida, eeldades muidugi, et teete need mõttega ja mitte liiga testipõhiselt. Mõelge: mille eest vastutab iga olek ehk mis see tähendab, kui automaat on selles seisundis? (Näiteks: see seisund tähendab seda, et automaat on siiamaani näinud paaritu arv a-sid.)
Viited ja näited
- UML State Machine.
- Näide: müügihaldus
- MIT 6.01: State machines.
- Autokooli läbimine
- java.io.InputStream
- GUId
- Plokkskeemid?