Základy programování pro IT 2 Mgr. MDDr. Karel Panchártek

Seznam seminářů

  1. Opakování
  2. Rekurze
  3. Anomymní funkce
  4. Propojené datové struktury 1
  5. Propojené datové struktury 2
  6. 1. zápočtový úkol
  7. Ošetřování chyb při běhu programu (text, úkol)
  8. Bitové operace
  9. Práce se soubory
  10. Organizace zdrojového kódu (text, úkol)
  11. 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 modul matice_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 modul zasobnik.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
  None
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 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 knihovnu zasobnik.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í část
Martin Trnečka - Základy programování v Pythonu, druhá část

Podmínky zápočtu

Ke splnění úkolů je možné použití pouze konstrukcí, které jsou probrány ve výukových materiálech ZPP1 a ZPP2.
Správce stránky: Karel Panchártek