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 mintabemenetet 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özzel nem kezdünk és nem fejezünk be sort.
     Az egy sorban lévő minden adatot egyetlen szóközzel 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 Mesterben 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ó adatokat,
é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 Mesterre vonatkozik a kérdése!