Základy programování v jazyce Python (VŠCHT – LS 2022/2023)
Jiří tečka Znamenáček plus PYT zavináč gmail tečka com

Pomůcky

Python
~ tahák pro Python 3.x
~ Python Enhancement Proposals (PEPs), především pak PEP 8 -- Style Guide for Python Code

Komentovaná řešení
~ rozpoznávání samohlásek
~ výpis Fibonacciho posloupnosti
~ součet prvků v seznamu
~ slovník písmen v textu

Nástroje
~ výukové: Karel (webová implementace jazyka Karel v češtině) a Guido van Robot (Karel v Pythonu)
~ distribuce Pythonu: Python.org (hlavní), MiniConda (alternativní „se vším všudy“)
~ pythoní shelly: DreamPie (grafický shell s víceřádkovou historií)
~ pythoní IDE: PyScripter (pro Windows), Spyder (IDE specificky zaměřené na vědeckou práci), PyCharm (ultimátní programátorské IDE; volná verze Community Edition)
~ textové editory: Notepad2 (minimalistický), PSPad (český), Notepad++ (programátorský), Sublime Text (placený)
~ SQLite: SQLite.org, DB Browser for SQLite
~ regexpy: kiki-re (GUI pro vizuální testování regexpů)

Příklady z hodin

  1. 2023-05-30:
    • domluva na termínech výuky
    • o programování obecně a konkrétně
    • kontrola instalace Pythonu a textového editoru
    • jak napsat a spustit svůj první program
  2. 2023-06-14:
  3. 2023-06-15:
  4. 2023-06-16:
  5. 2023-06-21:
  6. 2023-06-22:
  7. 2023-06-23:

Příklady a data k procvičování

Bloky

  1. Úvodní slovo & Organizace předmětu
    Potřebné programy a jejich instalace (Python, DreamPie, PSPad…)
  2. Kódování textů aneb „Co na to Unicode?“
  3. Úvod do Python'u za pomoci „želví“ (aneb relativní) grafiky:
    1. úvod
    2. další vlastnosti
    3. rekurzivní obrazce
  4. Aplikace želví grafiky – L-systémy (paralelní přepisovací gramatiky):
    1. úvod
    2. další příklady
  5. Základy Python'u:
        ~ základní řídicí konstrukce – podmínky, cykly, výjimky, funkce… (slajdy 12-17 o výjimkách pro informaci)
        ~ pravdivostní typ Boolean (včetně priorit operátorů)
        ~ použití funkce print()
        ~ funkce: základy, argumenty (parametry)
        ~ typy: řetězce, čísla, n-tice (tuples), slovníky, množiny, seznamy
        ~ přehled třídění/řazení v Python'u
        ~ kuchařka pro práci se soubory
        ~ generátorová notace
        ~ vstup dat do programu pomocí input() a sys.argv (po slajd 7)
        ~ kuchařka pro práci s moduly
        ~ …
  6. Další:
        ~ doc-testy v Python'u
        ~ práce s binárními daty: bajtové řetězce, bajtová pole, binární soubory
        ~ grafický formát PNM

        ~ další vestavěné datové typy: pojmenované n-tice (named tuples), slovníky s výchozími hodnotami (default dicts), modul Counter

Domácí úkoly na (klasifikovaný) zápočet

Během kurzu se objeví nějaké nedořešené problémy, které vás nechám dopracovat doma. A na jejich základě pak nějak rozdělím klasifikované zápočty.

  1. Nainstalujte si Python. A nějaký vhodný textový editor. Úplně stačí základní distribuce z Python.org. Z editorů se pro začátek doporučuju vyhnout velkým pythoním IDE, tak se nic nenaučíte, bohatě postačí například český PSPad.
  2. Želví grafika: Zkuste vymyslet, jak asi byl želvou vytvořen následující obrázek, a poté ho zreplikujte programem: obrazec
  3. L-systémy: Upravte program z hodiny na následující pravidla a vykreslete obrázek třetí generace jednoho z Penroseových dláždění:
    krok: 30
    úhel: 36
    axiom: [B]++[B]++[B]++[B]++[B]
    přepisovací pravidla:
    A C++D----B[-C----A]++
    B +C--D[---A--B]+
    C -A++B[+++C++D]-
    D --C++++A[+D++++B]--B