Cvičení z Programování 1 a Algoritmizace pro pokročilé
Jak se dostat na cvičení
Cvičení najdete v rozvrhu. Sami se na něj ale nemůžete přihlásit (má nulovou kapacitu). Nejdříve nás totiž musíte přesvědčit, že pokročilejší úlohy zvládnete. Dělá se to následovně:
- V SISu si zapíšete přednášku a standardní cvičení svého kroužku. Pak se přehlásíte na naše cvičení. To má ovšem nulovou kapacitu, takže se zařadíte do čekací fronty. (Totéž prosím udělejte jak pro Programování 1, tak pro Algoritmizaci.)
- Pak si založíte účet v ReCodExu a přihlašte se do skupiny „Programování 1 pro pokročilé - vstupní test“. Pozor: Na tohle je potřeba, abyste už byli zapsaní ke studiu. Pokud jste ještě u zápisu nebyli, počkejte prosím.
- Ve skupině najdete dvě úlohy, za které máte získat celkově aspoň 15 bodů. Odevzdáváte program, ReCodEx ho automaticky otestuje. Můžete odevzdávat vícekrát, počítá se maximum bodů.
- Až získáte potřebných 15 bodů, všimneme si toho a přesuneme vás z fronty na cvičení.
- Kdyby nastal jakýkoliv zádrhel, napište nám e-mail na p1x@ucw.cz a pomůžeme vám.
Pokud si nejste jisti, že pokročilejší variantu zvládnete, můžete se zapsat na standardní cvičení a k nám chodit navíc.
Pravidla hry
Za toto cvičení dostanete dva zápočty: jeden z Programování 1, druhý z Algoritmizace. K jejich získání je potřeba vypracovat zápočtový program (viz níže) a získat dostatek bodů za domácí úkoly. Ty jsou tří druhů:
- teoretické – zde máte za úkol vymyslet algoritmus a sepsat ho. Obvykle na ně jsou dva týdny času, pak si na cvičení popovídáme o řešeních. Řešení nám posílejte Poštovní sovou.
- praktické – je potřeba napsat a odladit program, který řeší danou úlohu. Odevzdávají se do ReCodExu, který je automaticky testuje. Po dvou týdnech probereme na cvičení řešení a pak bude ještě možné nějakou dobu odevzdávat za méně bodů. Tyto úkoly se programují v C/C++, některé mají povolené i jiné jazyky.
- etudy – to jsou technická cvičení na programování v Pythonu. Platí pro ně stejná pravidla jako pro praktické úkoly.
Od každého druhu vypíšeme úlohy za aspoň 100 bodů.
Na samotný zápočet z Algoritmizace postačí získat aspoň 50 bodů z teoretických úloh.
Na zápočet z Programování 1 potřebujete zápočtový program, získat aspoň 50 bodů každého ze zbylých dvou druhů a celkově získat aspoň 200 bodů.
Úkoly je možné odevzdávat opakovaně, započítává se maximum ze získaných bodů přes všechny pokusy.
Zápočtový program
- Téma: libovolné, jaké si vymyslíte, má-li odpovídající obtížnost. Pokud vás ještě múza nepolíbila, podívejte se na náš seznam témat. Přiměřené pro zimní semestr jsou úlohy obtížnosti 3 a vyšší. Jinými zajímavými zdroji inspirace mohou být archiv programátorského korespondenčního semináře a archiv Matematické Olympiády kategorie P.
- Jazyk: libovolný přiměřený úloze, kterou řešíte. Ale na čemkoliv exotickém se prosím předem domluvte.
- Specifikace: Tím myslíme krátký popis toho, co všechno by program měl umět a v jakém jazyce by měl být napsán. Vyhnete se tak tomu, že by váš zápočtový program odevzdaný den před koncem zkouškového období byl odmítnut jako příliš triviální nebo příliš podobný programu někoho z vašich kolegů. Nutno dodat do konce listopadu.
- Dokumentace: Nedílnou součástí zápočtového programu je dokumentace, a to jak uživatelská (vysvětující, jak se program ovládá), tak programátorská (ta popisuje, jak program uvnitř funguje; postrádá smysl popisovat každou funkci či proměnnou, zaměřte se spíš na celkový návrh programu a použité algoritmy, pokud jste je sami nevymysleli, je moudré uvést odkazy na zdroje, z nichž jste čerpali).
- Odevzdání textu: Specifikaci i dokumentaci odevzdávejte buďto v papírové podobě nebo elektronicky v libovolném rozumném formátu (nejlépe jako čistý text nebo PDF; naproti tomu MS Word rozumný není).
- Odevzdání programu: Ideálně e-mailem. Buďto jako přílohu, nebo pošlete URL, ze kterého si zápočťák můžeme stáhnout. Pokud se program skládá z většího množství souborů, raději je předtím sbalte ZIPem nebo TARem (RAR raději ne). Pokud program neběží pod Linuxem, prosíme o osobní předvedení.
- Odolnost: Zápočtový program musí mít přiměřeně ošetřené vstupy. Tím se myslí, že komunikuje-li s uživatelem, měl by počítat s tím, že uživatel je nešika a občas zadá špatný vstup a nenechat se tím zmást a bez zaváhání je odmítnout. Naopak, pokud programujete knihovnu funkcí, můžete předpokládat, že všechny vstupy jsou korektní.