Zápočtový test 18. 1. 2010, 14:00

Oxyd at 2010-01-18 21:20:17

Měli sme udělat textový preprocesor -- něco na způsob céčkového preprocesoru, akorát to umělo jenom #define. Vstup byl ze souboru (a jen z něj), výstup na stdout -- výstupem byl text vzniklý expanzí zadaných maker.

Mělo to zvládat definici jak bezparametrických maker, tak maker s patametry -- to jest, #define foo bar i #define makro(a, b) (a) + (b). Syntax obvyklá, akorát se pro zjednodušení předpokládalo, že příkaz #define začíná vždy na začátku řádky (takže žádné mezery před # ani žádné mezery mezi # a define) a taky, že vstup je korektní. Mělo to zvládat i makra co se odkazují na jiná makra, to jest

#define transpozice1(a, b) b a
#define transpozice2(a, b) transpozice1(b, a)
transpozice2(ahoj, svete)

vyprodukuje výstup, ve kterém je "ahoj svete".

Rekurze byla explicitně zakázaná, takže jakmile by makro chtělo volat samo sebe (ať už přímo či nepřímo), tak program měl skončit s chybou. Též to mělo zvládat víceřádková makra, kde pokračování řádky se dělalo standardně zpětným lomítkem na konci řádky.

Jaká přesně je úspěšnost, to netuším -- já odcházel jako druhý úspěšný -- ale docela by mě to zajímalo. x)

R.U.R. at 2010-01-19 00:23:33

Já šel asi půl hodiny před koncem jako cca pátý úspěšný, se mnou šel Honza jako cca první neúspěšný.

Navry at 2010-01-20 10:51:16

Už půl hodiny přek koncem bylo jasné, že to nestihnu :)
poučení:
nečíst po znacích, ale bufferedReaderem řádky a matchovat.
k rekurzi: boolovský příznak použití u instance makra, jen napadnout :)
nepřišlo mi to těžký, ale jak se při programování na čas na nějaký pitomosti zaseknete...

doplní někdo zhruba úspěšnost?

QZuzka at 2010-01-24 19:16:50

platí i letos, že s sebou smíme mít cokoliv v papírové podobě (knížky), a dívat se do vzorových příkladů na webu přednášky?

Anonymous at 2010-01-24 20:06:28

QZuzka wrote:platí i letos, že s sebou smíme mít cokoliv v papírové podobě (knížky), a dívat se do vzorových příkladů na webu přednášky?

zo stranok pana Hnetynku:

Informace k praktickým zápočtovým testům

* doba trvání 3 hodiny  
* probíhají v unixové laboratoři  
* **s sebou lze mít a používat jakkékoliv tištěné materiály (knihy, poznámky,...)  
* je zakázáno používat jakkékoliv sítové zdroje (s výjimkou API dokumentace (ale bez tutorialů) a informací na webu předmětu, tj. slidy a příklady) a komunikaci po síti (email, chat,...)**  
* určitě budou dva termíny v letním zkouškovém období a pravděpodobně i jeden nebo dva termíny během semestru (nelze zaručit, zaleží na výuce v laboratořích)  
* každý má maximálně 5 pokusů na napsání zápočtového testu