PředmětyPředměty(verze: 945)
Předmět, akademický rok 2023/2024
   Přihlásit přes CAS
Programování 3 - NMIN201
Anglický název: Programming 3
Zajišťuje: Katedra softwaru a výuky informatiky (32-KSVI)
Fakulta: Matematicko-fyzikální fakulta
Platnost: od 2021
Semestr: zimní
E-Kredity: 5
Rozsah, examinace: zimní s.:2/2, Z+Zk [HT]
Počet míst: neomezen
Minimální obsazenost: neomezen
4EU+: ne
Virtuální mobilita / počet míst pro virtuální mobilitu: ne
Stav předmětu: vyučován
Jazyk výuky: čeština
Způsob výuky: prezenční
Způsob výuky: prezenční
Garant: RNDr. Martin Pergel, Ph.D.
Třída: M Bc. MMIB
M Bc. MMIB > Povinné
M Bc. MMIB > 2. ročník
M Bc. MMIT
M Bc. MMIT > Povinné
M Bc. OM
M Bc. OM > Doporučené volitelné
M Bc. OM > 2. ročník
Kategorizace předmětu: Informatika > Programování
Je záměnnost pro: NPRM049
Anotace -
Poslední úprava: doc. RNDr. Pavel Töpfer, CSc. (28.09.2020)
Kurs nízkoúrovňového programování v C/C++ s důrazem na objektové programování a objektový návrh programů. Předpokládá znalosti základního kurzu programování NMIN111 Programování 1 a NMIN112 Programování 2, na které navazuje.
Podmínky zakončení předmětu -
Poslední úprava: RNDr. Tomáš Holan, Ph.D. (13.10.2017)

Předmět je zakončen zápočtem a zkouškou. Zápočet není nutný k účasti na zkoušce.

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: RNDr. Martin Pergel, Ph.D. (13.09.2021)

S. Lippman, J. Lajoie, B. Moo: C++ Primer, Addison--Wesley 2012.

B. Stroustrup: Programming: Principles and Practice Using C++, Addison--Wesley 2014.

B. Stroustrup: A Tour of C++, Addison-Wesley 2018.

M. Virius: Jazyky C a C++ podle normy ANSI/ISO Grada Publishing 2005.

Požadavky ke zkoušce -
Poslední úprava: RNDr. Tomáš Holan, Ph.D. (13.10.2017)

Zkouška má pouze ústní část, která obsahuje typicky dvě otázky odpovídající sylabu přednášky a tomu, co byo procvičováno na cvičení.

Požadavky ke zkoušce odpovídají sylabu předmětu v rozsahu předneseném na přednáčce.

Sylabus -
Poslední úprava: doc. RNDr. Pavel Töpfer, CSc. (18.01.2018)

Kurs nízkoúrovňového programování v C/C++ s důrazem na objektové programování a objektový návrh programů. Předpokládá znalosti základního kurzu programování NMIN101 a NMIN102, na které navazuje.

C: Základy
  • Hello, world!
  • deklarace proměnných (zatím jenom int) a přiřazování
  • podmínky, cykly, break a continue
  • deklarace a volání funkcí

C: Aritmetika

  • celočíselné typy
  • floating-point typy
  • aritmetické a bitové operátory
  • relační a booleovské operátory
  • přiřazovací operátory
  • explicitní a automatické typové konverze
  • literály (včetně typovaných)
  • komplexní čísla

C: Složené typy

  • struct, union
  • pole
  • ukazatele
  • kvalifikátory (const, volatile)
  • jak číst složité deklarace

Principy počítačů

  • procesor, paměť, periferie
  • organizace paměti: kód, statická data, dynamická data, zásobník
  • uložení dat v paměti:
  • celá čísla, dvojkový doplněk
  • fixed-point reprezentace
  • IEEE floaty
  • znaky a různá jejich kódování
  • překladač, linker, knihovny

C: Práce s ukazateli

  • dynamická alokace paměti
  • spojové seznamy, stromy
  • reprezentace polí pomocí pointerové aritmetiky
  • práce s řetězci

C: Preprocesor

  • #include
  • #define
  • #if, #ifdef

C: Ostatní

  • switch, case, goto
  • vedlejší efekty a synchronizační body
  • knihovní typy
  • různé knihovní funkce
  • programy složené z více modulů, viditelnost identifikátorů

C++: Objekty

  • třídy, objekty, public/private, class/struct
  • dědičnost a statické/virtuální metody
  • konstruktory, destruktory
  • konvece: gettery a settery
  • přetěžování funkcí a operátorů
  • objektový návrh

C++: Standardní knihovna

  • namespace
  • stream
  • pair
  • vector
  • string
  • set, map
  • iterátory a automatické typování deklarací

C++: Ukazatele

  • unique_ptr, shared_ptr
  • reference
  • copy/move semantika
  • copy/move konstruktory
  • konverzní konstruktory
  • const_cast, static_cast, reinterpret_cast, dynamic_cast

C++: Ostatní

  • základní použití šablon
  • výjimky
  • knihovní algoritmy
  • co za nás udělá překladač

 
Univerzita Karlova | Informační systém UK