mff

Markéta Popelová - Výuka

Programování 1

Aktuální informace - Programování 1



3. hodina (18.10.2012)

  • Testík na asymptotickou složitost
  • Logická úložka se dvěma bratry na rozcestí - nedořešili jsme, tudíž lze řešení poslat jako bonusový úkol
  • Řešení bonusových úkolů z minulé hodiny
  • Časová a paměťová asymptotická složitost - závěrečné poznámky
    • Zavedení notace Theta a Omega.
    • Přečtěte si tento textík Asymptotická složitost o dvou vztazích z minulého bonusového úkolu a zkuste v něm najít chybu (viz bonusový úkol).
  • Základy Pascalu
    • Základní struktura programu, proměnné (deklarace, použití, typy proměnných), write, writeln, read, readln, operace (matematické a logické), podmínka, for-cyklus.
    • Vývojové prostředí Borland Pascal (klávesové zkratky ALT+F9, CTRL+F9, ALT+F5), dva jednoduché prográmky na ozkoušení
Domácí úkol povinný: CodEx 2x + textík

Součástí tohoto úkolu je vyřešit dvě úlohy z CodExu (napsat program, otestovat ho v libovolném nainstalovaném vývojovém prostředí Pascalu a odevzdat do CodExu, kde hned uvidíte, jestli to máte správně). Úlohy (PPPPP 0.2 Hello World 2 a Suma) jsou ve skupině "Programování 1 (NMIN101) čtvrtek 15:40". Pokud tuto skupinu nevidíte, napište mi mail.

Rada: odevzdáváte-li něco do CodExu, vždy si pečlivě zkontrolujte, že přesně (!) plníte zadání. Záleží zde na všech detailech typu co je vypsáno na jaké řádce, kde jsou mezery, jak velká jsou písmena apod.

Rada 2: je-li někde v CodExu v zadání napsáno "32-bit integer", vzhledem k Pascalu se tím myslí datový typ "longint". Proč tomu tak je? Integer v Pascalu je číslo, které se vejde do 2 bytů (někdy česky psáno "bajtů") ==> tedy 16 bitů ==> tedy se do něj dá uložit 216 hodnot = 65536 hodnot. Jelikož jdou do integeru ukládat jak kladná, tak záporná čísla, tak výsledný rozsah je [-32768, 32767]. Naopak longint má v Pascalu vyhrazené 4 byty, tzn. 32 bitů, tzn. slouží k uložení 232=4294967296 hodnot z rozmezí [–231, 231 – 1].

Kromě úloh v CodExu si přečtěte tento textík Asymptotická složitost o dvou vztazích z minulého bonusového úkolu a zkuste v něm najít chybu (viz bonusový úkol).

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

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

Napište definici f(n) ∈ O(g(n)). Rozhodněte, zda platí a své rozhodnutí dostatečně zdůvodněte:

  • 15n + 666 ∈ O(n)
  • n ∈ O(n!)

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

Bonusový úkol č. 1: Řešení úlohy o dvojčatech na rozcestí

Princ na cestě k zámku dorazil na rozcestí a neví, kterou ze dvou cest má zvolit. Na rozcestí se nachází chatrč a v ní jsou dva bratři—jeden vždy mluví pravdu a druhý vždy lže, ale princ neví který z nich je který. Stačí mu položit jednu otázku jednomu z bratrů, aby zjistil, kterou cestou se má vydat?

Aneb komiks z xkcd ;)

Hlavolam labyrintu

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

Bonusový úkol č. 2: Nalezení chyby v textíku o asymptotické složitosti

Najdete-li chybu v v tomto textu: Asymptotická složitost, popište ji a vysvětlete co a proč je tam špatně a jak by to mělo být správně. Najdete-li více nesrovnalostí, popište je všechny.

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