mff

Markéta Popelová - Výuka

Programování 1

Aktuální informace - Programování 1



5. hodina (1.11.2012)

  • K čemu jsou komentáře, jak komentovat. Od nyní budou komentáře v domácích úkolech povinné. (Za chybějící komentáře dostanete nejvýše polovinu bodů.) Více si můžete přečíst v poznámce k úkolu z minulé hodiny či na Wikipedii.
  • Testík na program řešící úlohu Princezniny korále. Můžete se podívat na Testík: rychlé i paměťově úsporné řešení, či na podobně rychlé, ale Testík: paměťově náročnější řešení.
  • Několik hádankových programů s cílem ukázat, na co si dát pozor. Hádanka 1, Hádanka 2, Hádanka 3, Hádanka 4
  • Euklidův algoritmus a jeho varianty. Na cvičení jsme měli variantu pomalou (NSD 1). Doma si máte rozmyslet variantu rychlejší, kde modulo nahradí odčítání. Pozor na to, jakou dáte ukončovací podmínku. Například toto řešení nefunguje. Toto řešení již ano. Více si o Euklidově algoritmu, důkazu jeho správnosti, konečnosti a odhadu složitosti přečtěte zde: Euklidův algoritmus.
  • Podprogramy, tedy procedury a funkce.
  • Práce s textem - zatím jen se znaky: datový typ char, příkazy ord a chr.
Domácí úkol povinný: Hledání v setříděném poli

Vzpomeňte si na předchozí cvičení, na kterých jsme se zabývali vyhledáváním v setříděném seznamu. Právě tento algoritmus použijte. Dejte si u této úlohy pozor na možné okrajové hodnoty; na to, 32-bitový integer je pro nás longint; na to, jak se mají u půlení intervalů přesně stanovit meze toho intervalu (+-1); vyzkoušejte si, zda to správně vyhledává číslo, které v seznamu není; dále když tam bude čísel více, že to vyhledává první z nich; a nakonec než to odevzdáte do CodExu, si to ozkoušejte na vzorovém vstupu, který je napsán pod zadáním; a úplně nakonec - snažte se své kódy pěkně strukturovat, nebo dopadnete jako já s touto větou... ;)

Ladíte-li to v Borland Pascalu, je možné, že vám tolik paměti nedovolí. Ale to nevadí - otestujte si to s menšími čísly, které vám to dovolí (například N i K z rozsahu 0 až 1000) - a až před odevzdáním to jen zvětšte na hodnoty odpovídající zadání. Pokud byste nerozuměli této poznámce, dejte mi vědět, mohlo by vás to zbytečně zdržet.

  • CodEx - Hledání v setříděném poli

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

Domácí úkol opravný (za testík): PPPPP 5.2 Sudá a lichá (CodEx)

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

Domácí úkol bonusový: Načítání čísla po znacích

Zamyslete se nad tím, jak byste načítali číslo, pokud byste ho museli načítat po znacích, ale přitom byste ho potřebovali převést do čísleného typu (longint). Například kvůli nějaké číselné operaci (jako je přičtení k jinému číslu).

Za funkční a hezky popsaný algoritmus můžete získat 5 (bonusových) bodů, za funkční kód dalších 5.

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