=== Programování 1 ===

Základní kurs programovacího jazyka Python (0/2 Z).

Cvičení, jehož součástí je výklad programovacího jazyka.
Zápočet se uděluje za domácí úkoly zadávané během semestru.

Značení:
  "-" jsou části výkladu
  "#" příklady konkrétních programů
  (n) udává plánovaný počet hodin

## Základy (1)
- Python jako kalkulačka
- celá čísla
- floaty a problémy s přesností
- operátory a jejich priority
- přiřazení
- základní podmínky a cykly (while)
- struktura programu: komentáře, odsazování
- triviální input() a print()
- ladění programu, používání vývojového prostředí (IDLE/PyCharm)
# rozklad čísla na číslice
# znaky dělitelnosti jako algoritmy
# Euklidův algoritmus
# prvočísla dělením do odmocniny
# faktorizace

## Cykly a pole (2)
- for cykly, range()
- break, continue
- seznamy používané jako pole
- přiřazení seznamu přiřazuje pouze odkaz
- časová složitost, spíš jen intuitivně
# vyhodnocení polynomu (Hornerovo schéma)
# k-tý nejmenší prvek v čase k*n
# Eratosthenovo síto
# násobení matic
# Gaussova eliminace

## Třídění a vyhledávání (1)
# elementární třídicí algoritmy
# binární vyhledávání
# hledání kořenů funkcí: půlení intervalu, lineární interpolace

## Funkce (1)
- definice a volání funkcí
- nepovinné parametry
- abstrakce a modularita programů
- lokální identifikátory a jejich viditelnost
- princip rekurze
- předávání funkcí jiným funkcím

## Knihovny I a grafika (1)
- používání knihoven, import
- kreslení grafů pomocí matplotlib

## Seznamy a řetězce (2)
- seznamy a operace s nimi
- fronta a zásobník
- iterování přes seznam
- řezy
- list comprehension
- stringy
# slévání setříděných posloupností

## Datové struktury (1)
- podrobněji o typovém systému
- tuples
- slovníky a operace s nimi
- výjimky a jejich odchytávání
# práce se stromy

## Objekty (1)
- třídy a objekty
- popis reality pomocí objektů
- odvozování typů, dědičnost

## Knihovny II a soubory (1)
- práce se soubory
- standardní knihovna
# načítání a vypisování dat v různých formátech

(zbývající hodiny jsou věnovány procvičování)