IB111

Úvod


Základy pythonu

Doporučení pro psaní funkcí nejprve ujasnit specifikaci (vstupně/výstupní chování)

Největší společný dělitel Euklidův algoritmus

list comprehension = s = [2 * x for x in range(10)]

!!!Nikdy nepoužívat implicitní parametry s měnitelnými proměnnými - listy !!!

Řetězce jsou neměnné!
Formátování řetězců: pyformat.info
"{:d}".format(123)
.split()
.join()

Testování

precodnition = Vstupní podmínka algoritmu
postconditoin = Výstupní podmínka algoritmu

Algoritmus je korektní, pokud pro všechny stupy splňující vstupní podmínku skončí a jeho efekt splňuje výstupní podmínku.

Typové anotace

Datové struktury

Abstraktní datový typ (uživatelský pohled na data)

Konkrétní datová struktura (implementační pohled na data)

ADT

Statické pole - array


v pythonu

konstatní:

Lineární:


Stack (Zásobník)

Queue (Fronta)

Množina

Hashtable (dictionary, map, slovník)

Proměnné, paměť

Složené datový typy a objekty

Záznamy, struktury

Objekty

Vyhledávání, řazení, základy složitosti

Vyhledávání

V obecném seznamu

V seřazeném seznamu:

Časová složitost

Asymptotická časová složitost: viz haskell (Big O notation)

Řazení

Select sort: nejmenší prvek na správné místo, nejmenší prvek zbytku na správné místo, …

Insert sort: seřazená část a neseřazená část, vezmu jeden prvek z neseřazené části a zařadím do seřazené části

Bubble sort: very bad

Quick sort: pivot (jeden prvek) a rozdělím seznam na menší než pivot, pivot a větší než pivot

Merge sort: rozdělíme seznam na dvě poloviny, rekurzivně seřadíme vzniklé menší seznamy, spojíme do jednoho (merge)

my_list.sorted() = modifikuje list
sorted(my_list) = vytvoří nový list

Rekurze

Pravidla pro správné použití rekurze

  1. Báze = Dostatečně jednoduché vstupy musíme vyřešit přímo.
  2. Rekurzivní volání musí být v nějakém smyslu jednodušší než aktuální problém.
    (Korekurze (corecursion) - něco jiného pro pokročilé)

Nepřímá rekurze

Rekurzivní stromeček

RecursionError

Vztah rekurze a iterace

Koncová rekurze (tail recursion)

Fraktály

Rekurzivní datová struktura

Sebereplikace

  1. Program, který vypíše sám sebe
  2. List item

Součinové typy A × B

Součtové typy A + B

Backtracking

Problém dam

Interakce s prostředím

Práce se soubory

Práce s bitmapovými obrázky

Práce s archívy

Knihovna sys

Knihovna glob

Knihovna os

Knihovna time

Knihovna datetime

Knihovna tkinter

Knihovna fractions

Knihovna itertools

Interpret jednoduchého programovacího jazyka