Informace k odevzdávání úloh ke kontrole
V mnoha cvičeních ke kurzům na síti je možnost odevzdat vypracované úlohy dle zadání a nechat si je zkontrolovat, čímž se poté zpřístupní stažení certifikátu. Podívejme se, jak si lze kód nejprve vyzkoušet a pak odevzdat ke kontrole na server:
🔍 1 - Jak to funguje
Vše si ukážeme na první úloze ze základů programování v Javě. Princip je pak úplně stejný pro všechny jazyky. Úloha vždy obsahuje zadání s ukázkami obrazovky programu, tedy přesně co má udělat se vstupy, které se mu zadají:
Pokud u nás studujete rekvalifikaci, váš referent uvidí, jak se vám plnění úloh daří a případně vám může dále poradit.
Zadání úlohy vypadá např. takto:
Jednoduchý příklad
Vytvořte program, který si na vstupu nechá zadat jméno uživatele a poté jeho vlastnost. Nakonec vypíše "jméno je vlastnost", viz obrázek.
Ukázka obrazovky programu:
Vlastnosti Ahoj, jak se jmenuješ? Bill Gates Jaký jsi? hustodémonsky bohatý Bill Gates je hustodémonsky bohatý
Předpřipravený kód
Pod úlohou je následně online editor kódu s nachystanou šablonou kódu, do které se má program vypracovat:
📜 2 - Práce s předpřipraveným kódem
Podívejme se, jak se s předpřipraveným kódem pracuje:
Pod úlohou je online editor kódu s nachystanou šablonou kódu, do které se má program vypracovat:
Kód zapsaný do online editoru se odešle na speciální server s běhovým prostředím pro daný jazyk. Tam je poté několikrát spuštěn v rámci různých testů, které mu předávají vstup a kontrolují, zda vypisuje výstup podle zadání. Celé to můžeme chápat tak, že si robotický uživatel na serveru program spustí a zadá do něj vše, co by mělo být potřeba.
🌟 3 - Speciální typy příkladů
Níže následují ukázky speciálních typů příkladů, se kterými se v kurzu setkáte.
Příklady s variabilním počtem vstupů
U některých komplexnějších příkladů server s běhovým prostředím pro daný jazyk nedokáže takový kód správně zpracovat. Taková cvičení lze potom pouze odevzdat ke kontrole. Ve videu níže je podrobný návod, jak takové cvičení správně odevzdat:
Příklady, které nemají možnost odevzdání
U některých cvičení možnost odevzdat kód chybí. Je tomu tak nejčastěji z důvodu, že cvičení je poměrně komplexní. Server s běhovým prostředím pro daný jazyk nemusí být schopný takto náročné interakce:
Příklady s více soubory
Některé příklady mají více souborů se zdrojovými kódy. Typicky jde o cvičení v kurzu objektově orientovaného programování. Podívejme se, jak si snadno online vyzkoušet a odevzdat ke zhodnocení řešení, složené z více souborů:
🏆 4 - Úspěšné odevzdání příkladů
Podívejme se, jak vypadá úspěšné odevzdání příkladů. Testů je vždy několik a spouští se postupně za sebou:
- První test spustí program a odešle mu přesně ty vstupy, co jsou ukázané v zadaní.
- Dalších několik testů předává programu další vstupy. Tyto další testy ověřují, zda program opravdu funguje a není vytvořený tak, aby uměl zpracovat jen ten jediný vstup, který je zrovna ukázaný v zadání. Typicky se zde ověřují další scénáře, které mohou v programu nastat.
Ve videu také popisujeme, jak poznat, které úlohy už máme odevzdané, a které zatím ne:
💡 5 - Využití nápovědy
Pokud si nevíme rady při řešení některé úlohy, máme k dispozici vzorové řešení. Podívejme se, jak ho můžeme využít:
📝 6 - Ukázka testů
Představme si konkrétní úlohu, například již použitou s Billem Gatesem. Tato úloha má dva testy, které dělají následující:
Test 1 -
Zkus zadat osobu z ukázky
Vidíme, že první test již podle názvu ověřuje přesně ten případ, který je popsaný v zadání. Jeho scénář je následující:
- Zkontroluj, zda je vypsáno:
"Ahoj, jak se jmenuješ?"
- Zadej vstup
"Bill Gates"
- Zkontroluj, zda je vypsáno:
"Jaký jsi?"
- Zadej vstup
"hustodémonsky bohatý"
- Zkontroluj, zda je vypsáno:
"Bill Gates je hustodémonsky bohatý"
Test 2 -
Zkus zadat jinou osobu
Druhý test pak aplikaci zkouší s dalšími vstupy, které vymyslel autor úlohy/testu a vy je již neznáte. Tyto testy jsou pojmenované tak, abyste v případě jejich selhání tušili, kde je problém. Scénář druhého testu je u této úlohy následující:
- Zkontroluj, zda je vypsáno:
"Ahoj, jak se jmenuješ?"
- Zadej vstup
"Tester Testerovič"
- Zkontroluj, zda je vypsáno:
"Jaký jsi?"
- Zadej vstup
"relativně testovatelný"
- Zkontroluj, zda je vypsáno:
"Tester Testerovič je relativně testovatelný"
Výsledek testů
Pokud proběhnou všechny testy, zde tyto dva, považuje se program za funkční:
Pokud nějaký test nedoběhne a nedojde k nějaké kritické chybě, viz níže, je vám pak vypsán název tohoto testu, např.:
"Zkus zadat osobu z ukázky"
nebo
"Zkus zadat jinou osobu"
Je pak vidět, zda se robotickému uživateli na serveru nepodařilo program rozjet ani pro hodnoty ze zadání, nebo zda jste zapomněli něco ošetřit a program upadne, když se mu zadá něco specifického. U prvního testu podle ukázky ze zadání je vždy navíc přesně vidět, jakou část jeho scénáře se nepodařilo spustit.
✗ Špatně
Zde konkrétně na obrázku test říká, že našel výstup:
Konzolová aplikace
Ahoj,jak se jmenujes
✓ Správně
A v zadání je přitom:
Konzolová aplikace
Ahoj, jak se jmenuješ?
🔧 7 - Nejčastější chyby a jejich oprava
Podívejme se nyní, jak využít informace, které nám chybový výstup poskytuje.
Překlep
Častou chybou je překlep v textu, případně špatná interpunkce:
Desetinná čísla
Problémy dělají také desetinná čísla. Pěknou neplechu umí udělat třeba desetinná čárka místo tečky:
Mezery
Správný počet mezer bývá častým zdrojem problémů:
Odřádkování
Častou chybou je nevěnování pozornosti zadání při odřádkování textu nebo při načítání proměnných:
Další problémy při odevzdávání
Pokud váš program neprojde, je to z 99% proto, že nesplňuje zadání. V chybovém hlášení je vždy umístěna informace o tom, jak dále postupovat, přečtěte si jej celé. Nejčastější problémy jsou tyto.
Jiné texty ve výstupu
Vy jste v roli programátora a dostali jste od zákazníka zadání, kde je přesně udáno:
- Kdy se má co vypsat
- Kdy se má co zadat
Pokud vypíšete např. místo "Zadej číslo:"
např.
"Zadejte cislo"
, test neprojde. Zadání je třeba splnit
přesně na znaky, toleruje se jen diakritika a velká/malá písmena.
Interpunkce ovšem musí být dodržena a slova samozřejmě také.
Chybné čekání na vstup
Programu se vždy odešlou vstupy přesně podle zadání. Pokud např. vyžaduje 2 čísla a vy načítáte v svém programu pak ještě třetí nebo tam umístíte něco jako "Zadej cokoli pro ukončení programu", tato hodnota již nikdy zadána nebude a program zůstane na serveru čekat, dokud není násilně ukončen.
Zacyklení
Podobné zaseknutí může nastat, pokud se program zacyklí v nekonečném cyklu. V závislosti na povaze zaseknutí programu server buď program dokáže násilně ukončit sám, o čemž získáte informaci, nebo jej zabije až služba nad ním, což vyústí v obecnější hlášku.