mff

Markéta Popelová - Výuka

Programování 1

Aktuální informace - Programování 1



11. hodina (13.12.2012)

  • Větší testík na rekurzi dopadl navzdory relativně obtížnému zadání velmi dobře. Mnoho z vás to napsalo úplně správně. To mě tak potěšilo, že si můžete všimnout, že někteří z vás dostali i více než 100% bodů za tento testík. ;)
  • Na druhou stranu všem, kdo testík nestihli dovést do finální funkční podoby, velmi výrazně doporučuji si to vymyslet doma - a ověřit na opravném úkolu.
  • Ukázka pěkného řešení úlohy Den v týdnu.
  • Rozbor řešení úloh: Následující permutace, Index permutace, N-tá permutace.
  • Zásobník a fronta. Motivace a implementace zásobníku. Nápady k řešení fronty, kterou máte za domácí úkol.
  • Na těchto datových strukturách se dá hezky ukázat k čemu jsou tzv. units (jednotky). Více o nich bude na přednášce a možná i později na cvičení. Na použití se můžete podívat zde:
    • UnitData - jednotka obsahující datový typ pro položky, které budeme ukládat do zásobníku či fronty. Ke stažení: code.pas.
    • UnitZasobnik - jednotka obsahující datovou strukturu zásobník včetně základních operací pro práci se zásobníkem. Ke stažení: code.pas.
    • Test zásobníku - program testující, zda nám zásobník funguje správně. Ke stažení: code.pas.
    • UnitFronta - chcete-li domácí úkol napsat jako knihovnu, můžete vyjít z tohoto kódu. Ke stažení: code.pas.
  • Můžete začít řešit úlohy, kterými si můžete "předpracovat" větší písemku. Více informcí níže.
Domácí úkol povinný: Cyklická fronta

Tentokrát máte za domácí úkol napsat tzv. cyklickou frontu. Tedy frontu implementovanou pomocí cyklického pole. Nemusíte ji nikam posílat, ale budete ji potřebovat v příštím domácím úkolu: Kůň na šachovnici. Kdo byste si ji chtěl už teď někde vyzkoušet, můžete tak učinit v bonusovém úkolu.

Dejte si pozor, ať ošetříte všechny okrajové případy vkládání i výběru. Zároveň si dejte záležet, aby fungovala (a nepadala) správně i tehdy, pokud bude úplně naplněná či naopak prázdná (v případě pokusu o vložení prvku do plné fronty, resp. vybrání z prázdné fronty například stačí vypsat nějakou chybovou hlášku). Nicméně pokud v ní bude méně prvků, než je její kapacita, neměla by se tvářit jako plná (to nám může zařídit např. právě ta cykličnost). Něco více o této datové struktuře si můžete přečíst zde: Fronta.

Bodově vám ji ohodnotím až v rámci úlohy Kůň na šachovnici.

Domácí úkol opravný (za testík): Hledání výrazů (CodEx)

Jedná se velmi podobné zadání jako v testíku, ale s větším větvícím se faktorem a hlavně o něco složitějším vyhodnocování. U něj pozor na prioritu znamének * a / před + a -. Ač se to zdá býti složité (jak vyhodnotit takový výraz), tak to složité není a měl by vám na to stačit jeden lineární průchod a dvě proměnné (jedna na výsledek a jedna pomocná). Kdybyste měl někdo s touto částí potíže, dejte mi vědět, pošlu vám nápovědu.

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

Domácí úkol bonusový: Vlak na mostě (CodEx)

Nápověda: možná by se vám mohla hodit ta cyklická fronta.

Termín: do 19.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