Ha az egér-kurzor ilyen: , akkor a
szövegrész „kinyitható”; az aláhúzott szövegre kattintva annak leírását megjelenítheti!
Biro/Mester „Gyakran ismételt kérdéseik”
I. Alapok – letöltés
1) Mit lehet letölteni a feladathoz?
Válasz...
A feladatleírást, két mintabemenetet és a hozzájuk tartozó kimenetet.
2) Igaz-e az, hogy a letölthető tesztbemenetek egyike a feladat szövegében szereplő példabemenet?
Válasz...
Általában igen, de lehet más is.
3) Van és, ha van, megkapható-e a mintabemenet elvárt kimenete?
Válasz...
Igen, ott van a minta.zip állományban.
4) Megkaphatók-e a tesztelés során felhasznált tesztbemenetek (s esetleg a kimenetek)?
Válasz...
Oktatók letölthetik az összes bemenetet és kimenetet, ha a mintabemenet et választják.
II. Alapok – feltöltés
1a) Mit kell föltölteni?
Válasz...
A feladatot megoldó program forrás kódját.
1b) Tetszőleges a feltöltendő forrás neve?
Válasz...
Igen.
1c) Van-e szerepe a feltöltendő fájl kiterjesztésének a tesztelés során?
(Azaz ha PAS -t állítok be feltöltendőként,
feltölthetek-e valami.cpp -t?)
Válasz...
Nincs. A kiválasztott programozási nyelv számít.
2) Milyen könyvtárakat használhatok fel a programkódban (standard inklúdok, unitok)?
Válasz...
A standard könytári modulok használhatók, de nem használhatók platform specifikus modulok (pl. Windows grafika).
3) Állhat-e több saját fájlból a feltöltendő alkalmazás?
Válasz...
Nem.
4) Hány feltöltési lehetőségem van egy-egy feladathoz?
Válasz...
A feladat kitűzője állapítja meg.
A feltöltéskor látszik, hogy még hány feltöltés lehetséges az adott feladathoz.
III. Alapok – „filozófia”
1) Mi a tesztelő program lényege, a tesztelés „filozófiája”?
Válasz...
A feltöltött (tesztelendő) programot első lépésben lefordítja a megjelölt nyelv fordítóprogramjával. Ha a fordítás sikertelen, akkor vége.
Második lépésben egy védett környezetben (figyelve az erőforrás korlátokat; memória és CPU idő)
előre elkészített bemenetekre futtatja . Ha időlimiten belül szabályosan (0 kilépési kóddal) fejeződik be a futtatás,
akkor a kapott kimenet helyességét ellenőrzi .
2a) Érdekes-e az, hogy milyen verziójú fordítóval dolgozom a gépemen?
Válasz...
Hibátlan program esetén, ha az értékelő által használt fordító verziószáma megegyezik, vagy magasabb, mint
a fejlesztésnél használt fordító verziószáma, akkor nem lehet probléma.
Természetesen a magasabb verziószámú fordító biztosíthat olyan lehetőségeket, amelyeket az alacsonyabb nem.
Például, a C++11-es szabványt a gcc fordítók csak 4.7-től teljesítik.
Nem hibátlan programok esetén előfordulhat, hogy az egyik fordító (és platform) esetén helyes,
másik esetén hibás lesz a futtatás.
Ez azért lehet például, mert a két fordítás másképp foglal helyet a változóknak,
és az egyik esetben illegális memóriahivatkozás lesz, a másikban pedig nem.
Persze ilyenkor a kimenet is lehet különböző hibátlan futás esetén.
2b) Milyen verziójú fordítók végzik a tesztelést?
Válasz...
gcc 4.8.4 ,
FreePascal 3.0.0 ,
java 1.7 ,
C# 4.0 (mono) ,
Pyton 3.3
IV. A tesztelendő program inputja, outputja
1a) Figyelembe kell-e venni a sorvégjeleket a bemeneten?
Válasz...
Mivel a bemenet szerkezetileg biztosan helyes, ezért minden beolvasási módszer jó,
amely garantálja azt, hogy az inputon érkező összes adatot beolvassa.
1b) Figyelembe kell-e venni a sorvégjeleket a kimeneten?
Válasz...
Minden sornak, az utolsónak is sorvégjellel kell végződnie.
2a) Lehetnek-e a kimenetben többlet szóközök?
Válasz...
Fölösleges szóköz zel nem kezdünk és nem fejezünk be sort .
Az egy sorban lévő minden adatot egyetlen szóköz zel választunk el,
kivéve, ha a feladat szövege mást nem mond.
2b) Lehetnek-e a bemenet egyes soraiban többlet szóközök (balról, jobbról, ill. közbülső helyen)?
Válasz...
Nem.
3a) A több adatot tartalmazó kimenetben az egyes adatok között milyen elválasztó jel lehet?
Válasz...
Számok között szóköz, egyébként az, amit a feladatleírás megad.
3b) A több adatot tartalmazó bemenetben az egyes adatok között milyen elválasztó jel lehet?
Válasz...
Számok között szóköz, egyébként az, amit a feladatleírás megad.
4) Ha egyes részfeladatokat nem tudok megoldani, akkor mi a teendőm?
Válasz...
A feladatleírás egyértelműen megmondja. Általában üres sort kell kiírni , ha nem tudja megoldani.
5) Mi történik akkor, ha véletlenül az egy sorban irandó eredményadatok közé sorvégjel kerül?
Válasz...
Számok esetén, ha több megoldás is megengedett, akkor a sorvég (új sor) nem zavarja. Egyébként hibás lesz.
Lásd még a 2a) pontot!
6) Hogyan lehet olyan kiírásokat használni a lokális futtatáshoz, amely majd a feltöltés után nem zavarja a tesztkörnyezetet?
Válasz...
A standard error-ra írt kimenetet az értékelő nem veszi figyelembe.
De vigyázat: e kiírások is időt visznek el, ezért okozhatja az időlimit túllépését, s így e futás rossznak fog minősülni!
A „standard error” fogalom az egyes érdekes nyelveknél a következő:
* C++: cerr ,
* C#: Console.Error ,
* Pascal: StdErr ,
* Java: System.err ,
* Python: sys.stderr
Egy ettől elétérő megoldás leírását megtalálja a
További tudnivalók a beadandó nagy feladatról dokumentumban.
7) Használható-e C++ esetén a cerr folyam, vagy a pascal esetén az StdErr a csak felhasználóknak szóló közlések kiírására?
Válasz...
Igen. Lásd 6) pontot!
8) Lehet segíteni az időlimit túllépés problémáján, ha az a gyanú merül föl, hogy a beolvasás túlzottan lassú?
Válasz...
Igen. C++ esetében tanácsos az alábbi sort beilleszteni a beolvasás elé
ios_base::sync_with_stdio(false);
Ezzel nagyságrenddel gyorsabb lesz a beolvasás.
További ötletek: olvasd el !
V. A tesztelő program kimenete
1) Hogyan látom, hogy a programom futási hibával állt le a tesztelés során?
Válasz...
„Futási hiba ” üzenetet kap.
2) Mit jelent az X hibakód?
Válasz...
Leggyakrabban az alábbiak szoktak előfordulni:
* Futási hiba, megszakítási kód 11
– az ok: a legtöbb esetben illegális memória-hivatkozás;
* Futási hiba, kilépési kód X
– az ok: a program return X (exit(X) , Halt(X) ) utasítást hajtott végre;
* Futási hiba kód nélkül
– az ok: nem hajtott végre return utasítást (egy c++ programban).
Teljesebb hibakód-listák:
* man 7 signal ,
* Pascal esetében: Run-time errors .
3) Hogyan értelmezhető a teszkörnyezet eredmény-kimenete?
Válasz...
Soronként egy teszteset egy részfeladat értékelési eredményét tartalmazza, a hibaüzenetet, a pontot és a futási időt.
4a) Egy részfeladaton belül kapható-e részpontszám?
Pl. egy feladat kér egy sorozatot annak elemszámával és elemeivel,
akkor ha csak az elemszám helyes, kapható-e rá pont?
Válasz...
A feladat szövegéből mindig kiderül, hogy mire kapható pont.
Az értékelő program kimenetén minden pontot érő részfeladat külön sorban látszik.
4b) Ha egy sorozatot kell kiírni, érdekes-e az elemek sorrendje?
Válasz...
Természetesen. A sorrendet a feladat szövege rögzíti is.
5) Előfordulhat-e, hogy egy adott tesztre nem minden részfeladat tesztelése történik meg?
Válasz...
Ha egy részfeladat helyes megoldása előfeltétele más részfeladatnak, akkor a másik részfeladat értékelése csak akkor történik meg,
ha az előfeltétel helyes.
6) Hogy lehetséges az, hogy a feladatleírásban szereplő bemenetre tökéletesen működik a program, de mégsem kapok maximális pontot a megoldásra?
Válasz...
Mert más bemenetre hibásan működik a program.
7) Honnan láthatom, hogy melyik volt a legjobb eredményem?
Válasz...
A Beadottak menü listázza az összes beadás eredményét és időpontját.
8) Mi történik, ha végtelen ciklus van a programomban?
Válasz...
Az értékelő az időlimit lejártakor megszakítja a program futását.
9) Miért nem kapok részpontot, ha csak a sorozat elemszáma hiányzik, maga a sorozat jó?
Válasz...
Lásd V5) pontot!
VI. A tesztelő program használatának egyéb kérdései
1) Mit jelent a visszatöltés?
Válasz...
Bármely korábban feltöttött megoldás programja visszatölthető (letölthető a lokális gépre).
2) Csak az utolsó verziót őrzi meg a rendszer a visszatöltésnél?
Válasz...
Minden beadást megőríz.
3) Mikor kerülnek törlésre a feltöltött feladataim megoldásai?
Válasz...
A Biró rendszerben a félév végén, a Mester ben nem törlődnek.
4) A login ablakban kis-nagybetű érzékeny-e az adatbevitel?
Válasz...
Csak a jelszó esetén.
5) Mekkora memóriaterületet használhatok fel?
Válasz...
Amennyit a feladatleírás megenged.
6) Megkülönbözteti-e a tesztkörnyezet a kis és nagybetűs szavakat a kimeneten?
Válasz...
Ha a kimenet szöveg, akkor természetesen igen, hacsak a feladatleírás másképp nem rendelkezik.
7) Zárthelyi alatt figyelik-e a bejelentkezettek IP-címét?
Válasz...
A tesztelő környezet minden bejelentkezést és beadást naplóban rögzít, a beadás IP címét is.
Természetesen az események idejét is.
8) Be lehet-e jelentkezni több különböző terminálról?
Válasz...
Nem, ez tilos.
9) Hogy tudom felhasználni a saját gépemen a mintabemeneteket?
Válasz...
Alább egy tömör áttekintéstnyújtunk néhány lehetőségről.
* Windows / parancsablak :
A parancsablak (cmd ) megnyitása után a tesztelendő (prog.exe ) programot tartalmazó könyvtárra állva kiadjuk az alábbi parancsot:
prog.exe <minta1.txt >ki1.txt
Ekkor a prog.exe a minta1.txt fájlban lévő (konzol-input) adatokat feldolgozza,
és az eredményt (konzol-outputot) ki1.txt fájlba írja.
* Geany 1.23.1 fejlesztői környezet:
Összeállítás menü, Build parancsok megadása almenüben
a Futtatási parancsok mezőbe kell ilyesfélét írni:
.\%e.exe <minta1.txt >ki1.txt
Kapcsolat: Biró/Mester
Ha konkrét feladat konkrét feltöltésével kapcsolatos kérdésére vár választ, akkor –kérjük– adja meg
a feltöltő személy belépési azonosító ját, a feladatot azonosító adatok at,
és -esetleg- a feltöltött program Mester-/Bíró-beli sorszámát, ha több feltöltése is volt!
Ne feledje az üzenete mellett közölje azt is, hogy a Biró ra vagy a Mester re vonatkozik a kérdése!