Cvičenie č. 1 - Úvod, organizácia a opakovanie
Organizácia
Všetky organizačné záležitosti nájdete na stránke O cvičeniach.
Hrubá osnova:
- jazyk C#
- vývojové prostredie MS Visual Studio
- písanie a ladenie programov
- základy objektovo orientovaného programovania (OOP)
- ďalšie užitočné algoritmy a prístupy
- napr. dynamické programovanie
- možno: okenné aplikácie, udalosti a grafika
Cvičenia Martina Mareša
- výberové cvičenie pre pokročilých študentov v rámci NPRG031
Opakovanie
- Vysvetlite pojem algoritmus.
- Čo je to zložitosť algoritmu a asymptotická notácia?
- Aké základné druhy zložitosti existujú?
- Aký je rozdiel medzi syntaktickou, behovou (runtime) a logickou chybou v programe?
- Čo je to syntax a sémantika progamovacieho jazyka?
- Vysvetlite pojmy identifikátor, premenná, typ premennej a konštanta.
- Ako sa líšia globálne a lokálne premenné?
- Čo sú to procedúry a funkcie, ako sa od seba líšia?
- Aký je rozdiel medzi predávaním parametru hodnotou vs. odkazom (referenciou)?
- Aké podmienené príkazy poznáte?
- Aké druhy cyklov poznáte a aké sú ich možnosti prerušenia?
- Čo je to aritmetické pretečenie a zaokrúhlovacia chyba?
- Aké triediace algoritmy poznáte? Uveďte myšlienu, časovú a pamäťovú zložitosť.
- Popíšte dátové štruktúry zásobník a fronta.
- Aké sú rozdiely medzi statickou alokáciou pamäti na zásobníku a dynamickou alokáciou na halde?
- Čo je to ukazateľ (pointer) určitého dátového typu?
- Čo sú dynamické dátové štruktúry? Uveďte príklady.
- Čo je to rekurzia? Čo je to koncová rekurzia? Dá sa rekurzii vyhnúť?
- Vysvetlite algoritmus prehľadávania do šírky (BFS) a do hĺbky (DFS).
- Kedy je výhodné použiť BFS a kedy zas DFS?
- Ako sa dajú naimplementovať?
- Na nejakom príklade vysvetlite metódu rozdelu ja panuj.
- Definujte dátovú štruktúru binárneho vyhľadávacieho stromu a binárnej haldy.
- Aký je medzi nimi rozdieľ?
- Aká je základná myšlienka hash-ovania?
- Vysvetlite rozdiel medzi prefixovou, infixovou a postfixovou notáciou aritmetického výrazu.
Do ďalšieho cvičenia
- Skontrolujte si, že ste v Codexe priradený do skupiny NPRG031-PZ-2016/2017.