Warning
This page is located in archive. Go to the latest version of this course pages.

This is an old revision of the document!


Cvičení 10, Fronta, Stavový automat

náplň cvičení

Quick test 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.

courses/b3b33alp/cviceni/t10.1576160820.txt.gz · Last modified: 2019/12/12 15:27 by herinjan