mff

Markéta Popelová - Výuka

Programování 1

Aktuální informace - Programování 1



9. hodina (29.11.2012)

  • Testík na jednoduchou rekurzi.
  • To je k rekurzi vše. Ještě máte na rekurzi dva bonusové úkoly. Pořádně si projděte všechnu rekurzi, se kterou jste se na přednášce a cvičeních setkali. Protože 12.12.2012 (pozor, to je o týden později, než jsem slibovala na cvičení) si na rekurzi napíšeme testík, který bude trochu větší než ty klasické (také na něj budete mít více času). Pokud byste chtěli ještě nějaké rekurzivní kódy na rozmyšlení, doporčuji si projít tuto sadu prográmků: Archiv několika prográmků s rekurzí (od Honzy Bulánka; je to myslím velmi užitečné). Zkuste si je jeden po druhém nejprve prohlédnout, vymyslet, co budou vypisovat, a teprve pak je spustit a zkontrolovat, že jste se trefili. Dělejte to v tomto pořadí, jinak vám to moc nedá.
  • Dlouhá čísla: motivace, jak je ukládat, jak s nimi pracovat, kód na sčítání, myšlenka na násobení. Můžete si rozmyslet, jak byste to změnili, kdybyste potřebovali i záporná čísla. Nebo třeba desetinná.
  • Syntaxe vlastního datového typu.
  • Sytaxe záznamu (record).
  • Třídění:
    • Insert(ion) sort: algoritmus, složitost, příklad
    • Select(ion) sort: algoritmus, složitost, příklad
    • Bubble sort: algoritmus, složitost
    • Merge sort: základ algoritmu
    • Quick sort: zatím jen název
    • Heap sort: zatím jen název
    • Stupid sort ;)
  • Pozor: příště tu bohužel nebudu. Ale nebojte, o cvičení nepřijdete. ;) (Přijde místo mě pan RNDr. Martin Holub, Ph.D.) Kromě toho pro vás mám ještě další tři dobré zprávy:
    1. Ten větší testík na rekurzi se posouvá na týden, kdy už budu v Praze, tedy na toho 12.12.2012. Takže máte více času na přípravu - a budete-li chtít, můžete si ještě příští týden nechat vysvětlit něco z rekurze ještě z jiného úhlu pohledu (než ode mne).
    2. Příští týden nebudete psát vůbec žádný testík. (Juchů!)
    3. Už teď víte, že domácí úkol z příštího týdne bude Den v týdnu (CodEx). Dokonce si k této úloze můžete přečíst malou nápovědu: Den v týdnu.
Domácí úkol povinný: Týmová kalkulačka

Utvořte dvoučlenné až tříčlenné týmy. Dohodněte se na společném datovém typu a myšlenkách řešení pro následující úlohy:

  1. Největší číslo (CodEx) 1b.
  2. Dvojkové zápisy čísel (CodEx) 2b.
  3. Sčítání dlouhých čísel (CodEx) 3b.
  4. Faktoriál velkých čísel (CodEx) 3b.
  5. Násobení velkých čísel (CodEx) 5b.
  6. Celočíselný podíl velkého čísla velkým číslem (Mailem) 8b.: kladná, max 300 cifer, každé na novém řádku

CodExové úlohy odevzdejte do CodExu oba všichni. Úlohy mailem stačí poslat jednou. ;) Kromě toho mi mailem pošlete (stačí jednou):

  1. Kdo jste byli v týmu
  2. Jak jste si práci rozdělili, případně jestli jste na něčem pracovali společně (poměr, co kdo udělal, by neměl být příliš nerovnoměrný)
  3. Jak se vám spolupracovalo

Pár poznámek, které by se vám někdy o dlouhých číslech obecně mohly hodit, jsou zde: Dlouhá čísla.

Samozřejmě se bude hodnotit nejen správnost, ale i struktura, přehlednost a komentovanost kódu. Nebude-li poměr práce v týmu příliš vychýlený, dostanete všichni všechny body za úspěšně splněné úlohy. (Ano, správně, můžete tím získat i poměrně hodně bodů navíc. ;))

Termín: do 12.12. (23:59) za plný počet bodů, či do 19.12. (23:59) za poloviční.

Domácí úkol opravný (za testík): Hanoiske veze (CodEx)

Vzhledem k tomu, že jsme tuto úlohu dělali na hodině, tak je to tak trochu test vaší čestnosti. Zkuste si to řešení znovu a hlavně každý sám vymyslet. A rozmyslet proč přesně a jak funguje. Také to pečlivě vysvětlete do komentářů, abych viděla, že tomu rozumíte (a věříte ;)).

Termín: do 12.12. (23:59).

Domácí úkol bonusový: Všechna uzávorkování + Uzávorkované posloupnosti (CodEx)

Slíbené dvě úlohy na rekurzi.

Termín: do 12.12. (23:59).

Tzv. "Větší písemka" 3.1.2013

Na první lednové hodině 3.1.2013 budeme psát závěrečnou větší písemku (pozor, to není ta zápočtová, na kterou se budete hlásit přes SIS a podrobnější informace k ní dostanete od Vašich přednášejících.) Budete na ni mít čas celé cvičení. Bude na počítačích, tedy ne klasicky jako malé testíky na papír. Měla by být lehčí než ta zápočtová, také na ni bude méně času - ale tématicky podobná. Což je výhodné především z toho důvodu, že učením se na ni tzv. "zabijete dvě mouchy jednou ranou". Neboť o to kratší bude Vaše příprava na zápočtový test (ale ten nepodceňte!). Napsat tuto písemku, je nutná podmínka k zápočtu.

Komu se nepodaří napsat správně písemku na první lednové hodině, ten bude mít ještě možnost si to opravit. Ale samozřejmě ne zadarmo. Dostane dvě větší úlohy, které bude muset vypracovat. Ovšem pro každého budou pevně zadané a nebudou patřit k těm nejlehčím. Tedy doporučuji se na tuto možnost nespoléhat.

A ještě je tu jedna možnost, jak se této písemce "vyhnout". Abyste měli, jak se na písemku připravovat, máte v CodExu zadaných 5 úloh označených jako "Předpracování písemky 3.1.2013.". Zkuste si všechny z nich projít, promyslet a co nejvíce z nich si zkuste i napsat. No - a jak si je budete zkoušet napsat, tak když libovolné dvě z nich dovedete do funkčního stavu včetně slovního popisu řešení v úvodu a dostatečných komentářů, můžete je odevzdat do CodExu - a pokud budou správně, nebudete muset psát tu lednovou písemku. (Resp. si ji napsat můžete, abyste si to zkusili, ale povinnost k zápočtu budete mít už splněnou.) Ovšem pozor, na každou úlohu máte povolená nejvýše 3 odevzdání, takže si prvně pořádně zkontrolujte, zda Vám úloha funguje na vzorovém vstupu a i na dalších vstupech, které vymyslíte. Termín pro odevzdání těchto úloh do CodExu je 31.12.2011 (23:59) (nenechávejte je na poslední chvíli - byla by škoda programovat o Silvestru ;)). Pokud vyřešíte například jednu úlohu ze dvou, budete to mít jako bonus k lednové písemce.

Doporučuji všem na lednovou písemku dorazit. I kdybyste měli "předpracováno" dostatek na zápočet, tak si zkusíte, jaké je to psát program v časově omezeném prostoru a mimo pohodlí domova/koleje. Zároveň tam s Vámi mohu probrat Vaše chyby z doma vypracovaných úloh.

© Markéta Popelová 2009 - 2012