Algoritmy a programovanie II
- Kredity: 7
- Ukončenie: Skúška
- Rozsah: 2P + 2C
- Semester: letný
- Ročník: 1
- Fakulta hospodárskej informatiky
Vyučujúci
Zaradený v študijných programoch
Výsledky vzdelávania
Po absolvovaní predmetu študenti budú mať:
Znalosti
A. Rozumieť základným princípom procedurálneho programovania v jazyku C.
B. Orientovať sa v syntaxi jazyka C a v sémantických základoch procedurálneho programovania v integrovanom vývojovom prostredí.
C. Porozumieť postupu analýzy programátorskej úlohy, návrhu algoritmu a jeho preklopeniu do zdrojového kódu v jazyku C.
Zručnosti
D. Implementovať navrhnutý algoritmus pomocou syntaktických pravidiel jazyka C a procedurálnej paradigmy.
E. Identifikovať a odstraňovať syntaktické a sémantické chyby v zdrojovom kóde.
F. Pomocou debuggera integrovaného vývojového prostredia analyzovať správanie finálneho programu s testovacími vstupmi.
G. Z otestovaného zdrojového kódu zostaviť finálny program pre cieľový operačný systém a hardvérovú platformu.
H. Vypracovať technickú dokumentáciu opisujúcu navrhnuté riešenie programátorskej úlohy.
Spôsobilosti
A. Samostatne analyzovať zadanie programátorskej úlohy a navrhnúť vhodný algoritmus riešenia.
B. Dodržať zásady procedurálneho programovania a písať funkčný, čitateľný a logicky konzistentný zdrojový kód v jazyku C.
D. Systematicky testovať program, diagnostikovať chyby a optimalizovať správanie aplikácie.
G. Prezentovať a obhajovať vlastné programátorské riešenia na profesionálnej úrovni.
H. Dokumentovať výsledné riešenie tak, aby bolo využiteľné pre používateľov aj ďalších programátorov.
Stručná osnova predmetu
1) Úvod do syntaxe jazyka C a princípov procedurálneho programovania v jazyku C
2) Zdrojový tvaru programu vytvoreného v jazyku C
3) Proces zostavenia programu vytvoreného v jazyku C, vlastnosti jazyka C
4) Vstup a výstup z a do programov vytvorených v jazyku C
5) Riadiace štruktúry používané pre riadenie toku programu vytvoreného v jazyku C
6) Jednorozmerné, viacrozmerné polia a reťazce v programe vytvorenom v jazyku C
7) Ukazovateľ a dereferencovanie ukazovateľa v programe vytvorenom v jazyku C
8) Funkcie v programe vytvorenom v jazyku C
9) Rekurzívne funkcie v programe vytvorenom v jazyku C
10) Programátorom definované dátové typy v programe vytvorenom v jazyku C
11) Štruktúry a štruktúrové premenné v programe vytvorenom v jazyku C
12) Pretypovanie dátových typov operandov výrazov v programe vytvorenom v jazyku C
13) Práca s diskovým súborom v programe vytvorenom v jazyku C
Odporúčaná literatúra
Archer, T. (2002). Myslíme v jazyku C. Grada. ISBN 80-247-0301-7
Chudá, D., Juríková, L., Medveďová, E., & Turňa, Ľ. (2006). Programovanie v jazyku C. Ekonóm. ISBN 80-225-2186-8
Dostál, R. (2009). C/C++ hotová řešení. Computer Press. ISBN 978-80-251-2190-0
Hanák, J. (2011). Programovaní v jazyce C. Computer Media. ISBN 9788074020414
Jena, S. K. (2024). C programming: Learn to code. Chapman & Hall/CRC.
Jurík, P. (2019a). Programovanie v jazyku C rýchlo a jednoducho. Merkur. ISBN 978-80-89996-01-8
Jurík, P. (2019b). Programovanie v jazyku C++ rýchlo a jednoducho. Merkur. ISBN 978-80-89996-02-5
Kernighan, B. W., & Ritchie, D. M. (2006). Programovací jazyk C. Computer Press. ISBN 802510897X
Sedgewick, R. (2003). Algoritmy v C. SoftPress. ISBN 80-86497-56-9
Virius, M. (2011). Jazyky C a C++. Grada. ISBN 9788024739175
Sylabus predmetu
1. Úvod do syntaxe jazyka C a princípov procedurálneho programovania. (História a význam jazyka C. Základná štruktúra programu, hlavné prvky jazyka. Úvod do paradigmy procedurálneho programovania. Porovnanie s inými jazykmi.) 2. Zdrojový tvar programu vytvoreného v jazyku C. Komentáre, hlavičky, bloky. (Základné pravidlá syntaxe – premenné, operátory, bloková štruktúra. Deklarácie a definície. Štýl a čitateľnosť zdrojového kódu.) 3. Proces zostavenia programu a vlastnosti jazyka C. Preklad, linkovanie, spúšťanie. (Kompilátor, linker, makefile. Fázy prekladu – preprocessing, compilation, linking. Vlastnosti nízkoúrovňového prístupu k pamäti.) 4. Vstup a výstup v jazyku C – knižnica stdio.h. (Použitie funkcií printf, scanf, čítanie zo vstupu, formátovanie výstupu. Práca s konzolou. Základy ladenia vstupu a výstupu.) 5. Riadiace štruktúry v jazyku C. Vetvenie, cykly, podmienky. (Použitie if, switch, while, for, do...while. Prehľad logických operátorov. Príklady vetvenia a opakovania.) 6. Polia a reťazce. Jednorozmerné a viacrozmerné polia. Znakové reťazce. (Deklarácia, inicializácia, indexovanie. Základné operácie s poľami. Práca s reťazcami cez string.h. Ukážky implementácie algoritmov.) 7. Ukazovatele a dereferencovanie. Práca s adresami pamäte. (Základné pojmy: adresa, referencia, dereferencia. Ukazovatele na premenné, polia, funkcie. Vzťah medzi poľami a ukazovateľmi.) 8. Funkcie v jazyku C – deklarácia, definícia, volanie. (Štruktúra funkcie, návratové hodnoty, parametre. Prenos hodnôt – hodnotou vs. referenciou. Modularita a opätovné použitie kódu.) 9. Rekurzia a rekurzívne funkcie. (Definícia rekurzie, príklady: faktoriál, Fibonacciho čísla. Porovnanie s iteráciou. Vnorenie volaní, zásobník volaní.) 10. Používateľom definované dátové typy – typedef, výčtové typy (enum). (Motivácia pre vlastné typy. Typové aliasy, enumerácie a ich použitie pri čitateľnosti kódu.) 11. Štruktúry a štruktúrové premenné. Komplexné dátové typy. (Definícia struct, vnorené štruktúry, ukazovatele na štruktúry. Práca s údajmi reprezentujúcimi komplexné entity.) 12. Pretypovanie operandov výrazov a typová kompatibilita. (Implicitné a explicitné pretypovanie (casting). Dôsledky pri výpočtoch. Riešenie typových konfliktov v zložených výrazoch.) 13. Práca s diskovým súborom. Súborový vstup a výstup. (Funkcie fopen, fclose, fprintf, fscanf, fgets, fputs. Rôzne režimy práce so súbormi – čítanie, zápis, binárny režim. Ukladanie dát do súborov.)
Podmienky na absolvovanie predmetu
Cvičenia (40% z hodnotenia predmetu)
Náplňou cvičení je riešenie zadaných programátorských úloh. Okrem týchto úloh študenti riešia samostatné domáce programátorské zadania tematicky nadväzujúce na prednášky a riešené programátorské úlohy z cvičení. Svoje riešenia samostatných domácich zadaní, s ich technickým opisom, študenti komentujú a v prípadnej diskusii obhajujú pred ostatnými študentmi ich študijnej skupiny. Riešenia samostatných programátorských domácich zadaní študentov sú ohodnotené (10% z hodnotenia predmetu). Riešením a hodnotením samostatných domácich zadaní sa overuje dosiahnutá úroveň výsledkov vzdelávania B, C, D, E, F, G, H. V rámci cvičení študenti absolvujú samostatnú písomnú prácu, riešenie programátorského zadania v integrovanom vývojovom prostredí, ktorá je ohodnotená (30% z hodnotenia predmetu). Riešením a hodnotením problémovej úlohy zo samostatnej písomnej práce sa overuje dosiahnutá úroveň výsledkov vzdelávania C, D, E, F.
Skúška (60% z hodnotenia predmetu)
Skúška sa skladá z dvoch častí:
- zo samostatnej skúškovej písomnej práce, riešenie programátorského zadania v integrovanom vývojovom prostredí, a obhajoby tohto riešenia (50% z hodnotenia predmetu). Riešením a hodnotením problémovej úlohy zo samostatnej skúškovej písomnej práce a obhajobou tohto riešenia sa overuje dosiahnutá úroveň výsledkov vzdelávania C, D, E, F, G.
- z ústnej časti, kde študenti odpovedajú na teoretické otázky zo syntaxe jazyka C a z princípov procedurálneho programovania v jazyku C (10% z hodnotenia predmetu). Ústnou časťou skúšky a jej hodnotením sa overuje dosiahnutá úroveň výsledkov vzdelávania A a B.
Pracovné zaťaženie študenta
Pracovné zaťaženie študenta (v hodinách): 7 kreditov x 26 h = 182 h
Rozdelenie pracovného zaťaženia študenta
účasť na cvičeniach, seminároch 52 h,
príprava na semináre 26 h,
spracovanie domácich zadaní 12 h,
príprava na samostatnú písomnú prácu 30 h,
príprava na skúšku 62 h.
Jazyk, ktorého znalosť je potrebná na absolvovanie predmetu
slovenský jazyk
Dátum schválenia: 04.03.2025
Dátum poslednej zmeny: 06.11.2025
Dátum schválenia: 04.03.2025
Dátum poslednej zmeny: 06.11.2025

