Výuka

Název předmětu: Algoritmy a programování I
Kód: N1002, BUC02, KSB12
Rozsah: 2/2
Splnění ZS: Zápočet
Požadavky k zápočtu: Vypracované domácí úkoly a zápočtový projekt


Cíl a obsahová náplň přednášek:
  • Algoritmus, dělení algoritmů, rekurze, iterace, reprezentace algoritmů, asymptotiky, časová a prostorová složitost
  • Základní pojmy a syntaxe: proměnná, pole, operátory, aritmetické výrazy, větvení, cykly, funkce
  • Vývojové diagramy
  • Jazyk C++: základní syntaxe, komentáře, struktura programu, proměnné a datové typy, funkce, funkce main, IF THEN ELSE, SWITCH, WHILE, DO WHILE, FOR
  • Řazení
  • Bubble sort, Shaker sort
  • Quick sort
  • Insert sort
  • Select sort
  • Merge sort
  • Heap sort
  • Bucket sort
  • Bogo sort, Bozosort
  • Složené datové typy, struktury
  • Ukazatele
  • Ladění programů. Zadání projektu k zápočtu
Odborná literatura:
  1. BUCHALCOVÁ, A. Algoritmizace a programování. Praha: FI VŠE 1990.
  2. Černá, I.: Úvod do teorie zložitosti, Fakulta informatiky, Masarykova univerzita, 1997
  3. http://www.algoritmy.net
  4. http://www.itnetwork.cz
  5. https://msdn.microsoft.com
  6. http://www.cplusplus.com
  7. http://www.sallyx.org
  8. http://stackoverflow.com
  9. HONZÍK, J. M. Programovací techniky. Brno: VUT, 1995.
  10. RYCHLÍK, J. Programovací techniky. Praha: KOOP.
  11. WIRTH, N. Algoritmy a struktury údajů. Bratislava: Alfa, 1995.
  12. Prata, S. Mistrovství v C++. Praha: Computer Press, 2001.
1. domácí úkol
Vypracované domácí úkoly pošlete na můj e-mail.

Vývojové diagramy

Každý příklad je bodově ohodnocen, k úspěšnému splnění úkolu je třeba získat alespoň 8 bodů. Za každý započatý týden po termínu odevzdání se počet bodů nutných ke splnění úkolu navyšuje o 5.
Termín pro denní studenty: 8.11.2015 23:59
Termín pro kombinované studenty: 19.2.2016 23:59
  1. Načtěte číslo od uživatele a zjistěte, zda leží v intervalu <1,5>. (2b.)
  2. Načtěte číslo od uživatele a zjistěte, zda leží v intervalu (2,8). (2b.)
  3. Rozhodněte, které ze dvou čísel zadaných uživatelem je větší, případně jestli jsou si čísla rovna. Výsledek vypište. (3b.)
  4. Navrhněte kalkulačku, která provede operaci podle zadání uživatele. Při dělení nezapomeňte na kontrolu dělení nulou. (3b.)
  5. Načtěte od uživatele 10 čísel, která následně vypíšete. (3b.)
  6. Vyberte ze seznamu 10 čísel to největší. (3b.)
  7. Vyberte ze seznamu 10 čísel to nejmenší. (3b.)
  8. Vypište sumu řady 10 čísel. (3b.)
  9. Vypište průměrnou hodnotu z 10 čísel. (3b.)
  10. Vypište faktoriál čísla zadaného uživatelem. (3b.)
  11. Vytvořte digram pro jednoduchou hru pro dva hráče. První hráč zadá číslo od 1 do 10 a druhý se jej snaží uhodnout. (4b.)
  12. Vytvořte digram pro jednoduchou hru pro dva hráče. První hráč zadá číslo od 1 do 10 a druhý se jej snaží uhodnout. Druhý hráč má pouze 3 pokusy uhodnout číslo. (5b.)
  13. Vytvořte digram pro jednoduchou hru pro dva hráče. První hráč zadá číslo od 1 do 10 a druhý se jej snaží uhodnout. Druhý hráč má pouze 3 pokusy uhodnout číslo. Po neúspěšném hádání sdělí program hráči, zda je tipované číslo menší nebo větší než to, které má uhodnout. (6b.)
  14. Vytvořte digram pro jednoduchou hru pro dva hráče. První hráč zadá číslo od 1 do 10 a druhý se jej snaží uhodnout. Po neúspěšném hádání sdělí program hráči, zda je tipované číslo menší nebo větší než to, které má uhodnout. Určete minimální počet pokusů tak, aby druhý hráč vždy mohl číslo uhodnout a omezte počet hádání. (8b.)
2. domácí úkol

C++ kód

Každý příklad je bodově ohodnocen, k úspěšnému splnění úkolu je třeba získat alespoň 5 bodů. Za každý započatý týden po termínu odevzdání se počet bodů nutných ke splnění úkolu navyšuje o 5.
Očekávám, že mi pošlete pouze .cpp soubor, nikoliv celý projekt!!!
Kód bude komentovaný a vhodně strukturovaný. Kde to půjde, používejte funkce.
Termín pro denní studenty: 14.12.2015 23:59
Termín pro kombinované studenty: 19.2.2016 23:59
  1. Načtěte číslo od uživatele a zjistěte, zda je sudé, liché, dělitelné 3, 4 nebo 5. Vypište všechny zmiňované vlastnosti (2b.)
  2. Vygenerujte posloupnost 20 náhodných čísel a nalezněte největší a nejmenší prvek posloupnosti. (2b.)
  3. Načtěte od uživatele číslo n v rozsahu 10 až 20, vygenerujte posloupnost n náhodných čísel a vypište sumu těchto čísel. (2b.)
  4. Sestrojte kalkulačku, která provede operaci podle zadání uživatele. Při dělení nezapomeňte na kontrolu dělení nulou. Nezapomeňte uživateli sdělit instrukce! (3b.)
  5. Vytvořte program pro jednoduchou hru pro dva hráče. První hráč zadá číslo od 1 do 10 a druhý se jej snaží uhodnout. Druhý hráč má pouze 3 pokusy uhodnout číslo. Po neúspěšném hádání sdělí program hráči, zda je tipované číslo menší nebo větší než to, které má uhodnout. (3b.)
  6. Vytvořte program, který bude načítat znaky od uživatele a zobrazí jejich kód v Morseově abecedě. Zadávání uživatel ukončí zadáním velkého Q(3b.)
Projekty k zápočtu pro studenty denního studia

C++ kód

Projekty jsou pouze pro studenty mých cvičení!!!
Očekávám, že mi pošlete pouze .cpp soubor, nikoliv celý projekt!!!
Kód bude komentovaný, vhodně strukturovaný a bude řešený pomocí funkcí.
O přiřazení projektu je třeba zažádat e-mailem.
Termíny budou postupně vkládány do STAGu
  1. Heap sort
  2. Merge sort
  3. Comb sort
  4. Shaker sort
  5. Insert sort
  6. Implementace funkcí pro práci s haldou
  7. Aplikace pro práci s maticemi – sčítání a násobení matic. Uživatel zvolí operaci, zadá rozměr matic a následně matice. Aplikace zobrazí výsledek operace.
  8. Vyhledávání v seřazené posloupnosti metodou půlení intervalů
  9. Bogo a bozo sort