Stáhnout prezentaci
Prezentace se nahrává, počkejte prosím
ZveřejnilMatěj Ševčík
1
Úvod do programování 9. hodina RNDr. Jan Lánský, Ph.D. Katedra informatiky a matematiky Fakulta ekonomických studií Vysoká škola finanční a správní 2015
2
Jan LánskýÚvod do programování 9. hodina2 Umíme z minulé hodiny Soubory Textové (= textový režim přístupu) StreamReader, StreamWriter Binární (= binární režim přístupu) BinaryReader, BinaryWriter Syntax Čtení ze souboru a zápis do souboru Správa souborového systému Directory, File, Path, FileInfo
3
Jan LánskýÚvod do programování 9. hodina3 Cíle hodiny Syntax Dvojrozměrné pole Pole polí String.Split() Algoritmy Násobení řádku matice konstantou Prohození dvou řádků matice Součet matic Součin matic ASCII Art
4
Jan LánskýÚvod do programování 9. hodina4 Dvojrozměrné pole - Motivace Pole slouží k uchovávání hodnot, jejichž význam je podobný Jednorozměrné pole – pořadí prvků Dvojrozměrné pole – prvky lze uspořádat dle více dimenzí Prostorové a časové dimenze Vícerozměrná pole – vzácná, více dimenzí (lze je snadno odvodit z dvojrozměrných) Známe Nebudeme probírat Cíl hodiny
5
Jan LánskýÚvod do programování 9. hodina5 Dvojrozměrné pole - Využití Matice Hrací plocha pro hry Piškvorky, šachy, sudoku, miny, pexeso, … 2D PC hry: arkády, strategie, RPG, … Jednorozměrné pole použité v čase Losování sportky v různé týdny Jednorozměrné pole použití pro více osob (míst, …) Hody kostkou více hráči, Naměřené teploty v čase z více měřících stanic Jemnější granularita dimenze Naměřené teploty v daný den a čas
6
Jan LánskýÚvod do programování 9. hodina6 Dvojrozměrné pole - deklarace int[,] – Počet čárek = počet dimenzí – 1 Vytvořit prázdné new int[r1, r2] Inicializovat prvky hodnoty ve složených závorkách oddělené čárkou Nejvíce zanořený je vnitřní rozměr Neplést s polem polí: int[][] Rozměry pole 2x3 012 0174235 14187 Pole p
7
Jan LánskýÚvod do programování 9. hodina7 Dvojrozměrné pole přístup k prvkům Indexy odděleny čárkou Vnější rozměr pole Vnitřní rozměr pole Výpis pole na obrazovku Další řádek Řádek - vnější rozměr Sloupec - vnitřní rozměr
8
Jan LánskýÚvod do programování 9. hodina8 Pole: Násobilka 012345678910 000000000000 10123456789 202468 1214161820 3036912151821242730 40481216202428323640 505101520253035404550 606121824303642485460 707142128354249566370 808162432404856647280 909182736455463728190 100 2030405060708090100 Vnější rozměr pole j Vnitřní rozměr pole i
9
Jan LánskýÚvod do programování 9. hodina9 Piškvorky 6 7X 8OX 9O 10OX 11 1314151617 Vnější rozměr pole Vnitřní rozměr pole Nově vytvořené prvky pole máji hodnotu Nic, je první v deklaraci výčtového typu Zobrazena jen část hracího pole
10
Jan LánskýÚvod do programování 9. hodina10 Matice – násobení řádku konstantou Původní matice M Proměnné by neměly začínat velkými písmeny. V případě matic je značení velkými písmeny tak vžité, že je možné i pro proměnné [0,0] [0,1] [0,2] [1,0] [1,1] [1,2] [2,0] [2,1] [2,2] Obrázky matic: Wolfram Alpha, stejná syntax jako v C# V Matematice index 1,2,3 Matice M, která má vynásobený řádek 0 hodnotou 4
11
Jan LánskýÚvod do programování 9. hodina11 Matice – násobení řádku konstantou 4*26582420 170=170 408408 j = 0 1 2 4*2 = 8 4*6 = 24 4*5 = 20 Horní barva: konstanta Dolní barva: prvek matice Na vybraném řádku 0 postupně vynásobíme hodnoty všech prvků konstantou 4 Cyklus prochází sloupce vnitřní rozměr – řídí j radek = 0
12
Jan LánskýÚvod do programování 9. hodina12 Matice – prohození dvou řádků Původní matice M [0,0] [0,1] [0,2] [1,0] [1,1] [1,2] [2,0] [2,1] [2,2] Obrázky matic: Wolfram Alpha, stejná syntax jako v C# V Matematice index 1,2,3 Matice M, která má prohozené řádky 2 a 0
13
Jan LánskýÚvod do programování 9. hodina13 Matice – prohození dvou řádků 265408 170170 408265 j = 0 1 2 Cyklus prochází sloupce vnitřní rozměr – řídí j Výměna prvků A[r1, j] a A[r2, j] r1 = 0 r2 = 2
14
Jan LánskýÚvod do programování 9. hodina14 Součet matic M1 + M2 [0,0] [0,1] [0,2] [1,0] [1,1] [1,2] [2,0] [2,1] [2,2] Obrázky matic: Wolfram Alpha, stejná syntax jako v C# V Matematice index 1,2,3
15
Jan LánskýÚvod do programování 9. hodina15 Součet matic Rozměry matic si musí odpovídat. Jinak vrátíme matici 0x0 Rozměr výsledku bude jako rozměr A (tedy i B) Sčítáme prvky na stejné pozici v A i B Dva vnořené cykly: řádky pak sloupce
16
Jan LánskýÚvod do programování 9. hodina16 Součet matic 26507921314 170+235=3105 4081735711 j = 0 1 2 i= 0 1 2i= 0 1 2 i = 0 žlutá až oranžová i = 1 modrá i = 2 červená
17
Jan LánskýÚvod do programování 9. hodina17 Matice - součin M1 * M2 [0,0] [0,1] [0,2] [1,0] [1,1] [1,2] [2,0] [2,1] [2,2] Obrázky matic: Wolfram Alpha, stejná syntax jako v C# V Matematice index 1,2,3
18
Jan LánskýÚvod do programování 9. hodina18 Součin matic Počet sloupců A se musí rovnat počtu řádků B Výsledek má stejně řádků jako matice A a sloupců jako matice B Skalární součin i-tého řádku A s j-tým sloupcem B Tři vnořené cykly: 1.řádky A 2. sloupce B 3. sloupce A a řádky B Postupně přičítáme jednotlivé násobky tvořící skalární součin
19
Jan LánskýÚvod do programování 9. hodina19 Součin matic 265079176763 170*235=142844 40817388460 k = 0 1 2 j = 0 1 2 i= 0 1 2i= 0 1 2 Prvek je skalární součin řádku A a sloupce B Horní barva: řádek A Dolní barva: sloupec B vys[0,0] = 2 * 0 + 6 * 2 + 1 * 5 = 17 vys[2,2] = 4 * 9 + 0 * 5 + 8 * 3 = 60 k 0 1 2 k 0 1 2 k je řídící proměnná skalárního součinu
20
Jan LánskýÚvod do programování 9. hodina20 ASCII Art Jaký obrazec vytvoří ? Minimální ze 4 vzdáleností od okrajů Sudá – tečka Lichá - mezera
21
Jan LánskýÚvod do programování 9. hodina21 ASCII Art - Výsledek Velikost lichá Velikost sudá Jsou to čtverce co do počtu znaků
22
Jan LánskýÚvod do programování 9. hodina22 Pole polí - Motivace Dvojrozměrné pole n x m lze chápat jako pole, které obsahuje n polí délky m Pole polí – pole n x ? je pole, které obsahuje n polí (obvykle) různé délky Pole textových řetězců (každý textový řetězec je pole) Návratová hodnota funkce Directory.GetFiles Návratová hodnota funkce String.Split Znát aspoň pasivně, některé funkce je vrací
23
Jan LánskýÚvod do programování 9. hodina23 Pole polí - deklarace Pole obsahující 11 polí Naplníme částí malé násobilky Trojúhelník (naše volba), postupně zvětšujeme velikost jednotlivých polí Každé vnitřní pole je různě velké GetLength(1) Je chyba pp[i, j] je chyba int [,] je dvojrozměrné pole int [][] je pole polí
24
Jan LánskýÚvod do programování 9. hodina24 Pole polí - trojúhelník 012345678910 00 101 2024 30369 40481216 50510152025 6061218243036 707142128354249 80816243240485664 9091827364554637281 100 2030405060708090100 Vnější rozměry polí pp[i] j Vnitřní rozměr pole i
25
Jan LánskýÚvod do programování 9. hodina25 GetFiles Vrátí názvy souborů v zadaném adresáři Jen název souboru bez cesty 0123456789101112 0H8.exe 1H8.pdb 2H8.vshost.exe Vnitřní rozměr pole i Vnější rozměry polí ss[i] Délky řetězců j
26
Jan LánskýÚvod do programování 9. hodina26 Split Absolutní cesta k aktuálnímu adresáří Řetězec rozdělíme na řetězce podle zadaného oddělovače (u nás lomítko odděluje adresáře). Dostaneme pole adresářů, které se nacházejí v cestě od kořene k aktuálnímu adresáři 0123456 0Upg 1hodina9 2split 3bin 4debug Vnitřní rozměr pole i Vnější rozměry polí ss[i] Délky řetězců j
27
Jan LánskýÚvod do programování 9. hodina27 Zpětná vazba Objevili jste ve slajdech chyby? Včetně pravopisných Nechápete nějaký slajd? Je příliš obtížný, nesrozumitelný? Máte nějaký nápad na vylepšení? Anonymní formulář Odeslání za pár vteřin http://goo.gl/forms/WxkZqBsZLs
Podobné prezentace
© 2024 SlidePlayer.cz Inc.
All rights reserved.