Naleznete zde infromace pro jednotlivé cvičení z předmětu SPJA. Veškeré další informace naleznete zde.

Úvodní znělka

Sound of Cylons

Studijní opora a materiály

K dispozici je studijní text.

Dokumentace k jazyku Python

Zajímavý online interaktivní kurz nalezneta na Codeacademy.

Pro základy programování můžete využít knihu Think Python, kterou si můžete stáhnout zdarma.

Velice pěkný tutoriál k Pythonu se jmenuje Dive into Python, který se dá použít i pro rychlé vyhledávání programovacích technik v Pythonu.

Přečtěte si také výukový text z MIT, který vřele doporučuji.

Jako doplňkovou literaturu můžete použít oficiální Python Tutoriál.

Sada přednášek z MIT, které vysvětlují použití Pythonu na různých úlohách.

Část našich cvičení se zabývá vývojem webových aplikací pomocí Django frameworku. Existují i české stránky, kde naleznete dokumentaci k verzi 1.0 v češtině.

Pro zájemce o další informace z oblasti použití Django, doporučuji knihu The Django Book.

Výuka

Úkoly na cvičení jsou pro Python 3.

Cvičení 1

Nebodované cvičení.
Co je to dynamické a silné typování?
Vytváříme funkce, proměnné (string, int, float), seznamy (list, tuple), slovníky.
Jak na komentáře, podmínky a cykly
Základy interpretru IPython (%run, %rerun, %hist, In, Out a další).
Společně si doprogramujeme: cv1_labs.py.

Cvičení 2

Bodované cvíčení na témata probraná na 1. přednášce + obsah 1. cvičení, kde se používalo jednoduché volání funkcí. Jednotlivé úkoly:

  1. [1 b] U všech níže uvedených funkcí provádějte typovou kontrolu, v případě, že na vstupu (parametr) nebude správný typ, tak vypsat chybovou hlášku, nebo vrátit hodnotu False.
    Nápověda: využijte funkce type() a operátory and a or.
  2. [1 b] Vytvořte funkci spherical_sector pro výpočet objemu kulové úseče dle vstupních parametrů. Vzorec:
    Nápověda: c++ funkce exp(x,2) se v pythonu provede takto x**2.
  3. [2 b] Vytvořte funkci sqr, která bude přijímat dva parametry. První bude číslo, nebo kolekce čísel (naimplementovat oboje) a druhý parametr bude číslo. Tato funkce vrátí kolekci (list nebo tuple) prvního parametru, který bude umocněný na mocnitel zadaný druhým parametrem.
    Nápověda: využijte metody append() nebo list comprehension.
  4. [1 b] Vytvořte funkci shuffle, která bude přijímat dva parametry. Oba budou přijímat řetězce (string). Výstupem funkce bude kolekce nebo řetězec obsahující střídavě prvky obou vstupních řetězců. Například: shuffle("Hello", "World") bude mít výstup: HWeolrllod

Cvičení 3

Bodované cvíčení na témata probraná na 2. přednášce: Funkce, list comprehension, funkcionální prvky programování, čtení ze souboru. Studijním materiálem je text uvedený v úvodu stránky. Výjimky a čtení ze souboru je vysvětleno v prezentaci.

  1. [1 b] Napište funkci my_avg, která vrátí aritmetický průměr všech zadaných parametrů. Parametry budou čísla a jejich počet je proměnlivý. V implementaci nepoužívejte vestavěné matematické funkce. Je nutné ověření vstupů zda jsou skutečně všechny hodnoty čísla.
    Hint: Vytváření funkcí
  2. [1 b] Vytvořte funkci divide, která bude přijímat 2 argumenty. První je číslo, druhým pak list. Pomocí funkce map vraťte list, který bude obsahovat původní prvky listu vydělené celočíselně prvním argumentem funkce.
    Hint: mrkněte na rozdíl mezi / a //.
  3. [1 b] Vytvořte funkci my_map, která bude stejně jako funkce map přijímat dva parametry. Prvním parametrem je funkce, druhým pak list. Výstup bude stejný jako u funkce map. Při implementaci použijte list comprehension [:list komprihenšn:] (generátorovou notací seznamů). Zde stačí naimplementovat použití pouze jednoparametrové funkce jako arumentu pro mapování
    Hint: když s = sum, pak lze provést s([1, 2, 10, 5]).
  4. [2 b] Soubor calls.txt obsahuje seznam hovorů uskutečněných z firemních telefonů. Formát souboru je následující: tel_č_volaného,tel_č_volajícího,cena_hovoru
    Napište funkci nebo funkce, které budou umět provést následjící operace:
    • Ze souboru calls.txt načtěte všechny hovory.
    • Vypište pro každě číslo volajícího cenu hovorů z daného čísla na firemní čísla a cenu hovorů na ostatní čísla.
    Hint: použijte slovníky. Na rozdělení stringu použijte metodu split z instance stringu.

Cvičení 4

OOP v Pythonu. Úkoly budou na vytvoření třídy Učebna, která bude mít instance třídy Student. Zde naleznete zadání a předlohu.
Hint: kontrola zda je objekt instanci dané třídy slouží funkce: isinstance(instance, třída). K odstranění prvku ve slovníku slouží buď metoda pop(klíč), která i zároveň vrací odstraňovaný prvek, nebo lze využit: del slovnik[klíč]
Jako zajímavost se určitě hodí nastudovat speciální metody třídy.

Cvičení 5

OOP v Pythonu. Rozpohybování atomů. zadání a předloha.

Cvičení 6

OOP (dědění) v Pythonu. Rozpohybování atomů s gravitací. zadání a předloha.

Cvičení 7

Bodované cvičení na témá RSS. Klientský skript přijíma XML ze serveru a je potřeba doprogramovat rozparzování XML. Šablona cvičeni: cv7.zip Případné informace můžete čerpat na docs.python.org.

Cvičení 8

Bodované cvičení na témá XML-RPC. Doprogramujte server, tak aby komunikoval s klientem. Jednotlivé kroky jsou uvedeny v šabloně.

Cvičení 9

Bodované cvičení na témá XML-RPC a PyGame. Doprogramujte klienta, tak aby komunikoval se serverem a následně probíhala multiplayerová hra. Pro toto cvičení je potřeba PyGame, který lze na linux (pokud již není nainstalován) nainstalovat pomocí příkazu (nefunguje na školních PC):
sudo apt-get install python3-pip
sudo pip3 install pygame
nebo je možné vytvořit virtuální prostředí (tento postup je potřeba na školních PC) a až následně nainstalovat PyGame pomocí Pip:
python3 -m venv spja
. spja/bin/activate
pip3 install pygame

Cvičení 10

Nebodované cvičení: Django - základy a témata pro vypracování úkolu.

Připravte si prosím témata pro vypracování úkolu.

Taháček (kodování UTF8).

Cvičení 11

Django #2 - základy.