Hftest
A hftest programmal az önálló gyakorláshoz szeretnék segítséget nyújtani. A félév során időről-időre feladatokat adok ki, melyek ellenőrzéséhez és egyben adminisztrálásához automatikus megoldást kerestem. Bízom abban, hogy egyrészt hasznos "játék" lesz, másrészt kerekítési tényezőként figyelembe tudom venni a félév végi jegy kialakításában.
Használat
Az adott feladatot lekérdező illetőleg megvalósító, lefordított C programot (PROG) az ural2-n a hftest programmal kell futtatni, ami a ~szebi katalógusból érhető el: ~szebi/hftest PROG arg1 arg2 ...
A könnyebb használat érdekében érdemes egy szimbolikus linkkel (ln -s) a saját könyvtárukba, vagy a saját bin katalógusukba (amit előzőleg betettek a PATH-ba) linkelni a hftest programot. Így egyszerűen csak hftest névvel hivatkozhatunk rá a továbbiakban.
A hftest program első indítási paramétere maga a tesztelendő program. A további paraméterek a tesztelt program paraméterei lesznek. Például: hftest PROG arg1 arg2 ...
A fenti parancs hatására PROG a megadott további argumentumokkal fog futni úgy, hogy PROG standard bemenete és standard kimenete összekapcsolódik a hftest programmal. A fenti parancssor standard kimenete természetesen átirányítható és ez nem más, mint a hftest program standard kimenete.
Az előzőekben említettek alapján célszerű a saját magunk által írt, vagy másoktól átvett, nem a rendszerhez tartózó programokat a login katalógusunk bin katalógusában tárolni, vagy legalább hivatkozni rá a bin katalógusból egy linkkel, mert így az mindig könnyen – kevés gépeléssel – elérhető. Ha még nincs bin katalógusunk akkor hozzuk azt először létre: (a következőkben feltesszük, hogy bash shell-t használunk, ami az ural2-n az alapértelmezett)cd # a login katalógusba visz, bárhol is vagyunk éppen mkdir binEzt követően készítsünk egy szimbolikus linket a hftest programra:
ln -s ~szebi/hftest bin # a bin katalógusba linkeli hftest névenMivel a shell a programokat szigorúan csak a PATH környezeti változóban megadott katalógusokban keresi, a kényelmünk érdekében célszerű ezt a bin katalógust is betenni a PATH-ba:
PATH=$PATH:~/bin # bővítjük a PATH változót a ~/bin katalógussalMost már a munkánk során bármelyik katalógusban kiadhatjuk a hftest parancsot, azt a shell megtalálja. Sajnos az így megváltoztatott PATH változó tartalma a kilépéskor elvész, ezért a következő bejelentkezéskor újból bővítenünk kell azt a ~/bin katalógussal. Ezt a .bash_login fájlba tett megfelelő paranccsal automatikusan megtehetjük:
echo 'PATH=$PATH:~/bin' >> ~/.bash_login # a fenti parancsot a .bash_login fájl végére írjukMost már minden belépéskor bekerül a PATH-ba a ~/bin katalógus.
Eredmények
Amennyiben a hftest sikeresen azonosította a felhasználót és a feladatot, akkor egy rövid összefoglalót ad az eddigi futtatások eredményéről f: s/p
alakban, ahol:f
– a feladat sorszáma,p
– a próbák száma,s
– a sikeres próbák száma.
A végleges értékelésnél nem számít a próbák illetve a futtatások száma, csak az, hogy az adott feladathoz legyen sikeres próba és megoldás. A program a feladatok kiadásánál személyre szólóan mindig ugyanazt a feladatot illetve tesztadatot fogja generálni, így felesleges többször futtatni, de természetesen nem tilos.
Határidő
A feladatok beadási határidejét a kisZH-k ütemtervénél adjuk meg. Minden határidőig jól megoldott páros sorszámú feladatra 1 pontot lehet szerezni feladatonként, amit a félév végi jegy kialakításakor számításba veszünk. Az összes feladat hibátlan megoldásával összesen 7 extra pont szerezhető. Ez a házi feladattal szerezhető 6 ponttal együtt 13 extra pont megszerzését teszi lehetővé, ami lénygében egy jeggyel jobb félév végi jegyet eredményezhet, amennyiben az egyéb követelmények teljesülnek.
Eredményes tesztelést kívánok.
Dr. Szeberényi Imre