Základy programování 4 - C# Radek Janoštík Univerzita Palackého v Olomouci 13.2.2018 Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 13.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# 13.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: Čtvrtek 13:00-14:30 nebo dohodou Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 13.2.2018 3 / 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 23:59:59 olomouckého času dva dny před následujícím seminářem ) 3 body, tedy: I Úterní seminář ) před nedělní půlnocí I Středeční seminář ) pondělní půlnocí Chyby, neúplnost, bad practice budou penalizovány Celkem 11 úkolů ) maximálně 33 bodů, pro zápočet potřeba 26:4 bodů Alternativa: Menší projekt zahrnující probranou látku odevzdaný do měsíce od schválení Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 13.2.2018 4 / 18
Odevzdávání úkolů Osobně na cvičení ) 4 body Emailem ) 3 body I Emailem na: radek.janostik@upol.cz I Předmět: ZP4CS - úkol č. n př.: ZP4CS - úkol č. 1 I Tělo: klidně prázdné, případně nějaké doplnění I Příloha: zip archiv celého projektu bez adresářů bin a obj (antispam), pojmenovaný vaším příjmením bez diakritiky. Př.: janostik.zip I Přijetí emailu do výše zmíněného termínu před následujícím seminářem Nedodržení tvaru předmětu, pojmenování zip archivu == neodevzdání úkolu Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 13.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# 13.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# 13.2.2018 7 / 18
Jízdní řád (1/2) 12.2.2019 Úvodní hodina, opakování, direktivy preprocesoru, konfigurace aplikace, rozhraní IComparable 19.2.2019 Práce se soubory, souborovým systémem 26.2.2019 XML, JSON 5.3.2019 Základy paralelizace vlákna 12.3.2019 LINQ 19.3.2019 Práce s databázemi SQL 26.3.2019 Entity Framework Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 13.2.2018 8 / 18
Jízdní řád (2/2) 2.4.2019 GUI, formuláře 9.4.2019 GUI kreslení 16.4.2019 ASP.MVC 23.4.2019 WebServices 30.4.2019 rezerva 7.5.2019 Zápočty, předvedení projektů, dodělávky, rezerva Změny v plánu vyhrazeny Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 13.2.2018 9 / 18
Anketa Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 13.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# 13.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: I WPF (framework pro GUI) I WWF Windows Workflow Foundation I Omezeně WCF (Windows Communication Foundation) a asynchronní ASP.NET I 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# 13.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# 13.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 Konstanta DEBUG v debug režimu Konstanty: NET20, NET35, NET40, NET45, NET451, NET452, NET46, NET461, NET462, NET47, NET471, NET472 pro verze frameworku NETSTANDARD1 0, NETSTANDARD1 1, NETSTANDARD1 2, NETSTANDARD1 3, NETSTANDARD1 4, NETSTANDARD1 5, NETSTANDARD1 6, NETSTANDARD2 0 pro verze standardu NETCOREAPP1 0, NETCOREAPP1 1, NETCOREAPP2 0, NETCOREAPP2 1, NETCOREAPP2 2 pro.net Core Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 13.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# 13.2.2018 15 / 18
Rozhraní IComparable https://msdn.microsoft.com/cs-cz/library/system.icomparable(v= vs.110).aspx public interface IComparable { int CompareTo(object obj); } CompareTo(object obj) 8 >< >: < 0 Pokud je v řazení před obj = 0 Pokud je v řazení na stejném místě > 0 Pokud je v řazení za obj Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 13.2.2018 16 / 18
Úkol (1/2) Vytvořit třídu Tuple reprezentující n-tici celých čísel a definovat na ní standardní uspořádání I Přetížit metodu ToString() I Implementovat rozhraní IComparable pro třídu Tuple Napsat QuickSort pro kolekce IComparable I Inicializovat kolekci Tuple a tu pomocí QuickSortu setřídit I Pře DEBUG režimu vypisovat zvolené pivoty Nakonec vypsat do konzole nějaký řetězec z konfigurace aplikace Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 13.2.2018 17 / 18
Úkol (2/2) Náznak volání Tuple[] tuples = {new Tuple({5, 8, 2}), new Tuple({3, 7, 9}),new Tuple({7, 5, 9})}; PrintArray(tuples); ComparableQuickSort(tuples); PrintArray(tuples); Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 13.2.2018 18 / 18