Strukturtie datu tipi Masvi Programmanas valodas Lekt M
- Slides: 41
Strukturētie datu tipi - Masīvi Programmēšanas valodas Lekt. M. Lukjanska 27. 09. 2011
Strukturētie datu tipi - Masīvi Darbības – sazarojuma operatori l 27. 09. 2011 2 Atcerēsimies! Programmēšanas valodas
Strukturētie datu tipi - Masīvi Sprints! 3 10 minūtes – 2 jautājumi – 4 -5 apakšpunkti 27. 09. 2011 Programmēšanas valodas
Strukturētie datu tipi - Masīvi Datu tipi l 4 Atcerēsimies! l Programmēšanas valodas semantikas uzdošana Skaitliskie Datu apraksta pamatlīdzekļi jeb Datu tipi Vienkāršie datu tipi Reālais Loģiskais Uzskaitāmie Simbolu Lietotāja Strukturētie datu tipi 27. 09. 2011 Veselais Masīvi, Ieraksti, Faili Programmēšanas valodas
Strukturētie datu tipi - Masīvi Kopsavilkums l l Kas ir strukturētie datu tipi un kāpēc tie vajadzīgi? Masīvi l l 27. 09. 2011 5 Apraksts Iedalījums un piemēri Tipiskas kļūdas Standartdarbības Programmēšanas valodas
Strukturētie datu tipi - Masīvi Kas ir strukturētie datu tipi un kāpēc tie vajadzīgi? l Problēma: l l l liela apjoma datu apstrādei paredzēti mainīgie vienlaikus var saturēt vairākas vērtības tam ir viens nosaukums jeb identifikators sadalīti mazākās vienībās, kas katra satur savu vērtību Veidi: l l l 27. 09. 2011 Iedomājieties, ka Jums būtu jāielasa 1000 veselie skaitļi, kas jāapstrādā, Kā Jūs tos noglabātu? Kā Jūs tos ielasītu? Apraksts: l l 6 Masīvi Ieraksti Faili Programmēšanas valodas
Strukturētie datu tipi - Masīvi Kopsavilkums l l Kas ir strukturētie datu tipi un kāpēc tie vajadzīgi? Masīvi l l l 27. 09. 2011 7 Apraksts Iedalījums un piemēri Standartdarbības Programmēšanas valodas
Masīvi Apraksts l 8 Definīcija: l galīga skaita (izmēra, ranga) l viena datu tipa elementu kopums, kur l katrā elementā var ierakstīt kādu vērtību l katram elementam ir savs kārtas numurs jeb indekss § l l 27. 09. 2011 char K 3 vārds O 2 K S 1 4 indekss – parasti vesels skaitlis, kas nosaka kādas datu vienības vietu attiecībā pret citu vienību un kuram ir identifikators Svarīgi: l elementi sakārtoti indeksu augošā secībā l indeksus var uzdot arī kā izteiksmes l datora atmiņā viena masīva elementi parasti aizņem vienu nepārtrauktu atmiņas apgabalu l katru masīva elementu ir jāapstrādā atsevišķi Programmēšanas valodas
Strukturētie datu tipi - Masīvi Kopsavilkums l l Kas ir strukturētie datu tipi un kāpēc tie vajadzīgi? Masīvi l l 27. 09. 2011 9 Apraksts Iedalījums un piemēri Tipiskas kļūdas Standartdarbības Programmēšanas valodas
Masīvi Iedalījums 10 Iedalījums Viendimensijas N-dimensiju > 3 -dimensiju 2 -dimensiju 27. 09. 2011 Programmēšanas valodas
Masīvi - Iedalījums Viendimensijas masīvi l 11 Apraksts: l masīvs, kura elementiem ir piekārtots tikai viens indekss Pascal C Deklarēšanas sintakse: VAR <mainīgā_identifikators> : ARRAY [apakšējā_robeža. . augšējā_robeža] OF <datu_tips>; <datu tips> <mainīgā_identifikators> [izmērs]; Piemērs: VAR masiva_piemers : ARRAY [1. . 6] OF integer; int masiva_piemers [6]; indeksi sākas ar 0!!!! 27. 09. 2011 Programmēšanas valodas
Masīvi - Iedalījums Viendimensijas masīvu piemēri 12 Skaitļu virknes Vektori 27. 09. 2011 Programmēšanas valodas
Masīvi - Iedalījums N-dimensiju masīvi l 13 Definīcija: l masīvs, kura elementiem ir piekārtots vairāk nekā viens indekss Pascal C Deklarēšanas sintakse: VAR <mainīgā_identifikators> : ARRAY [apakšējā_robeža. . augšējā_robeža, . . ] OF <datu_tips>; <datu tips> <mainīgā_identifikators> izmērs] [2 D izmērs [. . ]; Piemērs: VAR 2 D_masiva_piemers : ARRAY [1. . 2, 1. . 4] OF integer; int 2 D_masiva_piemers [2] [4]; VAR 3 D_masiva_piemers : ARRAY [1. . 2, 1. . 4, 1. . 3] OF integer; 27. 09. 2011 [1 D int 3 D_masiva_piemers [2] [4] [3]; Programmēšanas valodas
Masīvi - Iedalījums 2 -dimensiju masīvu piemēri Matricas Grafiki Šaha galds 27. 09. 2011 14 Krustiņi un nullītes Programmēšanas valodas
Masīvi - Iedalījums 3 -dimensiju masīvu piemēri 27. 09. 2011 15 Programmēšanas valodas
Strukturētie datu tipi - Masīvi Kopsavilkums l l Kas ir strukturētie datu tipi un kāpēc tie vajadzīgi? Masīvi l l 27. 09. 2011 16 Apraksts Iedalījums un piemēri Tipiskas kļūdas Standartdarbības Programmēšanas valodas
Masīvi Tipiskas kļūdas (Pascal) l nav noteikts masīva izmērs un diapazona robežas: l l 27. 09. 2011 A : ARRAY [10. . 1] OF integer; A : ARRAY [1. . x + y] OF integer; indeksu robežas nedrīkst uzdot ar decimālskaitļiem: l l ] OF real; deklarēšanā masīva robežas jāuzrāda ar konstantēm, nevis ar izteiksmēm: l l A : ARRAY [ masīva apakšējā robeža lielāka par augšējo: l l 17 A : ARRAY [1. . 20. 0] OF integer; izejot ārpus masīva robežām var tikt bojātas ar masīva elementiem aizņemtās atmiņas daļas blakus šūnas, un arī iegūt izpildes laika kļūdas Programmēšanas valodas
Masīvi Tipiskas kļūdas (C) 18 nav noteikts masīva izmērs l l int masivs[__]; masīva izmērs un indeksu vērtības l l int masivs[10]; l indeksu vērtības ir no 0 līdz 9 -> jāņem vērā, lietojot ciklos l izejot ārpus masīva robežām var tikt bojātas ar masīva elementiem aizņemtās atmiņas daļas blakus šūnas, un arī iegūt izpildes laika kļūdas l Ja tiek izmantotas izteiksmes, tad izteiksmes mainīgajiem jāpiešķir vērtības pirms masīva deklarēšanas Nepareizi: int i, j; int masivs_1 D [ i + j ]; 27. 09. 2011 Pareizi: const int i = 5; const int j = 5; int masivs_1 D [ i + j ]; Programmēšanas valodas
Strukturētie datu tipi - Masīvi Kopsavilkums l l Kas ir strukturētie datu tipi un kāpēc tie vajadzīgi? Masīvi l l 27. 09. 2011 19 Apraksts Iedalījums un piemēri Tipiskas kļūdas Standartdarbības Programmēšanas valodas
Masīvi Standartdarbības l l Deklarēšana un vērtību inicializēšana jeb “aizpildīšana” Vērtību izvade Vērtību “nonullēšana” Apstrāde: l l l l 27. 09. 2011 20 aprēķināt elementu summu aprēķināt elementu vidējo vērtību meklēt maksimālās, minimālās vērtības meklēt elementu ar noteiktu vērtību atsevišķu masīva elementu vērtību apmaiņa kārtošana utml. Programmēšanas valodas
Standartdarbības Deklarēšana un vērtību inicializēšana jeb “aizpildīšana” 21 l ērti ir izmantot FOR ciklu, kur cikla mainīgo izmanto kā masīva indeksu vērtību l Inicializēt jeb “aizpildīt” var: l no tastatūras Pascal: masivs_1 D : array [1. . 5] of integer; . . FOR i : = 1 TO 5 DO Readln (masivs_1 D[i]); {5 skaitļu vektors} C: int masivs_1 D [5]; . . for ( i = 0 ; i < 5; i++) scanf("%d" , &masivs_1 D[i]); 27. 09. 2011 Programmēšanas valodas
Standartdarbības Deklarēšana un vērtību inicializēšana jeb “aizpildīšana” (turpinājums) l 22 ar gadījuma skaitļiem l matemātiskai modelēšanai vai spēles gadījuma situāciju realizēšanai Pascal: masivs_1 D : array [1. . 5] of integer; . . randomize; {gadijuma skaitlu deveja inicializacija} FOR i : = 1 TO 5 DO masivs_1 D[i] : = random(100); C: int masivs_1 D[5]; . . srand ( time(NULL) ); for ( i = 0 ; i < 5; i++) masivs_1 D[i] = rand()%100; l l 27. 09. 2011 ar piešķires operatoru nolasot vērtības no faila Programmēšanas valodas
Masīvi Standartdarbības l l Deklarēšana un vērtību inicializēšana jeb “aizpildīšana” Vērtību izvade Vērtību “nonullēšana” Apstrāde: l l l l 27. 09. 2011 23 aprēķināt elementu summu aprēķināt elementu vidējo vērtību meklēt maksimālās, minimālās vērtības meklēt elementu ar noteiktu vērtību atsevišķu masīva elementu vērtību apmaiņa kārtošana utml. Programmēšanas valodas
Standartdarbības Vērtību izvade l l 24 Tāpat kā “aizpildīšanas” gadījumā - ērti ir izmantot FOR ciklu, kur cikla mainīgo izmanto kā masīva indeksu vērtību Piemēri: l Izvade stabiņu veidā: Pascal: masivs_1 D : array [1. . 5] of integer; . . FOR i : = 1 TO 5 DO Writeln (masivs_1 D[i]); C: int masivs_1 D [5]; . . for ( i = 0; i < 5; i++ ) printf("%dn", masivs_1 D[i]); l Izvade rindas veidā: Pascal: masivs_1 D : array [1. . 5] of integer; . . FOR i : = 1 TO 5 DO Write (masivs_1 D[i], ' '); FOR i : = 1 TO 5 DO Write (masivs_1 D[i]: 4); C: int masivs_1 D [5]; . . for ( i = 0; i < 5; i++ ) printf("%d ", masivs_1 D[i]); for ( i = 0; i < 5; i++ ) printf("%4 d ", masivs_1 D[i]); 27. 09. 2011 Programmēšanas valodas
Standartdarbības Vērtību izvade (turpinājums) l 25 Matricas izvads standartformā: Pascal: masivs_2 D : array [1. . 5, 1. . 5] of integer; . . FOR i : = 1 TO 5 DO BEGIN FOR j : = 1 TO 5 DO Write (masivs_2 D[i, j]: 4); Writeln; END; C: int masivs_2 D [5][5]; . . for ( i = 0; i < 5; i++ ) { for ( j = 0; j < 5; j++ ) printf("%4 d", masivs_2 D[i][j]); printf("n"); } 27. 09. 2011 Programmēšanas valodas
Standartdarbības 1. Piemērs: Deklarēšana, aizpildīšana un izvade (Pascal) 26 (* Piemers masivu deklaresanai, aizpildisanai un izvadei *) PROGRAM L 5_P 1_Deklaresana_aizpildisana_izvade; VAR (* Masivu un mainigo deklaresana *) i, j : integer; masivs_1 D : array [1. . 5] of integer; masivs_2 D : array [1. . 5, 1. . 5] of integer; BEGIN (* Pamatbloks *) FOR i : = 1 TO 5 DO (* Masiva elementu inicializesana *) masivs_1 D [i] : = i; FOR i : = 1 TO 5 DO FOR j : = 1 TO 5 DO masivs_2 D[i, j] : = i + j; (* Masiva elementu izvadisana *) FOR i : = 1 TO 5 DO Writeln (masivs_1 D[i]); Writeln; FOR i : = 1 TO 5 DO Write (masivs_1 D[i], ' '); Writeln; FOR i : = 1 TO 5 DO Write (masivs_1 D[i]: 4); Writeln; FOR i : = 1 TO 5 DO BEGIN FOR j : = 1 TO 5 DO Write (masivs_2 D[i, j]: 4); Writeln; END; Readln; (* Gaida lietotaja ievadu *) END. (* Pamatbloks *) 27. 09. 2011 Programmēšanas valodas
Standartdarbības 1. Piemērs: Deklarēšana, aizpildīšana un izvade (C) /* 5. Programma ‘Pieskires, Izvades, Ievades operatori’ */ 27 /* Masiva elementu izvadisana */ for ( i = 0; i < 5; i++ ) printf("%dn", masivs_1 D[i]); printf("n"); #include <stdio. h> main() { /* Mainigo deklaresana un inicializesana */ for ( i = 0; i < 5; i++ ) printf("%d ", masivs_1 D[i]); printf("nn"); int i, j; int masivs_1 D [5]; int masivs_2 D [5][5]; for ( i = 0; i < 5; i++ ) printf("%4 d", masivs_1 D[i]); printf("nn"); /* Masiva elementu inicializesana */ for ( i = 0; i < 5; i++ ) masivs_1 D [i] = i + 1; for ( i = 0; i < 5; i++ ) { for ( j = 0; j < 5; j++ ) printf("%4 d", masivs_2 D[i][j]); printf("n"); } for ( i = 0; i < 5; i++ ) for ( j = 0; j < 5; j++ ) masivs_2 D[i][j] = i + 1 + j + 1; getch(); } 27. 09. 2011 Programmēšanas valodas
Masīvi Standartdarbības l l Deklarēšana un vērtību inicializēšana jeb “aizpildīšana” Vērtību izvade Vērtību “nonullēšana” Apstrāde: l l l l 27. 09. 2011 28 aprēķināt elementu summu aprēķināt elementu vidējo vērtību meklēt maksimālās, minimālās vērtības meklēt elementu ar noteiktu vērtību atsevišķu masīva elementu vērtību apmaiņa kārtošana utml. Programmēšanas valodas
Standartdarbības Vērtību notīrīšana l 29 Var aizpildīt ar nullēm: Pascal: masivs_1 D : array [1. . 5] of integer; . . . FOR i : = 1 TO 5 DO masivs_1 D[i] : = 0; C: int masivs_1 D [5]; . . for ( i = 0; i < 5; i++ ) masivs_1 D[i] = 0; 27. 09. 2011 Programmēšanas valodas
Masīvi Standartdarbības l l Deklarēšana un vērtību inicializēšana jeb “aizpildīšana” Vērtību izvade Vērtību “nonullēšana” Apstrāde: l l l l 27. 09. 2011 30 aprēķināt elementu summu aprēķināt elementu vidējo vērtību utml. meklēt maksimālās, minimālās vērtības meklēt elementu ar noteiktu vērtību atsevišķu masīva elementu vērtību apmaiņa kārtošana utml. Programmēšanas valodas
Standartdarbības Apstrāde l 31 aprēķināt elementu summu Pascal: masivs_1 D : array [1. . 5] of integer; s : = 0; FOR i : = 1 TO 5 DO s : = s + masivs_1 D[i]; C: int masivs_1 D [5]; int s = 0; . . for ( i = 0; i < 5; i++ ) s = s + masivs_1 D[i]; l aprēķināt elementu vidējo vērtību Pascal: vv : = s / i; l C: vv = s / i; aprēķināt elementu reizinājumu Pascal: r : = 1; FOR i : = 1 TO 5 DO r : = r * masivs_1 D[i]; C: int masivs_1 D [5]; int r = 1; . . for ( i = 0; i < 5; i++ ) r = r * masivs_1 D[i]; 27. 09. 2011 Programmēšanas valodas
Standartdarbības Apstrāde (turpinājums) l 32 meklēt maksimālo vertību Pascal: masivs_1 D : array [1. . 5] of integer; . . max : = masivs_1 D[1]; FOR i : = 2 TO 5 DO IF ( max < masivs_1 D[i] ) THEN max : = masivs_1 D[i]; C: int masivs_1 D [5]; int max = masivs_1 D [0]; . . for ( i = 1; i < 5; i++ ) if ( max < masivs_1 D [i] ) max = masivs_1 D [i]; 27. 09. 2011 Programmēšanas valodas
Standartdarbības Apstrāde (turpinājums) l 33 meklēt elementu ar noteiktu vērtību Pascal: masivs_1 D : array [1. . 5] of integer; . . Readln (m); { meklejama vertiba } indekss : = 0; { meklejama elementa indekss } FOR i : = 1 TO 5 DO IF ( m = masivs_1 D[i] ) THEN indekss : = i; C: int masivs_1 D [5]; scanf("%d", &m); int indekss = 0; . . for ( i = 0; i < 5; i++ ) if ( m == masivs_1 D [i] ) indekss = i; Kas notiek, ja šāds elements nav masīvā? Vai derētu to paziņot lietotājam? 27. 09. 2011 Programmēšanas valodas
Standartdarbības Apstrāde (turpinājums) l 34 nonullēt masīva galvenās diagonāles elementus Pascal: FOR i : = 1 TO 5 DO masivs_2 D[i, i] : = 0; 1 2 C: for ( i = 0; i < 5; i++ ) masivs_2 D[i][i] = 0; 3 4 5 1 2 3 4 5 27. 09. 2011 Programmēšanas valodas
Standartdarbības Apstrāde (turpinājums) l 35 atsevišķu elementu vērtību apmaiņa l elementu vērtības nemainās, bet mainās to vietas masivs_2 D[1, 1] : = masivs_2 D[4, 4]? l jālieto papildus mainīgais (apmaiņas buferis), kurā uz laiku saglabā kādu no elementa vērtībām Pascal: temp : = masivs_2 D[1, 1]; masivs_2 D[1, 1]: =masivs_2 D[4, 4] C: temp = masivs_2 D[1][1] = masivs_2 D[4][4] masivs_2 D[4, 4] : = temp masivs_2 D[4][4] = temp; temp 27. 09. 2011 1 2 3 4 5 Programmēšanas valodas
Standartdarbības Apstrāde - kārtošana (turpinājums) l 36 Kārtošanas process l viena datu tipa kopuma sakārtošanas process augošā vai dilstošā secībā atbilstoši kādai no pazīmēm l Sakārtotos masīvos informācija atrodama daudz ātrāk un ērtāk l Kārtošanai ir izstrādāti daudzi algoritmi l atšķiras pēc realizācijas ātruma l l l pazīstamākie l l 27. 09. 2011 jo lielāks datu apjoms, jo ātrāku algoritmu vajadzētu ātrums nav tik būtisks, ja datu apjoms nav pārāk liels Lineārā sakārtošanas metode Burbuļu metode Programmēšanas valodas
Strukturētie datu tipi - Masīvi 37 l l l 27. 09. 2011 Tālāk – Strukturētie datu tipi – Masīvi (Lab. d. ) Paldies par uzmanību! Jautājumi? Programmēšanas valodas
Strukturētie datu tipi - Masīvi Izmantotie resursi 1. 2. 3. 4. 5. 27. 09. 2011 38 Math. GL – library for scientific data visualization. [saite] R. Zaks, Introduction to Pascal: Including Turbo Pascal, 2 nd ed. , Sybex, 1986, p. 464. A. Balode, Programmēšanas pamati. Valoda Turbo Pascal, Zvaigzne ABC, 2009, p. 232. Programmēšanas pamati Pascal vidē, RTU Būvmehānikas katedra, Rīga, RTU, 2005 J. Bule, RTK kursa “Programmēšanas valodas" lekciju materiāli, RTK, 2010. Programmēšanas valodas
Standartdarbības Papildus Piemērs 1: Viendimensijas masīvs 39 (* Deklarēt viendimesijas masivu ar 10 elementiem, inicializet un izvadit visas vertibas *) PROGRAM L 5_PP 1_Viendimensiju_masivs; VAR (* Mainigo deklaresana *) i : integer; masivs_1 D : array [1. . 10] of integer; BEGIN (* Pamatbloks *) FOR i : = 1 TO 10 DO (* Masīva elementu inicializēšana *) masivs_1 D [i] : = i; FOR i : = 1 TO 10 DO (* Masīva elementu izvade *) Writeln ('Masiva ', i, '. elements = ', masivs_1 D[i]); Readln; (* Gaida lietotaja ievadu *) END. (* Pamatbloks *) 27. 09. 2011 Programmēšanas valodas
Standartdarbības Papildus Piemērs 2: 2 -dimensiju masīvs 40 (* Deklarēt 2 -dimesiju masivu ar 25 elementiem, inicializet un izvadit visas vertibas *) PROGRAM L 5_PP 2_Divdimensiju_masivs; VAR (* Mainigo deklaresana *) i, j : integer; masivs_2 D : array [1. . 5, 1. . 5] of integer; BEGIN (* Pamatbloks *) FOR i : = 1 TO 5 DO (* Masīva elementu inicializēšana *) FOR j : = 1 TO 5 DO masivs_2 D [i, j] : = j; FOR i : = 1 TO 5 DO (* Masīva elementu izvade *) BEGIN FOR j : = 1 TO 5 DO Write(masivs_2 D[i, j], ' '); Writeln; END; Readln; (* Gaida lietotaja ievadu *) END. (* Pamatbloks *) 27. 09. 2011 Programmēšanas valodas
Standartdarbības Papildus Piemērs 3: 2 -dimensiju masīvs 41 (* Deklarēt 2 -dimesiju masivu ar 25 elementiem, inicializet un izvadit visas vertibas *) PROGRAM L 5_PP 3_Divdimensiju_masivs; VAR (* Mainigo deklaresana *) i, j, k : integer; masivs_2 D : array [1. . 5, 1. . 5] of integer; BEGIN (* Pamatbloks *) k : = 1; FOR i : = 1 TO 5 DO (* Masīva elementu inicializēšana *) FOR j : = 1 TO 5 DO BEGIN masivs_2 D [i, j] : = k; k : = k + 1; END; FOR i : = 1 TO 5 DO (* Masīva elementu izvade *) BEGIN FOR j : = 1 TO 5 DO Write(masivs_2 D[i, j]: 2, ' '); Writeln; END; Readln; (* Gaida lietotaja ievadu *) END. (* Pamatbloks *) 27. 09. 2011 Programmēšanas valodas
- Datu tipi
- Datu tipi
- Masvi
- Daire testere risk analizi
- Valans yörüngesinde 4 ten az olan maddeler
- Uzkrātais absolūtais biežums
- Ranžēta datu rinda
- Positibong epekto ng monopolyo sa tabako
- Tradisyon ng mga tausug
- Vid publiskojamo datu bāze
- Maksud sistem kedatuan di sarawak
- Visc gov eksameni atbildes
- Publicistikas valodas stils
- Lietišķās valodas stils
- Eiropas savienības valodas
- Reizrēķina tabula līdz 100
- Rosinājuma teikumi
- Rottura equilibrio testo narrativo
- Tipi di attaccamento
- Tenten mbti
- Equazioni
- Cosa significa personaggio a tutto tondo
- 4 tipi osebnosti
- Dzen doccom
- Opyat tipi bağımlılık nedir
- Cenas tīrelis
- Fosse oceaniche
- Yazı tipi öğrenme
- Syez
- Canerhan tipi
- Horizontal ekip tipi nedir
- Schindylesis eklem tipi
- Le forme di ristorazione
- Tipi di magma
- Rime abc cba
- Metre dönüşüm tablosu
- Classificazione e proprietà della ceramica
- Tipi di amore
- Guttman ölçeği örneği
- Tipi di cambiamento
- Trochoidea tipi eklem
- Valerius cotidie cantabat