Úvod do # ERIK KUČERA INTELIGENTNÉ MECHATRONICKÉ SYSTÉMY| PREDNÁŠKA 1 Vyššie programovacie jazyky vo výpočtovej inteligencii – C#

 Programovací jazyk C#

 5 týždňov

 Moderný objektovo orientovaný jazyk

 Použiteľný v prostredí Windows, ako aj Mac OS X

 Rýchly rozvoj jazyka, čím ďalej viac žiadaný zamestnávateľmi

 V rámci Universal Windows Platform je vyvinutá aplikácia spustiteľná ako na počítači, tak aj mobilnom zariadení alebo HoloLens

 Možnosť pomocou neho programovať aj natívne aplikácie pre Android a iOS - https://www.xamarin.com/ C# na Fakulte elektrotechniky informatiky (možno neaktuálny pohľad)

 Cca v akademickom roku 2010/2011 – Modelovanie v softvérovom inžinierstve

 Bol to predmet pre doménu MASUS, ktorý vyučoval Ján Hanák z Ekonomickej univerzity

 Väčšina študentov výkladu nerozumela pre vysokú náročnosť predmetu, nakoľko základy OOP nemali študenti vžité Prečo sa učiť jazyk C# v spojení s výpočtovou inteligenciou?

• C# sa stáva čím ďalej používanejší Všeobecný • Upevnenie si princípov objektovo orientovaného programovania rozhľad • Microsoft ponúka veľa cloudových služieb pre výpočtovú inteligencie

• Podľa pracovníka Accenture patrí C# a Azure medzi najžiadanejšie skilly v pracovných Použitie ponukách v praxi • C# je podľa Xamarinu najvhodnejší jazyk pre tvorbu mobilných aplikácií Výučbové materiály

 Na web stránke predmetu v sekcii Materiály

 Momentálne jedna z najmodernejších kníh o C# je Head First C#, 3rd Edition - O'Reilly Media

 Tretie vydanie je doplnené o tvorbu GUI pomocou XAML (Windows Presentation Foundation)

 Druhé vydanie namiesto XAML obsahuje použitie staršieho spôsobu tvorby GUI –

 Existuje mnoho slovenských a českých pdf materiálov priamo od Microsoftu zadarmo Obsah predmetu

 Čomu sa budeme venovať a čo sa pravdepodobne naučíte:

 Základy jazyka C#

 Zopakovanie princípov OOP

 Menej známe pojmy v rámci OOP – partial class/method, generické triedy, anonymné triedy, lambda výrazy, await, async...

 Prehľad najmodernejších cloudových funkcionalít Microsoftu v oblasti výpočtovej inteligencie

 Komunikační boti, využitie Azure cloudových služieb pre Internet of Things

 Čomu sa nebudeme venovať:

 Návrhové vzory

 Zásady správneho programovania

 Minulý rok sa predmet volal Metódy výpočtovej inteligencie Čo je mechatronika?

 Mechatronika spája 4 oblasti:  Mechaniku  Informatiku (IKT)  Automatické riadenie  Elektronické systémy Čo je C#? ERIK KUČERA INTELIGENTNÉ MECHATRONICKÉ SYSTÉMY | PREDNÁŠKA 1 Programovací jazyk C#

 C# (vyslovované anglicky ako C Sharp, /siː šaːp/, doslova to označuje notu cis) je vysokoúrovňový objektovo orientovaný programovací jazyk vyvinutý firmou Microsoft zároveň s platformou .NET Framework, neskôr schválený štandardizačnými komisiami ECMA (ECMA-334) a ISO (ISO/IEC 23270)

 Microsoft si za základ pre nový jazyk C# zobral C++ a jazyk

 C# bol vytváraný tak, aby bol jednoduchým, moderným, objektovo orientovaným jazykom pre všeobecné použitie Programovací jazyk C#

 Jazyk a jeho implementácie by mali poskytovať podporu pre nasledovné princípy softvérového inžinierstva ako silná typová kontrola, kontrola ohraničenia polí, detekciu pokusov na využitie neinicializovaných premenných a automatickú správu pamäte

 C# je jazyk zameraný na tvorbu aplikácií pre hostované, ako aj embedded systémy s ohľadom na veľkú škálovateľnosť od veľmi veľkých systémov používajúcich sofistikované operačné systémy po veľmi malé zariadenia pre špecializované úlohy História C#

Viac o vývoji jazyka na stránke https://cs.wikipedia.org/wiki/C_Sharp C#7

