PředmětyPředměty(verze: 964)
Předmět, akademický rok 2024/2025
   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í
Garant: RNDr. Martin Pergel, Ph.D.
Vyučující: 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 -
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.
Poslední úprava: Töpfer Pavel, doc. RNDr., CSc. (28.09.2020)
Podmínky zakončení předmětu -

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.

Poslední úprava: Holan Tomáš, RNDr., Ph.D. (13.10.2017)
Literatura -

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.

Poslední úprava: Pergel Martin, RNDr., Ph.D. (13.09.2021)
Požadavky ke zkoušce -

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.

Poslední úprava: Holan Tomáš, RNDr., Ph.D. (13.10.2017)
Sylabus -

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č

Poslední úprava: Töpfer Pavel, doc. RNDr., CSc. (18.01.2018)
 
Univerzita Karlova | Informační systém UK