====== Cvičení 10, Fronta, Stavový automat ======
===== náplň cvičení =====
==== Quick test 1 ====
{{ :courses:b3b33alp:cviceni:alp19_qt1_zadani.pdf | Zadání Quick-testu }}, nahrávání v BRUTE je zapnuto do 5.1.
==== Úloha 1 Fronta ====
* Přeměňte řešení úlohy 3 Flood fill z cvičení 8 na frontu.
* Postupnou animací zjistěte jak se změnilo vyplňování prostoru
* Zjistěte, zda potřebuje více paměti zásobník, nebo fronta
==== Úloha 2 Komentáře - rozšíření ====
* Upravte program na odstraňování komentářů z přednášky tak:
* aby program bral v úvahu řetězce začínající a končící znakem '
* aby správně interpretoval znaky \' a \"
* aby pokud řádka končí znakem \ dovedl řetězec prodloužit přes více řádek
* Program otestujte na následujících datech
a='b \' c#d' #e
i="j \" k'l#m" #n
* Program z přednášky:
def preskoc_komentare(line):
# vytiskne obsah souboru 'f' s vynechanymi komentari
stav=0 # počáteční stav automatu
for c in line: # přečti jeden znak
if stav==0: # počáteční stav
if c=="#": # začátek komentáře
stav=1
continue
elif c=='\"':
stav=2 # začátek řetězce
elif stav==1: # 1="komentar"
continue
elif stav==2:
if c=='\"':
stav=0
print(c,end="") # vytiskni znak
i=input()
preskoc_komentare(i) # nacti radku a preskakuj
==== Úloha 3 Kontrola reálného čísla ====
* Reálné číslo v pythonu je zadána touto BNF gramatikou:
floatnumber ::= pointfloat | exponentfloat
pointfloat ::= [intpart] fraction | intpart "."
exponentfloat ::= (intpart | pointfloat) exponent
intpart ::= digit+
fraction ::= "." digit+
exponent ::= ("e" | "E") ["+" | "-"] digit+
digit ::= "0"..."9"
* Vymyslete a naprogramujte stavový automat, který bude zjišťovat, zda je řetězec na řádce reálným číslem.
*
==== Úloha 4 Obsahy závorek ====
* Uvažujme řetězec obsahující závorky () a [].
* Napište program, který bude testovat, zda je výraz správně uzávorkován a zjistí text uvnitř závorek
* Závorky mohou být do sebe vnořeny a pak text patří do poslední úrovně závorek
* Program tedy text:
aa[bb(cc)dd(ee)fff[gggg]]hhh
* převede na výstup:
()cc
()ee
[]gggg
[]bbddfff
* písmena 'aa' a 'hhh' se zahodí, nejsou uvnitř žádných závorek
===== Domácí práce =====
Tentokráte bez domácího cvičení, poslední domácí cvičení bude zadané příští týden.