Programování I

Přednáška bude v úterý 3. 11. (17:00)

Blíží se odevzdání úkolů #U7

Informace o předmětu

Během roku budou průběžně zadávány domácí úkoly, každý z nich ohodnocený nějakým počtem bodů. Za obě pololetí bude vypsáno tolik domácích úkolů, aby za ně celkem bylo možno získat alespoň 150 bodů.

Aby mohl být žák hodnocen, musí v obou pololetích získat za domácí úkoly alespoň 100 bodů. Každý žák navíc bude minimálně jednou v každém pololetí prezentovat své řešení domácího úkolu před třídou. Rozhodujícím faktorem při hodnocení žáka bude závěrečná zkouška skládající se z ústní a písemné části.

Obě části závěrečné zkoušky jsou hodnoceny zvlášť, písemná s váhou 7 a ústní s váhou 10. Prezentace jsou hodnoceny s váhou 5. Žáci mohou navíc dostávat známky za práci v hodině.

Podoba zkoušky

Zkouška se skládá z písemné a ústní části. Na začátku písemné části je zadána jedna úloha, na jejíž naprogramování studenti mají 90 minut. Ústní část se skládá z diskuze o studentově řešení písemné části a z několika otázek na teorii probranou v hodinách.

Co dělat, když něčemu nerozumím?

Co dělat, pokud máte pocit, že si tak docela nejste jistí tím, co děláte?

Především pamatujte na to, že programování je iterativní a proces plný experimentování. Napsat program, který bude funkční už napoprvé, je malý zázrak — hlavní je dělat malé krůčky, které zhruba směřují ke správnému řešení. Dělat chyby je vlastně skoro dobře, protože těmi se toho nejví naučíte.

Koho se zeptat?

Nejjednodušší je zeptat se některého ze svých spolužáků — buďto vám poradí, nebo alespoň zjistíte, že nejste jediní, kdo se ztrácí. Obojí každopádně je fajn.

Taková základní záložní možnost je zeptat se mě. Oceňuji všechny otázky, a nikomu žádnou otázku nevyčítám — i kdybyste se až teď osmělili zeptat na něco, co se dělalo pět přednášek zpátky.

Zdroje na internetu

S obecnějšími otázkami vám pomohou lidé z r/learnprogramming nebo na Stack Overflow. Zvláště druhá zmíněná stránka je takový zlatý grál programátorů, a to i těch profesionálních.

Pokud vám ani na jednom z míst nebudou schopni pomoci, doporučuji napsat na Pyret-Discuss mailing list. Na otázky a nápady tam mimo jiné často reagují také přímo autoři Pyretu, takže je to asi nejlepší Pyretovské místo na internetu.

Zadání úkolů

Všechny úkoly prosím posílejte nejpozději o půlnoci, a to přes messenger nebo přes mail. Nebude-li řečeno jinak, posílejte úkoly v souboru s názvemidUkolu_prijmeni.arr, například u1_wybitul.arr. Pokud je v rámci jednoho úkolů několik podůkolů, uložte je všechny do jednoho souboru a oddělte je prázdným řádkem.

#U7 ze dne 20. 10. k odevzdání do 2. 11.

Vigenèrova šifra(20 b.)

Váš první projekt

#U6 ze dne 20. 10. k odevzdání do 26. 10.

Rekurze a akumulátory (functions are fun, part 3)(3 b.)

Procvičování rekurzivního přemýšlení na složitějších příkladech o seznamech. Použití akumulátorů je vřele doporučeno

#U5 ze dne 12. 10. k odevzdání do 19. 10.

Rekurze a akumulátory (functions are fun, part 2)(3 b.)

Procvičování rekurzivního přemýšlení na složitějších příkladech o seznamech

#U4 ze dne 21. 9. k odevzdání do 4. 10.

Functions are fun(20 b.)

Funkce volá sebe samu; myšlenkový skok k opakovanému zavolání funkce

#U3 ze dne 15. 9. k odevzdání do 21. 9.

Vlastní funkce(10 b.)

Funkce — tvoření vlastních funkcí a jejich používání k řešení úloh

#U2 ze dne 8. 9. k odevzdání do 14. 9.

Proměnné(7 b.)

Procvičování tvorby a pojmenovávání proměnných

#U1 ze dne 4. 9. k odevzdání do 10. 9.

Generování vlajek(10 b.)

Zopakování práce s obrázky (tvoření, umisťování, spojování)

Zápisky z přednášek

V ústní části zkoušky budou vyžadovány pouze znalosti, které jsou zaznamenány v těchto zápiscích. Přednášky jsou inspirovány knihou Programming and Programming Languages (PAPL), pokud vám tedy něco z přednášek nebude jasné, můžete se zkusit podívat i do ní.

#P6 ze dne 12. 10.

Programování s akumulátory

Funkce se liší nejen tím, jak jednoduše jsou pochopitelné, ale taky tím, jak jsou efektivní. Akumulátory nám často pomáhají zefektivnit rekurzivní funkce

#P5 ze dne 6. 10.

(Spojové) seznamy

Ukázali jsme si, že můžeme jakékoli typy zabalit do seznamů, což jsou sbírky nula a více věcí

#P4 ze dne 21. 9.

Booleany a funkce, které volají samy sebe

Naučili jsme se v rámci algoritmů pomocí if/else rozhodovat, jaký kousek kódu spustit, na základě hodnoty nějaké proměnné. Objevili jsme datový typ "boolean", který vyjadřuje pravdu a nepravdu. A v neposlední řadě jsme si ukázali, že funkce mohou volat samy sebe a naučili jsme se pomocí toho řešit nové sloužité problémy.

#P3 ze dne 15. 9.

Psaní vlastních funkcí

Ve třetí přednášce jsme probírali další nástroje sloužící ke zjednodušení a zpřehlednění kódu: Funkce

#P2 ze dne 8. 9.

Intuice k funkcím, proměnné a kompilátory

Během druhé přednášky jsme si ukázali, jak nám proměnné mohou pomoct vyhnout se opakovanému psaní kódu a jak celý náš program mohou udělat čitejnějším

#P1 ze dne 4. 9.

Úvod do programování, datové typy, manipulace s obrázky

V této přednášce jsme se seznámili s několika drobnostmi ze světa programovacích jazyků a začali jsme programovat v Pyretu