Zkouška 23.1.2018

Základní kurs objektově orientovaného programování v C++. Třídy a objekty, zapouzdření, metody, plymorfismus. Abstraktní datové typy, přetěžování. Kontejnery, iterátory, algoritmy. Šablony, generické programování, kompilační polymorfismus. Výjimky. Bezpečné a přenositelné programování, vazby na OS.
TomRiddle
Matfyz(ák|ačka) level I
Příspěvky: 4
Registrován: 5. 6. 2017 18:05
Typ studia: Informatika Bc.

Zkouška 23.1.2018

Příspěvek od TomRiddle »

Dneska zadával Robert Husák a zadání bylo dost podobné http://forum.matfyz.info/viewtopic.php?f=423&t=10757.

Měli jsme implementovat interpret jednoduchého dynamicky typovaného jazyka.
Každá proměnná mohla obsahovat string, integer nebo null a měla jít sčítat s jinou a printnout (pravidla níže).
Jazyk měl následující příkazy:
  • seti var_name var_value -> do proměnné var_name ulož integer hodnotu var_value (pokud var_value nelze převést na int, ulož 0)
  • sets var_name var_value -> do proměnné var_name ulož string hodnotu var_value
  • add store_result_var_name left_op_var_name right_op_var_name -> do store_result_var_name ulož výsledek left_op_var_name + right_op_var_name
  • echo var_name -> print proměnné var_name na konzoli
Hodnota typu null vzniká pouze pokud se přistupuje k zatím neinicializované proměnné.

Pravidla sčítání:
  • null + cokoliv, cokoliv + null -> null
  • integer + integer -> klasické sčítání
  • string + string, string + integer, integer + string -> konkatenace
Printování:
  • integer -> klasicky, např. 42
  • string -> klasicky, např. "lorem" (pozor, uvozovky nutné)
  • null -> null
Každopádně to byla úloha zaměřená na polymorfismus, virtuální metody atd.
Autorské řešení využívalo https://en.wikipedia.org/wiki/Double_dispatch.
Přikládám své řešení, které mi zabralo asi 2 hodiny ze 4, které byly k dispozici (odcházel jsem 3.), taky využívalo double dispatch a bylo za plný počet.
https://gist.github.com/MichalPospech/4 ... c13b12a77d
Odpovědět

Zpět na „NPRG041 Programování v C++“