3. Olekumasinad
Selle nädala teema on olekumasinad. Teoorias huvitavad meid peamiselt olekumasinad, mis vastavad jah/ei küsimusele: kas sõne kuulub regulaaravaldise poolt defineeritud hulka. Praktikas on olekumasinaid, mis lisaks veel midagi teevad, aga käituvad erinevalt sõltuvalt oma seisundist. Kodutöös on vaja joonistada paar klassikalist automaati, aga lisaks proovime olekumasina abil ka 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öö olekumasinaid. Need mõlemad sobivad paremini iseseisvaks uurimiseks, aga praktikumides võib neid käsitleda, kui selleks aega jätkub.
Selle nädala eesmärk on õppida automaate joonistama (JFLAP abil). Neid automaate kasutatakse regulaarsete keelte äratundmiseks. Automaatide disainimine peaks aitama Sind ka programme ja süsteeme paremini disainima, sest tihti peituvad nendes ka olekumasinad, mille väljatoomisel 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 disainima, 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?