Detail předmětu

Programování a algoritmy 1

FEKT-BPC-PP1Ak. rok: 2024/2025

Celý kurz bude vyučován v programovém prostředí MATLAB (případně jeho freeware alternativách). Studenti se seznámí s maticovými operacemi, logickými a relačními operátory. Dále budou probrány pokročilé datové typy (komplexní čísla, struktury, cell, řada, halda, spojovaný seznam, strom, graf), nástroje pro řízení běhu programu (podmínky if-elseif-else, cykly while, for, metody switch-case), tvorba funkcí. Dále budou probrána základní programátorská paradigmata jako hrubá síla, hladový algoritmmus, rozděl a panuj, dynamické programování, zpětné prohledávání atd. Důraz bude kladen především na přehlednost, vektorizaci a optimalizaci kódu. Studenti se naučí základy objektově orientovaného programování a tvorby grafického uživatelského prostředí.  

Jazyk výuky

čeština

Počet kreditů

5

Vstupní znalosti

Jsou požadovány znalosti na úrovni středoškolského studia.

Pravidla hodnocení a ukončení předmětu

Studenti mohou získat maximálně 36 bodů za aktivní práci v počítačových cvičení a  na domácích úkolech, 40 bodů za průběžné testy během semestru a 24 bodů za individuální projekt v jazyce MATLAB.
Vymezení kontrolované výuky a způsob jejího provádění stanoví každoročně aktualizovaná vyhláška garanta předmětu.

Učební cíle

Cílem předmětu je seznámit studenty se základy programování a algoritmizace. Předmět bude vyučován v programu MATLAB, jenž nezatěžuje uživatele s alokací proměnných, uvolňování paměti jako je tomu u jazyka C, ale umožňuje soustředit na samotné algoritmy. Cílem předmětu je taktéž, aby studenti získali praktické programátorské návyky (atomizace, struktura kódu, komentáře, názvy proměnných atd.). Studenti by měli po absolvování být schopni sestavit jednoduchý programový toolbox a k němu grafické uživatelské rozhraní (GUI).
Absolvent předmětu je schopen:
1) Provádět maticové operace v MATLABu.
2) Převést matematické algoritmy do formy matlabovských funkcí.
3) Vykreslovat průběhy 2D a 3D funkcí.
4) Sestavit jednoduchou aplikaci s grafickým rozhraním v MATLABu.
5) Psát přehledný a srozumitelný kód dle programátorských zvyklostí.

Základní literatura

MATLAB Primer. Www.mathworks.com [online]. 3 Apple Hill Drive Natick, MA 01760-2098: The MathWorks, 2017 [cit. 2017-08-21]. Dostupné z: https://www.mathworks.com/help/pdf_doc/matlab/getstart.pdf (CS)
Cormen, Thomas H., et al. Introduction to algorithms. MIT press, 2009. (CS)

Doporučená literatura

VALENTINE, D. T. a Brian D. HAHN. Essential MATLAB for engineers and scientists. 3rd ed. London: Butterworth Heinemann, 2007. (CS)

Zařazení předmětu ve studijních plánech

  • Program BPC-MET bakalářský, libovolný ročník, letní semestr, volitelný
  • Program BPC-EKT bakalářský, 1. ročník, letní semestr, povinný

Typ (způsob) výuky

 

Přednáška

26 hod., nepovinná

Vyučující / Lektor

Osnova

1. Úvod, historie Matlabu, alternativy, zásady psaní kódu, skript.
2. Tvorba matic, maticové operace, indexování, logické a relaèní operátory.
3. Pokroèilé datové typy (komplexní èísla, char, logical, struktury, cell).
4. Øízení programu, podmínky, cykly.
5. Funkce - hlavièka, lokální vs. globální promìnné a Workspace.
6. Algoritmy - zápis algoritmù, èasová/pamìová nároènost, algoritmy øazení.
7. Algoritmy - datové struktury, paradigmata - hrubá síla, rozdìl a panuj, hladový algoritmus, dynamické programování, zpìtné prohledávání
8. Funkce - handle, vekorizace, optimalizace kódu, kontrola programu, bsxfun, arrayfun, cellfun.
9. Grafika - možnosti vykreslování, tex pøíkazy.
10. Práce se soubory - ètení a zápis.
11. GUI - grafické uživatelské prostøedí, systém appdesigner.
12. GUI - uicontrols.
13. OOP - tøída/objekt, vlastnosti a metody, konstruktor, set, get. dìdìní, pøístup, jmenné prostory, enumerace.

Cvičení na počítači

39 hod., povinná

Vyučující / Lektor

Osnova

1. Úvod, historie Matlabu, alternativy, zásady psaní kódu, skript.
2. Tvorba matic, maticové operace, indexování, logické a relaèní operátory.
3. Pokroèilé datové typy (komplexní èísla, char, logical, struktury, cell).
4. Øízení programu, podmínky, cykly.
5. Funkce - hlavièka, lokální vs. globální promìnné a Workspace.
6. Algoritmy - zápis algoritmù, èasová/pamìová nároènost, algoritmy øazení.
7. Algoritmy - datové struktury, paradigmata - hrubá síla, rozdìl a panuj, hladový algoritmus, dynamické programování, zpìtné prohledávání
8. Funkce - handle, vekorizace, optimalizace kódu, kontrola programu, bsxfun, arrayfun, cellfun.
9. Grafika - možnosti vykreslování, tex pøíkazy.
10. Práce se soubory - ètení a zápis.
11. GUI - grafické uživatelské prostøedí, systém appdesigner.
12. GUI - uicontrols.
13. OOP - tøída/objekt, vlastnosti a metody, konstruktor, set, get. dìdìní, pøístup, jmenné prostory, enumerace.