Programování 1 - NMIN101
Anglický název: Programming 1
Zajišťuje: Katedra softwaru a výuky informatiky (32-KSVI)
Fakulta: Matematicko-fyzikální fakulta
Platnost: od 2019
Semestr: zimní
E-Kredity: 5
Rozsah, examinace: zimní s.:2/2 [hodiny/týden]
Počet míst: neomezen
Minimální obsazenost: neomezen
Virtuální mobilita / počet míst: ne
Stav předmětu: nevyučován
Jazyk výuky: čeština
Způsob výuky: prezenční
Garant: doc. RNDr. Pavel Töpfer, CSc.
RNDr. Martin Pergel, Ph.D.
Třída: M Bc. FM
M Bc. FM > Povinné
M Bc. FM > 1. ročník
M Bc. MMIB
M Bc. MMIB > Povinné
M Bc. MMIB > 1. ročník
M Bc. MMIT
M Bc. MMIT > Povinné
M Bc. OM
M Bc. OM > Povinné
M Bc. OM > 1. ročník
Kategorizace předmětu: Informatika > Programování
Neslučitelnost : NPRG030
Záměnnost : NMIN111, NPRG030
Je korekvizitou pro: NMIN161
Je neslučitelnost pro: NMUE022, NPRX030, NPRG030
Je prerekvizitou pro: NMIN102
Je záměnnost pro: NPRM044
Výsledky anket   Termíny zkoušek   Rozvrh   Nástěnka   
Anotace -
Poslední úprava: doc. RNDr. Pavel Töpfer, CSc. (18.01.2018)
Seminář pro 1. ročník bakalářského studia matematiky. Obsahem kursu jsou základy programování v jazyce Python.
Podmínky zakončení předmětu -
Poslední úprava: doc. RNDr. Pavel Töpfer, CSc. (11.10.2017)

Předmět je zakončen zápočtem. K získání zápočtu se požaduje:

  • aktivní účast na cvičení spočívající obvykle v řešení úkolů (programů) v termínech stanovených cvičícím (ať už na cvičení nebo doma),
  • vypracování zápočtového programu a jeho odevzdání do termínu stanoveného cvičícím,
  • úspěšné absolvování zápočtového testu.

Povaha prvních dvou požadavků neumožňuje vypsat opravné termíny. Vyučující může stanovit podmínky, za nichž student může nahradit chybějící domácí úkoly nebo opakovaně odevzdat zápočtový program po odstranění nalezených závad.

Na složení zápočtového testu má student tři pokusy do konce zkouškového období zimního semestru (jeden řádný a dva opravné termíny). Vyučující může studentům povolit vykonat opravný termín i dodatečně během letního semestru.

Literatura -
Poslední úprava: doc. RNDr. Pavel Töpfer, CSc. (30.09.2017)
  • P.Töpfer: Algoritmy a programovací techniky, Prometheus Praha 1995, 2. vyd. 2007
  • P.Satrapa: Pascal pro zelenáče, Neocortex Praha 1994
  • N.Wirth: Algorithms + Data Structures = Programs , Prentice Hall Englewood Cliffsů; New Jersey 1975
  • slovenský překlad N. Wirth: Algoritmy a štruktúry údajov, Alfa, Bratislava 1989

Sylabus -
Poslední úprava: doc. RNDr. Pavel Töpfer, CSc. (18.01.2018)
Základy programovacího jazyka Python
  • 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)
  • for cykly, range()
  • break, continue
  • seznamy používané jako pole
  • přiřazení seznamu přiřazuje pouze odkaz
  • 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
  • seznamy a operace s nimi
  • fronta a zásobník
  • iterování přes seznam
  • řezy
  • list comprehension
  • stringy
  • používání knihoven, import
  • kreslení grafů pomocí matplotlib
  • podrobněji o typovém systému
  • tuples
  • slovníky a operace s nimi
  • výjimky a jejich odchytávání
  • třídy a objekty
  • popis reality pomocí objektů
  • odvozování typů, dědičnost
  • práce se soubory
  • standardní knihovna

Základní algoritmy

  • časová složitost
  • rozklad čísla na číslice
  • Euklidův algoritmus
  • prvočísla dělením do odmocniny
  • faktorizace
  • vyhodnocení polynomu (Hornerovo schéma)
  • k-tý nejmenší prvek v čase k*n
  • Eratosthenovo síto
  • násobení matic
  • Gaussova eliminace
  • elementární třídicí algoritmy
  • binární vyhledávání
  • hledání kořenů funkcí: půlení intervalu, lineární interpolace
  • slévání setříděných posloupností
  • práce se stromy