https://blog.xamarin. com/getting-started- c-7/ .NET Framework

 .NET Framework (číta sa ako dot net) je softvérový framework vyvinutý Microsoftom

 Zahŕňa veľkú knižnicu tried zvanú Framework Class Library (FCL) a zabezpečuje jazykovú interoperabilitu (každý jazyk vie použiť kód napísaný v inom jazyku)

 Programy napísané pre .NET Framework sa spúšťajú v softvérovom prostredí nazvanom Common Language Runtime (CLR) – aplikačnom virtuálnom stroji, ktorý zabezpečuje služby ako bezpečnosť, správu pamäte a výnimiek (exceptions)

 V rámci projektu .NET Core sú funkcionality .NET Frameworku dostupné aj pre MacOS a Vývoj aplikácií v C# na/pre Windows ERIK KUČERA INTELIGENTNÉ MECHATRONICKÉ SYSTÉMY | PREDNÁŠKA 1 Visual Studio 2017

 Visual Studio 2017 Community Edition – ZADARMO (prihlásenie cez Microsoft konto pomocou údajov z AIS) Konzolové aplikácie

 Klasické C# konzolové aplikácie pre Windows

 Konzolové aplikácie využívajúce .NET Core (pravdepodobne prenositeľné na Linux a MacOS) Windows Forms

 Windows Forms (WinForms) je knižnica tried pre tvorbu grafického rozhrania, ktorý je súčasťou .NET frameworku

 Poskytuje platformu pre vytváranie aplikácií pre počítače a tablet PC

 Významnejšie sa používala do roku cca 2012

 Nedbá na obrazovky s vysokým rozlíšením Windows Presentation Foundation (WPF)

 Nástupca Windows Forms, má oproti nim mnoho výhod

 Windows Presentation Foundation (WPF, predtým Avalon) je knižnicia tried v .NET Frameworku od verzie 3.0 pre tvorbu GUI

 Bol súčasťou už Windows Vista, napriek tomu sa stále hojne používalo Windows Forms

 Pre tvorbu „užívateľsky bohatého rozhrania“ (RUI) využíva značkovací jazyk XAML, ktorý umožňuje oddeliť funkčnosť a vzhľad aplikácie

 Všetka grafika (vrátane samotných WPF okien) funguje pomocou knižníc Direct3D Windows Presentation Foundation (WPF) Universal Windows Platform (UWP) Windows Store applications

 Universal Windows Platform (UWP) je „platform-homogeneous“ architektúra pre aplikácie vytvorená Microsoftom a prvýkrát predstavená vo Windows 10

 Cieľom tejto softvérovej platformy je pomôcť vývojárom vytvárať univerzálne aplikácie pre počítač, mobilné zariadenia a ďalšie

 Pre dizajn aplikácii sa využíva XAML Universal Windows Platform - video Xamarin

 Možnosť vyvíjania Xamarin aplikácií aj pod Windows

 Viac info v sekcii MacOS SharpDevelop

 Open-source alternatíva k

 Nainštalované v učebniach

 Podpora jazykov C#, .NET, Boo, F#, IronPython a IronRuby

 Podpora Windows Forms, Windows Presentation Foundation (WPF),

 Posledná verzia: 5.1.0 / 14 April 2016 Vývoj aplikácií v C# na/pre MacOS a iOS ERIK KUČERA INTELIGENTNÉ MECHATRONICKÉ SYSTÉMY | PREDNÁŠKA 1 Vývojárske prostredia pre Mac

 Visual Studio for Mac – odporúčané, rebrandované Xamarin Studio

