Předmět je určen pro posluchače vyššího než 1. ročníku, kteří nemají splněný předmět z předchozího období.
Studentům jsou k dispozici materiály k loňské
přednášce doc. Töpfera. Znalosti z těchto prezentací budou studenti využívat při řešení úloh v Recodexu. Řešení úloh bude probíráno na cvičení v úterý 8:00 - 9:00 hodin v K11. Účast na cvičení není povinná, ale vřele doporučená.
Důležité
- Nenechte si ujet vlak, máte-li pocit, že nezvládáte, neotálejte a domluvte si včas další konzultaci i nad rámec cvičení
- Váše programy odevzdané v ReCodexu namátkou prohlížím a pokud váš kód nesplňuje zásady "dobrého programátorského vychování", mohu vám body odebrat i když program
byl ReCodexem uznán za 100% správný. Pokud takto o body přijdete, velmi vám doporučuji zeptat se mě na nejbližším cvičení osobně na konkrétní důvod.
Podmínky pro udělení zápočtu
- odevzdání a předvedení zápočtového programu, včetně dokumentace
- zadání zápočtové úlohy musíte mít schválené a odevzdané do 1.5.2020, přečtěte si instrukce
- hotový program a dokumentaci pak musíte odevzdat do 6. 9. 2020
- zápočtový program musí být plně funkční a odolný vůči chybám uživatele
- zdrojový kód hotového programu a dokumentaci posílejte mailem cvičící, teprve po jeho schválení budete vyzváni k domluvení schůzky k prezentaci programu
- pokud vstupem programu jsou data ze souboru, odevzdávejte program včetně vzorových vstupních dat
- hotový program musíte předvést osobně, schůzku si domluvte podle pravidel o domlouvání konzultací
- splněné domácí úlohy v ReCodexu
- 75 % bodů z celkového počtu možných bodů
- individuální výjimky je třeba projednat osobně předem
Instrukce k jednotlivým cvičením
V Recodexu máte připraveny dvě skupiny, do obou se můžete zapsat samostatně v položce menu "SIS integrace". Na udělení zápočtu potřebujete získat 75 % bodů ze skupiny "Domácí úkoly". Druhá skupina se jmenuje "Hřiště" a budou vám tam zadávány nepovinné pomocné úlohy, které vám mohou pomoci připravit na težší úlohu ve skupině "Domácí úkoly". I úlohy ze skupiny "Hřiště" můžeme konzultovat na cvičeních.
28. 4. 2020
Níže zadané úlohy pokrývají všechny důležité partie předmětu Programování 2. Proto vám do Recodexu do skupiny Domácí úkoly již nepřidám další úlohu. Pokud byste měl někdo potřebu ještě si něco vyzkoušet, procvičit, ozvěte se, úlohy vám pak přidám do skupiny Hřiště.
Zbývající čas semestru využijte pro práci na zápočtové úloze. Kdybyste se rozhodli, jako zápočtovou práci vytvořit windows-aplikaci ve FreePascalu v IDE Lazarus a potřebovali k tomu konzultaci, můžeme uspořádat online cvičení na toto téma. Kdybyste někdo našel nějaký šikovný materiál na toto téma, dejte vědět a já ho tady zveřejním, aby pomohl i vašim spolužákům.
21. 4. 2020 – Grafové algoritmy
- V Recodexu máte zadanou úlohu Sněhová kalamita. Jistě není problém odhalit, který známý grafový algoritmus máte implementovat
14. 4. 2020 – Dynamické programování, určení největší díry
- V Recodexu máte zadanou úlohu Reklama na dálnici Na této úloze můžete získat řadu bonusových bodů.
- Dva bonusové body vám přidám za funkční komentáře všeho kódu. Dobrý komentář popisuje, co se v kódu děje a už ne tolik, jak se to děje.
- Dvakrát jeden bonusový bod bude za správné určení asymptotické časové i prostorové složitosti vašeho řešení.
- Pět bonusových bodů za lineární řešení vyhledem k počtu objektů na dálnici.
- Nezapomeňte, že se blíží termín pro zadání zápočtových programů
31. 3. – 7. 4. 2020 – Dynamické programování
- Přečtěte si 7. a 8. přednášku
- Dynamické programování bývá pro studenty obtížnější téma, pokud byste potřebovali konzultaci, nestyďte se ozvat, domluvíme online výuku
- V Recodexu máte domácí úlohu Klíče, pokud by vám to nešlo vymyslet, zkuste nejprve Mrkev a petržel na Hřišti
- Na druhý týden máte úkol Pokleslá podposloupnost, řešení jednodušší varianty úlohy najdete v textech z přednášky
- Na Hřišti najdete také úlohu Optimální součin matic a Abeceda
23.3.2020 – třídící algoritmy
- Přečtěte si druhou část 5. přednášky a 6. přednášku zabývající s tříděním
- Zamyslete se nad složitostí algoritmů
- V Recodexu máte domácí úkol Bucketsort, kde máte demonstrovat použití přihrádkového třídění.
- Pro vyzkoušení vám další úlohy na třídění dám do skupiny Hřiště
17.3.2020 – Halda
Karanténa - probíraná látka zatím není složitá a zdá se, že úlohy v Recodexu zvládáte dobře. Pokud byste někdo potřeboval konzultaci, není problém se domluvit na osobním online setkání. Ozvěte se, prvotní kontakt e-mailem.
- V Recodexu je zadaná úloha, kam můžete sepsat zadání zápočtové úlohy. Ale nic tam nepište dokud si se mnou nevykomunikujete schválení tématu. Viz podmínky pro udělení zápočtu výše na této stránce.
- Přečtěte si první část 5. přednášky zabývající se strukturou halda
- Úlohu Teplotní maxima (du) z cvičných důvodů řešte pomocí haldy, i když kvadratické řešení by vám v Recodexu možná prošlo.
Pro výpis hodnot v této úloze používejte nejlépe příkaz ve tvaru write(x:0:2), odzkoušeno Recodex akceptuje
10.3.2020 – aplikace LSS (polynomy, dlouhá čísla), stromy
- diskuse k DU "Množiny"
- co se stane když ....
- reprezentace dlouhého čísla
- reprezentace řídkého polynomu
- úlohy na Hřišti
- příště binární strom a binární vyhledávací strom
- příště zadání zápočtových programů
3.3.2020 – LSS
supl doc. Töpfer
25.2.2020 – LSS úvod
- Z důvodů mé pracovní neschopnosti, nebude ještě cvičení v Karlíně, ale vaše práce budu sledovat v Recodexu a řešení individuálně komentovat. Pokud byste potřebovali pomoc nebo radu, napište mail.
- Prostudujte si materiály doc. Topfera k prvním dvěma přednáškám
- Pokud potřebujete vyřešte nejprve pomocné úlohy
- Operace s LSS (Hřiště)
- Operace s LSS II (Hřiště)
- Zvládnutí tématu prověříte na úloze Spojové seznamy – množiny (DU), úloha za 12 bodů, Recodex přidělí 10 bodů a já po ruční kontrole doplním další 2 body, úloha je povinná, splněná je až v případě, že vám do komentáře k řešení explicitně napíšu "splněno"
18.2.2020
- Opakování z minulého semestru, typ záznam, rozdělení úlohy na dílčí problémy, interface
- Zlomková aritmetika (DU), pro reprezentaci zlomku použijte typ záznam, navrhněte účelné rozdělení do jednotlivých podprogramů, dobře navrhněte parametry, ke každému podprogramu doplňte komentář, co podprogram dělá (ne jak, ale co) a popište význam jeho parametrů