# Zapoctovy test 23.1.2015

<{ForumPost(poster="biosek", timestamp=2015-01-23 22:53:53)}>
Zadani bylo Interpret BASICu.  
Meli jsme naprogramovat zpracovani soubou .bas, ktery se skladal z 7 moznych prikazu.  
  
Promenna byl nazev promenne, hodnota bylo bud int32 cislo nebo promenna.  
Kazdy prikaz byl na radce ve formatu "cislo_instrukce prikaz \[nepovinne_argumenty]", prikazy pak vypadali takto:  
  
SET promenna = hodnota  
LET promenna = hodnota operace hodnota  
INPUT promenna  
PRINT \[nepovinne_argumenty_oddelene_stredniky]  
GOTO cislo_instrukce  
END  
IF hodnota bin_operace hodnota THEN GOTO cislo_instrukce  
  
Me reseni bylo cca takoveto:  
Udelal jsem si abstraktni nadtridu Command, ktera dokazala naparsovat argumenty a vyhodnotit se. Pak jsem implementoval vsechny prikazy jako potomky Commandu.  
Trida Program potom obsahovala 2 globalni dictionary (jeden na commandy, druhy na promenne) a int hodnotu na jake instrukci prave jsem.  
Hlavni beh programu pak jen nacetl soubor, vytvoril pro kazdy radek instanci instrukce a zpracovaval vsechny instrukce v jejich poradi dokud se nenarazilo na prikaz END. (samozrejme mohli nastat skoky pres GOTO nebo IF)  
  
Meli jsem na reseni 3 hodiny a take 5 vstupnich datovych testovacich souboru.  
Nejrychlejsi kolega predemnou skoncil uz za 1 hodinu.  
Ja vse stihl napsat za 1,5 hodiny, za dalsi hodinu jsem si udelal testy pro prilozene soubory a odladil vsechny chyby, takze jeste byla pekna 0.5hod rezerva na svacinu.
<{/ForumPost}>

