Základy programování 4 - C# Radek Janoštík Univerzita Palackého v Olomouci 12.2.2018 Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 12.2.2018 1 / 18
Úvod Předmět navazuje na Základy programování 3 - C# Jedna dvouhodina týdně výklad + samostatná práce Doporučeno MS Visual Studio (na verzi netrvám) Uživatelé Mono vítáni (viz. níže) Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 12.2.2018 2 / 18
Konzultace, kontakt Email: radek.janostik@upol.cz Pracovna: 5.076 Telefon: 585 634 715 (nepreferován) Web: http://apollo.inf.upol.cz/ janostik/ Konzultace: Úterý 8:00-9:30 nebo dohodou Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 12.2.2018 3 / 18
Radek Janoštík Drobné (Univerzita změny Palackéhoa vvýjimky Olomouci) vyhrazeny Základy programování 4 - C# 12.2.2018 4 / 18 Podmínky zápočtu Účast na semináři není povinná Z každého semináře bude úkol Úplné splnění úkolu na semináři 4 body Úplné splnění úkolu do neděle 23:59:59 olomouckého času před následujícím seminářem 3 body Chyby, neúplnost, bad practice budou penalizovány Celkem 10 úkolů maximálně 30 bodů, pro zápočet potřeba 24 bodů Alternativa: Menší projekt zahrnující probranou látku odevzdaný do měsíce od schválení
Odevzdávání úkolů Osobně na cvičení 4 body Emailem 3 body Emailem na: radek.janostik@upol.cz Předmět: ZP4CS - úkol č. n př.: ZP4CS - úkol č. 1 Tělo: klidně prázdné, případně nějaké doplnění Příloha: zip archiv celého projektu bez adresářů bin a obj (antispam) s vašim příjmením v názvu Přijetí emailu do neděle 23:59:59 olomouckého času před následujícím seminářem Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 12.2.2018 5 / 18
Doporučená literatura (1/2) Andrew Troelsen. Pro C# 5.0 and the.net 4.5 Framework. (6. vydání). 2012. ISBN 978-1-4302-4233-8. Jay Glynn a kol., C# Programujeme profesionálně. COMPUTER PRESS - dostupné v knihovně, starší A spousta dalších... Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 12.2.2018 6 / 18
Doporučená literatura (2/2) - zdroje legálně na webu Aleš Keprt. Softwarová laboratoř v jazyce C#. 2008. http://phoenix.inf.upol.cz/esf/ucebni/softlab.pdf Aleš Keprt. Systémové programování v jazyce C#. 2008.http://phoenix.inf.upol.cz/esf/ucebni/sysprog.pdf Sice starší, ale pro základ dostačující Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 12.2.2018 7 / 18
Jízdní řád (1/2) 12.2.2017 Úvodní hodina, opakování, direktivy preprocesoru, konfigurace aplikace 19.2.2017 Referenční a hodnotové datové typy, delegáty, lambda výrazy, přetížení operátorů 26.2.2017 Základy paralelizace vlákna 5.3.2017 Práce se soubory, souborovým systémem 12.3.2017 XML, JSON 19.3.2017 GUI, formuláře 26.3.2017 GUI kreslení Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 12.2.2018 8 / 18
Jízdní řád (2/2) 2.4.2017 Velikonoční pondělí 9.4.2017 Práce s databázemi 16.4.2017 LINQ 23.4.2017 TBA 30.4.2017 Zápočty, předvedení projektů, dodělávky, rezerva 7.5.2017 rezerva Změny v plánu vyhrazeny Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 12.2.2018 9 / 18
Anketa Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 12.2.2018 10 / 18
Co byste měli znát Seznámení s vývojovým prostředím Visual Studio. Úvod do programování v C#. Platforma.NET. Proměnné, operátory, výrazy, datové typy, metody, rozsah platnosti. Řízení toku. Rozhodovací příkazy. Složené příkazy a opakování. Chyby a výjimky. Pole, kolekce, generické typy. Procházení kolekcí. Třídy a objekty. Hodnoty a reference. Hodnotové typy (enum, struct). Dědičnost. Vlastnosti (properties). Indexery. Delegáty a události. Překrytí operátorů. Základní třídy standardní knihovny. Programování okenních aplikací. Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 12.2.2018 11 / 18
Projekt mono Projekt mono: http://www.mono-project.com/ Cross platform, open source.net framework Open-source implementace.net frameworku Kompatibilita vše v.net 4.7 až na: WPF (framework pro GUI) WWF Windows Workflow Foundation Omezeně WCF (Windows Communication Foundation) a asynchronní ASP.NET Vynechány OS-specifické (=Windows-only) funkce Více na: http://www.mono-project.com/docs/about-mono/compatibility/ Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 12.2.2018 12 / 18
Monodevelop Multiplatformní IDE pro C http://www.monodevelop.com/ Komplexní a funkční IDE (pro naše účely dokáže nahradit MSVS) Unity engine Grafické aplikace v GTK Podpora Linux, Mac OS X, Windows Zdarma Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 12.2.2018 13 / 18
Direktivy preprocesoru Začínají # #define a #undef musí být na začátku souboru. Nastavení / zrušení symbolu #if, #elif, #else, #endif #error, #warning #region, #endregion Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 12.2.2018 14 / 18
Konfigurace aplikace Project Properties Settings Access Modifier - Iternal a Public udává viditelnost nastavení Scope Application a User read-only vs. měnitelné Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 12.2.2018 15 / 18
Úkol (1/3) Prerekvizita: Nainstalovat/aktualizovat/zkontrolovat funkčnost Visual Studia na vašem stroji (nehodnoceno) Hlavní úkol (pro opakování): Implementovat MergeSort pro pole celých čísel, který při DEBUG režimu vypíše string z nastavení aplikace Pro připomenutí: http: //belohlavek.inf.upol.cz/vyuka/algoritmicka-matematika-1-2.pdf V kostce: Setřid levou polovinu pole, setřid pravou polovinu pole, slij obě poloviny pole. Pseudokód (Pro inspiraci): Merge-Sort(A, p, r) 1 if p < r 2 then q <- b(p + r)/2c 3 Merge-Sort(A, p, q) 4 Merge-Sort(A, q + 1, r) 5 Merge(A, p, q, r) Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 12.2.2018 16 / 18
Úkol (2/3) Merge(A,p, q, r) 1 n1 <- q - p + 1 2 n2 <- r - q 3 vytvoř nová pole L[0..n1] a R[0..n2] 4 for i <- 0 to n1-1 5 do L[i] <- A[p + i] 6 for j <- 0 to n2-1 7 do R[j] <- A[q + 1 + j] 8 L[n1] <- int.maxvalue 9 R[n2] <- int.maxvalue 10 i <- 0 11 j <- 0 12 for k <- p to r 13 do if L[i] <= R[j] 14 then A[k] <- L[i] 15 i <- i + 1 16 else A[k] <- R[j] 17 j <- j + 1 Není nutné přesně dodržet pseudokód!!! Myslete v C# Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 12.2.2018 17 / 18
Úkol (3/3) - příklad použití Náznak volání Výstup 1 int[] pole = {4, 2, 7, 1, 8, 3, 6, 9, 5} 2 --> vypis pole 3 MergeSort(pole, 0, pole.length) 4 --> vypis pole Toto je string z nastavení aplikace. {4, 2, 7, 1, 8, 3, 6, 9, 5} {1, 2, 3, 4, 5, 6, 7, 8, 9} Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 12.2.2018 18 / 18