– ide v podstate len o editor kódu, podobné ako napr. Sublime

 Xamarin Studio - deprecated

 MonoDevelop Konzolové aplikácie

 Konzolové aplikácie využívajúce .NET Core

 Možné spustiť cez príkazový riadok alebo IDE Visual Studio for Mac Xamarin

 Xamarin je softvérová spoločnosť vlastnená Microsoftom (ku kúpe došlo relatívne nedávno – február 2016), založená v máji 2011 inžiniermi, ktorí vytvorili , Mono for Android a MonoTouch, čo sú cross-platformové implementácie Common Language Infrastructure (CLI) a Common Language Specifications (zvané tiež Microsoft .NET)

 Vývojári môžu použiť nástroje Xamarinu na vývoj natívnych Android, iOS a Windows aplikácií s natívnym používateľským prostredím a zdieľať zdrojový kód naprieč týmito platformami Xamarin Xamarin.iOS Xamarin.Android Xamarin.Mac Xamarin.Forms Xamarin.Forms Xamarin.Forms Xamarin.Forms vs Xamarin.iOS/Android Xamarin.Forms Xamarin.Forms Xamarin.Forms - video MonoDevelop a GTK#

 Inou možnosťou ako vyvíjať C# aplikácie s GUI pre MacOS je využitie IDE MonoDevelop

 Mono je open source implementácia .NET Frameworku

 GUI sa vyvíja pomocou GTK#

 http://www.monodevelop.com/

 http://www.mono-project.com/ Vývoj aplikácií v C# na/pre Linux ERIK KUČERA INTELIGENTNÉ MECHATRONICKÉ SYSTÉMY | PREDNÁŠKA 1 Konzolové aplikácie

 Konzolové aplikácie využívajúce .NET Core

 Možné spustiť cez príkazový riadok alebo Visual Studio Code MonoDevelop a GTK#

 Pravdepodobne jedinou možnosťou ako vyvíjať C# aplikácie s GUI pre Linux je využitie IDE MonoDevelop

 Mono je open source implementácia .NET Frameworku

 GUI sa vyvíja pomocou GTK#

 http://www.monodevelop.com/

 http://www.mono-project.com/ MonoDevelop na Linuxe - video Xamarin.Forms ERIK KUČERA INTELIGENTNÉ MECHATRONICKÉ SYSTÉMY | PREDNÁŠKA 1 Skrátené video – link na celé / skrátené Použité zdroje

 http://wikipedia.org

 https://www.xamarin.com

 https://www.microsoft.com/ Jazyk Python ERIK KUČERA INTELIGENTNÉ MECHATRONICKÉ SYSTÉMY| PREDNÁŠKA 1 Programovací jazyk Python

 Vysokoúrovňový interpretovaný programovací jazyk pre všeobecné použitie

 Tvorca – Guido van Rossun – v roku 1991

 Založený na jednoduchej čitateľnosti kódu – namiesto zátvoriek { } povinné odsadzovanie kódu – zvyšuje sa prehľadnosť kódu

 Bloky v programe sa určujú odsadením (Tab alebo 4 medzery)

 Podporuje dynamické typovanie, automatickú správu pamäte, rôzne programovacie paradigmy (objektovo-orientované, imperatívne, funkcionálne a procedurálne programovanie)

 Poskytuje rozsiahlu a zrozumiteľnú štandardnú knižnicu Python ako jazyk pre výučbu

 Python búra zažitú predstavu, že jazyk vhodný pre výučbu programovania pre začiatočníkov je zároveň nevhodný pre prax (Pascal)

 Mnoho stredných škôl experimentuje s výučbou Pythonu Rýchlosť Pythonu

 Python je z hľadiska výkonu pomalý jazyk, avšak vývoj v ňom je vďaka jednoduchej syntaxi a mnoho knižniciam veľmi rýchly

 Nižšie vidíme príklad, koľko hodín trvalo napísanie programu pre spracovanie textových reťazcov v jednotlivých jazykoch Na čo je dobrý Python? – link Flexibilita

 Python omnoho viac odpúšťa chyby, takže budete môcť zostaviť a spustiť program, kým nedosiahnete problémovú časť

 Možnosť spúšťať kód „po riadkoch“ (keďže je interpretovaný) napr. ako v Matlabe

 Ako dynamicky napísaný jazyk je Python pomalý, pretože je príliš flexibilný a stroj by musel robiť veľa odkazov, aby sa uistil, čo je definícia niečoho, čo spomaľuje výkon Pythonu

 Existujú alternatívy, ako napríklad PyPy, ktoré sú rýchlejšie implementácie Pythonu Využitie a komunita

 Python má na StackOverflow viac ako 86K sledovatelov a cez 500K otázok týkajúcich sa Pythonu

 Štatisticky sú Pythonové otázky 3. najodpovedanejšie

 Na Angelovom výpise je Python 2. najžiadanejšou zručnosťou a tiež zručnosť s najvyšším priemerným platom

 S nárastom Big Data sú vývojári spoločnosti Python v úlohe data scientist, a to najmä preto, že Python je ľahko integrovaný do webových aplikácií na vykonávanie úloh, ktoré vyžadujú strojové učenie Budúcnosť Pythonu

 Podľa indexu TIOBE je Python štvrtým najpopulárnejším programovacím jazykom zo 100

 So vzostupom Ruby on Rails a nedávno Node.js, používanie Pythonu ako hlavného prototypového jazyka pre backendový vývoj webových stránok sa trochu zmenšilo, hlavne preto, že má fragmentovaný ekosystém MVC

 S nástupom Big Data, ktoré sa stávajú čoraz dôležitejšími, sa Python stal zručnosťou, ktorá je viac žiadaná ako kedykoľvek predtým, najmä preto, že sa dá integrovať do webových aplikácií

