Základy programování pro IT 2 Mgr. MDDr. Karel Panchártek
Seznam seminářů
- Opakování
- Rekurze
- Anomymní funkce
- Propojené datové struktury 1
- Propojené datové struktury 2
- 1. zápočtový úkol
- Ošetřování chyb při běhu programu (text, úkol)
- Bitové operace
- Práce se soubory
- Organizace zdrojového kódu (text, úkol)
- 2. zápočtový úkol
1. zápočtový úkol
Vytvořte reprezentaci matice dle úkolu 11 ze skript ZPP2. Návrh je možné zobrazit i na stránkách Mgr. Vyjídáčka.Pro ověření funkčnosti vytvořte následující funkce:
vytvor_matici(pocet_radku, pocet_sloupcu) vloz_prvek(matice, prvek, radek, sloupec) zobraz_matici(matice)Příklad použití:
matice = vytvor_matici(3, 4) vloz_prvek(matice, 1, 0, 1) vloz_prvek(matice, 18, 0, 2) vloz_prvek(matice, 3, 2, 2) zobraz_matici(matice)Vypíše
0 1 18 0 0 0 0 0 0 0 3 0
7. seminář - úkol
V šesti libovolných předešlých úkolech doplňte ošetření výjimek a obhajte jejich použití. Využijte alespoň 3 typů výjimek.10. seminář - úkoly
1. úkol
Napište modulmatice_txt_IO.py
, který zapíše matici do textového souboru a matici z takto vytvořeného souboru opět přečte. Pro práci můžete využít úkoly z minulého semináře.
Příklad použití:
M = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] matice_txt_IO.uloz_matici("matice.txt", M) nactena_matice = matice_txt_IO.nacti_matici("matice.txt") print(nactena_matice)Vypíše
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]Obsah souboru matice.txt
1,2,3 4,5,6 7,8,9
2. úkol
Vytvořte modulzasobnik.py
, ve kterém implementuje tyto funkce:
vytvor_zasobnik() pridej_do_zasobniku(zasobnik, hodnota) odeber_ze_zasobniku(zasobnik)Modul importujte do programu
main_zasobnik.py
, kde ověříte funkčnost.
Obsah main_zasobnik.py
bude následující:
import zasobnik z1 = zasobnik.vytvor_zasobnik() zasobnik.pridej_do_zasobniku(z1, "world") zasobnik.pridej_do_zasobniku(z1, "Hello") z2 = zasobnik.vytvor_zasobnik() zasobnik.pridej_do_zasobniku(z2, "fist") zasobnik.pridej_do_zasobniku(z2, "second") print(zasobnik.odeber_ze_zasobniku(z1)) print(zasobnik.odeber_ze_zasobniku(z1)) print(zasobnik.odeber_ze_zasobniku(z2)) print(zasobnik.odeber_ze_zasobniku(z2)) print(zasobnik.odeber_ze_zasobniku(z1)) print(zasobnik.odeber_ze_zasobniku(z2))Po spuštění program vypíše:
Hello world second fist None NoneBude možnost vytvářet libovolný počet zásobníků. Do zásobníků bude možno prvky libovolně přidávat a získávat. Při pokusu o odebrání z prázdného zásobníku bude vráceno None. Je možné používat pouze zde probrané konstrukce jazyka Pytkon. Není povoleno používat dodatečné knihovny. Není povolenou použití globálních proměnných. Nápověda: Pro uchování odkazu na zásobník je možno samotný zásobník "obalit" seznamem. Úkol má hodnotu dvou malých úkolů.
2. zápočtový úkol
Vytvořte knihovnuzasobnik.py
, která implementuje zásobník přes spojový seznam (spojový seznam byl definován na 4. semináři). Do zásobníku budou moct být ukládána jen kladná čísla v rozsahu počtu bajtů, který bude zadán při vytvoření zásobníku. Zásobník bude možné ukládat do binárního souboru a také z něj načítat. Binární soubor bude ve daném formátu – první bajt bude rozsah ukládaných čísel a poté budou následovat samotná čísla uložená v zásobníku. Ukládání a načítání souboru implementujte dle úkolů 25 - 28 ze skript ZPP2.Bude možnost vytvářet libovolný počet zásobníků. Do zásobníků bude možno prvky libovolně přidávat a získávat. Při pokusu o odebrání z prázdného zásobníku bude vráceno None. Je možné používat pouze zde probrané konstrukce jazyka Python. Mj. tedy není povoleno použití dodatečné knihovny, neprobrané datové struktury (slovník, tuple). Dále není povolenou použití globálních proměnných. Není povoleno použití funkce pro práci se seznamy (např. pop() a clear()) pro samotnou manipulaci s daty v zásobníku (tzn. přidání do zásobníku, odebrání ze zásobníku), pro pomocné funkce na konverzi a ukládání do souboru použití je použití těchto funkcí povoleno. Nápověda: Pro uchování odkazu na zásobník je možno samotný zásobník "obalit" seznamem. Příklad použití:
z1 = zasobnik.vytvor_zasobnik(2) zasobnik.pridej_do_zasobniku(z1, 16) zasobnik.pridej_do_zasobniku(z1, 65536) zasobnik.pridej_do_zasobniku(z1, 65535) zasobnik.pridej_do_zasobniku(z1, 3) zasobnik.pridej_do_zasobniku(z1, -3) zasobnik.zapis_do_souboru("zasobnik.bin", z1) z2 = zasobnik.nacti_ze_souboru("zasobnik.bin") print(zasobnik.odeber_ze_zasobniku(z2)) print(zasobnik.odeber_ze_zasobniku(z2)) print(zasobnik.odeber_ze_zasobniku(z2))Vypíše:
hodnota 65536 je mimo povolený rozsah. hodnota -3 je mimo povolený rozsah. 3 65535 16
Studijní materiály
Martin Trnečka - Základy programování v Pythonu, první částMartin Trnečka - Základy programování v Pythonu, druhá část
Podmínky zápočtu
- Minimálně 75% přítomnost na seminářích (dle plánu vychází na 9)
- Minimálně 75% splněných "malých" úkolů
- Splnění obou zápočtových úkolů
Správce stránky: Karel Panchártek