Toto cvičení z Programování 2 patří k přednáškám Martina Pergela, je primárně určeno pro kruh 51 a probíhá každé pondělí od 17.20 do 18.50 v učebně K11. Cvičím ho já, tzn. Jonáš Vidra. Kontaktovat mě můžete e-mailem na adrese příjmení@ufal.mff.cuni.cz. Nezdráhejte se mi napsat, pokud máte jakýkoliv problém – nestíháte úkol? Zapomněli jste heslo do CodExu? Nemůžete přijít na písemku nebo na hodinu? Objevili jste chybu v mém výkladu? Něco jste nepochopili? Máte málo bodů? To vše se dá vyřešit, ale musím o tom vědět.
Ujistěte se, že jste do této paralelky zapsáni v SISu a že jste v CodExu přiřazeni do příslušné skupiny. Pokud vás totiž budu chtít kontaktovat, budu používat právě tyto kanály a nezapíšete-li se, nebudete informováni o změnách. Přiřazování do CodExových skupin provádím já; v SISu se zapisujte sami, pokud vám to jde, nebo mi řekněte.
Také je potřeba, abyste se dokázali v laboratoři K11 dostat k funkčnímu počítači s kompilátorem Pascalu. To znamená, že potřebujete login do karlínské sítě nebo vlastní laptop.
object
) a objektu (vytvoří se pomocí new()
). Deklarace a definice metod v objektech. Diskrétní simulace pomocí objektově-orientovaného programování: Hledání nejlepšího algoritmu pro ovládání výtahu.Abyste získali zápočet, musíte
Jednotlivé kategorie se vzájemně ovlivňují – pokud vám bude chybět pár bodů z ůkolů, ale poctivě jste chodili a byli jste při hodinách aktivní, zápočet dostanete. A naopak.
Vypracujte úlohy, které vám chybí nebo které jste nezvládli dostatečně dobře. CodEx vám za ně nedá body, ale procentuální úspěšnost řešení spočítá. Poté mě kontaktujte. Dbejte na přehlednost a správnost kódu.
Nutnou podmínkou k získání zápočtu je napsání a obhájení zápočtového programu. Rozsáhlejší text o zápočťácích napsala Markéta Popelová, většina informací z něj platí i u nás.
Téma programu si musíte sami vymyslet a předložit mi ho ke schválení. Inspiraci hledejte např. na stránkách Martina Mareše – vybírejte úlohy s obtížností alespoň 5. (Leckde se s Martinem na hodnocení obtížnosti neshodnu, takže i některé čtyřky by šly.) Dobré náměty jsou také hry, třeba klony něčeho z osmibitů nebo složitější deskovky (složitější ve smyslu, že tam existují zajímavé netriviální strategie a protistrategie, nikoliv co do tloušťky příručky s pravidly. Hry založené z velké části na náhodě vám asi neuznám). Výstup klidně může být negrafický, do textové konzole, ale za pěkný vzhled budou body navíc. Velkou výhodu budete mít, pokud se rozhodnete naprogramovat něco užitečného, co sami potřebujete.
Jakmile máte téma, je potřeba sepsat detailnější zadání, tedy seznam vlastností, které má výsledný program mít. Někdy je potřeba se rozepsat, ale většinou jako zadání stačí odrážkový seznam nebo dva-tři odstavce textu. Součástí zadání by určitě měl být nástřel uživatelského rozhraní – např. seznam příkazů, které váš program bude umět interpretovat; seznam přepínačů a voleb; popis grafického rozhraní a způsobu jeho ovládání. V tuhle chvíli už byste měli mít rozmyšlené hrubé rysy implementace. Zadání si opět nechte schválit, předejdete tak nepříjemnostem.
Pak přichází na řadu vypracování programu, testovacích vstupů a dokumentace, které je zcela ve vaší režii. Dokumentaci jsem zvýraznil, protože její kvalita je stejně důležitá jako kvalita programu.
Dokumentace by měla mít dvě složky – uživatelskou (popis ovládání, nejlépe s příklady nebo obrázky) a vývojářskou (přehled souborů, tříd, hlavních funkcí a algoritmů v programu a popis toho, jak spolu souvisejí a proč jsou napsané tak, jak jsou). Komentáře v kódu jsou samozřejmostí, ale nenahrazují vývojářskou dokumentaci. Dobrý textík o tom, jak dokumentaci psát, najdete na stránkách Rudolfa Kryla. Pro mne je vodítkem to, že vývojářská okumentace by měla jinému programátorovi umožnit napsání programu se shodnou funkcionalitou. Nemusíte tedy vysvětlovat známé algoritmy, ale určitě popište ty méně známé nebo vlastnoručně vytvořené – a především dopodrobna rozepište hlavní koncepty.
Testovací vstupy jsou další důležitou částí programu. Měl by jich být dostatek a měly by pokrývat jak pozitivní, tak negativní případy. Kromě běžných, očekávatelných vstupů se zaměřte i na vstupy anomální – např. „Co se stane, když do kalkulačky napíšu ‚1 + 2 3 3 / - *‘?“ Váš program nesmí ani po zadání takového vstupu spadnout; ideálně by měl vypsat srozumitelnou chybovou hlášku.
Pokud máte jako zápočtový program implementovat knihovnu, místo testovacích vstupů připravte demonstrační aplikaci, která vaši knihovnu bude používat.
Jazykem zápočtových úloh je Pascal + čeština / slovenština / angličtina. Jiné jazyky je možné použít po předchozí domluvě – bez problémů je připustím, bude-li váš zápočťák úloha z praxe.
Doporučuji vám vyzkoušet, že se program dá zkompilovat a spustit na počítačích v labu – prostředí mého, vašich a školních počítačů mohou být odlišná a dobře napsaný program by sice měl běžet všude, ale v případě problémů budu programy testovat ve škole.
Zdrojové kódy a všechna potřebná data odevzdávejte v archivu e-mailem, dokumentaci dodejte v nějakém rozumném formátu, nejlépe jako PDF nebo archiv s prolinkovanými HTML soubory. Prosím, nepoužívejte .doc a podobné formáty – pokud budete dokumentaci psát ve Wordu, vyexportujte mi ji do PDF. Pokud jsou soubory velké (více než jednotky megabajtů), vystavte je na web a pošlete mi odkaz.
Po odevzdání se můžou stát tři věci: buď program rovnou schválím (v případě, že skutečně nebudu mít žádné připomínky), nebo vám ho rovnou vrátím k dopracování (pokud budou mé výhrady velké), nebo si vás pozvu na schůzku, na které mi program předvedete a obhájíte (většinový případ).
Na přečtení a ohodnocení programu potřebuji alespoň týden a pak si musíme domluvit společný termín schůzky. Termín odevzdání proto stanovuji na začátek srpna (Pozor, změna!). Neznamená to, že při odevzdání 10. srpna už nedostanete zápočet, ale po uplynutí termínu vám negarantuji ohodnocení – čím pozdější odevzdání, tím menší máte šanci, že se k vašemu programu dostanu včas. Naopak velmi doporučuji odevzdat program co nejdříve – nejenže vás budu mít rád, ale hlavně dostanete možnost opravit případné nedostatky. Vizte též můj kalendář.
Zápočtový program je hodnocený podle následujících kritérií, v pořadí podle klesající důležitosti:
Totální selhání v libovolném bodu automaticky znamená neúspěch, ale první čtyři body jsou posuzovány přísněji než zbylé tři. Jak tedy vidíte, je lepší odevzdat dobře dokumentovaný stabilní program se dvěma funkcemi, než padající zmetek s deseti funkcemi bez návodu.
Potřebujete-li cokoliv, obraťte se na mě po hodině nebo e-mailem. Osobní konzultace jsou možné po domluvě, kancelář nemám.
Navrhované termíny předvádění zápočtových programů:
Programy se předvádějí v karlínském labu, v K11 nebo někde poblíž – podle toho, kde bude volno.