Zen Pythonu – základná filozofia jazyka Inštalácia a IDE ERIK KUČERA INTELIGENTNÉ MECHATRONICKÉ SYSTÉMY| PREDNÁŠKA 1 Inštalácia Pythonu

 V Linuxe by mal mať zväčša súčasťou systému

 Windows – 1. variant

 Inštalácia Pythonu z oficiálnej web stránky

 Použitie IDE podľa vlastného výberu

 Inštalácia balíčkov pomocou príkazu pip cez príkazový riadok

 Windows – 2. variant

 Inštalácia distribúcie Anaconda, ktorá zjednodušuje manažment Pythonu

 Použitie IDE podľa vlastného výberu alebo poskytnuté Anacondou

 Inštalácia balíčkov pomocou príkazu conda cez príkazový riadok Anacondy

 Pri Anaconde sa môžu objaviť problémy so spustením => reinštalácia Windowsu alebo variant 1

Python IDLE

 Python IDLE je základným IDE pre Python

 Nainštaluje sa rovno so základným balíčkom Python

 Obsahuje podobný command line ako v Matlabe a tiež editor skriptov PyCharm

 Je vývojové prostredie od spoločnosti Jet Brains, ktorá poskytuje vývojové prostredia aj pre mnohé ďalšie programovacie jazyky

 Je platené, ale existuje EDU verzia

 Obsahuje automatické doplňovanie kódu

 Má zabudovanú konzolu ako aj množstvo príkladov pre začiatočníkov v jazyku Python

 Obľúbené u softvérových inžinierov Jupyter Notebook

 Funguje v internetovom prehliadači

 Dodáva sa priamo s distribúciou Anaconda

 Dodáva sa priamo s distribúciou Anaconda

 Obľúbený vo vedeckej komunite => niekomu môže pripomínať prostredie Matlabu Programovanie v Pythone ERIK KUČERA INTELIGENTNÉ MECHATRONICKÉ SYSTÉMY| PREDNÁŠKA 1 Hello World Konzolová kalkulačka Porovnávacie operátory, true/false Podmienky Cyklus While Cyklus for Cyklus for a funkcia range() Zoznamy - list

 Zoznam sa vytvára pomocou hranatých zátvoriek a jednotlivé prvky v ňom oddelíme čiarkou

 Zoznam (list) môžeme vytvoriť aj funkciou range() z predošlého slajdu

 V Pythone funguje aj záporné indexovanie – posledný prvok má index -1 Orezávanie zoznamov

 Jednotlivé argumenty určujúce, čo chceme vybrať, môžeme aj vynechať

 Môžeme teda napísať [::2] , čo nám vyberie každý druhý prvok zoznamu

 K zoznamom existuje mnoho užitočných funkcií Reťazce Dvojrozmerné pole Knižnice

 Knižnice pred použitím treba nainštalovať pomocou príkazového riadku pomocou príkazu pip alebo conda Tvorba GUI

 V jazyku Python máme k dispozícii viaceré knižnice, pričom najpoužívanejšie sú Tk (Tkinter), Gtk, a wxWidgets

 Tkiner je základný grafický modul jazyka Python, ktorý je dodávaný pri inštalácii

 Je dostupný všade, kde je Python nainštalovaný a funguje rovnako na všetkých operačných systémoch

 Tento modul je súčasťou všetkých verzií Pythonu

 Medzi jednu z nevýhod tohto modulu patrí nedostatočná dokumentácia (?) Vizualizácia údajov v Pythone ERIK KUČERA INTELIGENTNÉ MECHATRONICKÉ SYSTÉMY| PREDNÁŠKA 1

 Matplotlib je Python balíček, zameraný na vytváranie kvalitných grafov v rôznych formátoch

 Dokáže generovať grafy, histogramy, stĺpcové grafy, chybové grafy, rozptylové grafy - to všetko len s pár riadkami zdrojového kódu

 Okrem vytvárania grafov, matplotlib prichádza so súborom základných nastavení, umožňujú upravovať rôzne parametre

 Vďaka tomu môžeme meniť základ skoro každej vlastnosti grafu ako hrúbka čiary, farba, štýl, atď. Matplotlib Porovnanie Matlabu a Pythonu Porovnanie Matlabu a Pythonu Použité zdroje

 Wikipedia

 Oficiálna web stránky Python

 Jakub Huňady, František Rajnič, Michal Slezák - Výpočtová inteligencia v Pythone

 Juraj Pap

 http://udemy.com

 http://www.gymzv.sk/~rolik.jakob/moja/languages/python.

 https://www.itnetwork.cz/