Strukturtie datu tipi Masvi Programmanas valodas Lekt M

























![Standartdarbības Apstrāde 26 masivs_1 D : array [1. . 5] of integer; l aprēķināt Standartdarbības Apstrāde 26 masivs_1 D : array [1. . 5] of integer; l aprēķināt](https://slidetodoc.com/presentation_image/088f9ba57fc60deeec3d3978ad70a380/image-26.jpg)
![Standartdarbības Apstrāde (turpinājums) 27 masivs_1 D : array [1. . 5] of integer; l Standartdarbības Apstrāde (turpinājums) 27 masivs_1 D : array [1. . 5] of integer; l](https://slidetodoc.com/presentation_image/088f9ba57fc60deeec3d3978ad70a380/image-27.jpg)








- Slides: 35
Strukturētie datu tipi - Masīvi Programmēšanas valodas Lekt. M. Lukjanska 28. 09. 2011
Strukturētie datu tipi - Masīvi Datu tipi l 2 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 28. 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 28. 09. 2011 3 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 28. 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 4 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 28. 09. 2011 5 Apraksts Iedalījums un piemēri Standartdarbības Programmēšanas valodas
Masīvi Apraksts l 6 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 28. 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 28. 09. 2011 7 Apraksts Iedalījums un piemēri Tipiskas kļūdas Standartdarbības Programmēšanas valodas
Masīvi Iedalījums 8 Iedalījums Viendimensijas N-dimensiju > 3 -dimensiju 2 -dimensiju 28. 09. 2011 Programmēšanas valodas
Masīvi - Iedalījums Viendimensijas masīvi l Apraksts: l l 28. 09. 2011 VAR <mainīgā_identifikators> : ARRAY [apakšējā_robeža. . augšējā_robeža] OF <datu_tips>; Deklarēšanas piemērs: l l masīvs, kura elementiem ir piekārtots tikai viens indekss Deklarēšanas sintakse: l l 9 VAR masiva_piemers : ARRAY [1. . 6] OF integer; Piemēri: l Vektori: (1, 3, 5) l Skaitļu virknes Programmēšanas valodas
Masīvi - Iedalījums Viendimensijas masīvu piemēri 10 Skaitļu virknes Vektori 28. 09. 2011 Programmēšanas valodas
Masīvi - Iedalījums N-dimensiju masīvi l Definīcija: l l masīvs, kura elementiem ir piekārtots vairāk nekā viens indekss Deklarēšanas sintakse: l l VAR <mainīgā_identifikators> : ARRAY [apakšējā_robeža. . augšējā_robeža, . . ] OF <datu_tips>; Deklarēšanas piemērs: l 2 -dimensiju: l l VAR 2 D_masiva_piemers : ARRAY [1. . 2, 1. . 4] OF integer; 3 -dimensiju: l 28. 09. 2011 11 VAR 3 D_masiva_piemers : ARRAY [1. . 2, 1. . 4, 1. . 3] OF integer; Programmēšanas valodas
Masīvi - Iedalījums 2 -dimensiju masīvu piemēri Matricas Grafiki Šaha galds 28. 09. 2011 12 Krustiņi un nullītes Programmēšanas valodas
Masīvi - Iedalījums 3 -dimensiju masīvu piemēri 28. 09. 2011 13 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 28. 09. 2011 14 Apraksts Iedalījums un piemēri Tipiskas kļūdas Standartdarbības Programmēšanas valodas
Masīvi Tipiskas kļūdas l nav noteikts masīva izmērs un diapazona robežas: A : ARRAY [ l 15 ] OF real; masīva apakšējā robeža lielāka par augšējo: A : ARRAY [10. . 1] OF integer; l deklarējot masīva robežas jāuzrāda ar konstantēm, nevis ar izteiksmēm: A : ARRAY [1. . x + y] OF integer; l indeksu robežas nedrīkst uzdot ar decimālskaitļiem: A : ARRAY [1. . 20. 0] OF integer; l 28. 09. 2011 izejot ārpus masīva robežām var tikt bojātas ar masīva elementiem aizņemtās atmiņas daļas blakus šūnas 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 28. 09. 2011 16 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 28. 09. 2011 17 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” l l 18 ērti ir izmantot FOR ciklu, kur cikla mainīgo izmanto kā masīva indeksu vērtību Inicializēt jeb “aizpildīt” var: masivs_1 D : array [1. . 5] of integer; l no tastatūras FOR i : = 1 TO 5 DO Readln (masivs_1 D[i]); {5 skaitlu vektors} l ar gadījuma skaitļiem l matemātiskai modelēšanai vai spēles gadījuma situāciju realizēšanai randomize; {gadijuma skaitlu deveja inicializacija} FOR i : = 1 TO 5 DO masivs_1 D[i] : = random(100); l l 28. 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 28. 09. 2011 19 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 20 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ērs: masivs_1 D : array [1. . 5] of integer; masivs_2 D : array [1. . 5, 1. . 5] of integer; l Izvade stabiņu veidā: FOR i : = 1 TO 5 DO Writeln (masivs_1 D[i]); l Izvade rindas veidā: FOR i : = 1 TO 5 DO Write (masivs_1 D[i], ' '); FOR i : = 1 TO 5 DO Write (masivs_1 D[i]: 4); 28. 09. 2011 Programmēšanas valodas
Standartdarbības Vērtību izvade (turpinājums) l 21 Matricas izvads standartformā: FOR i : = 1 TO 5 DO BEGIN FOR j : = 1 TO 5 DO Write (masivs_2 D[i, j]: 4); Writeln; END; 28. 09. 2011 Programmēšanas valodas
Standartdarbības 1. Piemērs: Deklarēšana, aizpildīšana un izvade 22 (* 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 *) 28. 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 28. 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 “nonullēšana” l 24 Var aizpildīt ar nullēm: masivs_1 D : array [1. . 5] of integer; . . . FOR i : = 1 TO 5 DO masivs_1 D[i] : = 0; 28. 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 28. 09. 2011 25 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 26 masivs_1 D : array [1. . 5] of integer; l aprēķināt elementu summu s : = 0; FOR i : = 1 TO 5 DO s : = s + masivs_1 D[i]; l aprēķināt elementu vidējo vērtību vv : = s / 5; l aprēķināt elementu reizinājumu r : = 1; FOR i : = 1 TO 5 DO r : = r * masivs_1 D[i]; 28. 09. 2011 Programmēšanas valodas
Standartdarbības Apstrāde (turpinājums) 27 masivs_1 D : array [1. . 5] of integer; l meklēt maksimālo vertību max : = masivs_1 D[1]; FOR i : = 2 TO 5 DO IF ( max < masivs_1 D[i] ) THEN max : = masivs_1 D[i]; l meklēt elementu ar noteiktu vērtību Readln (m); { meklejama vertiba } indekss : = 0; { meklejama elementa indekss } FOR i : = 1 TO 5 DO IF ( m = masivs_1 D[i] ) THEN indekss : = i; Kas notiek, ja šāds elements nav masīvā? Vai derētu to paziņot lietotājam? 28. 09. 2011 Programmēšanas valodas
Standartdarbības Apstrāde (turpinājums) l 28 nonullēt masīva galvenās diagonāles elementus FOR i : = 1 TO 5 DO masivs_2 D[i, i] : = 0; 1 2 3 4 5 28. 09. 2011 Programmēšanas valodas
Standartdarbības Apstrāde (turpinājums) l 29 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 temp : = masivs_2 D[1, 1]; masivs_2 D[1, 1] : = masivs_2 D[4, 4] : = temp 28. 09. 2011 1 2 3 4 5 Programmēšanas valodas
Standartdarbības Apstrāde - kārtošana (turpinājums) l 30 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 28. 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 31 l l l 28. 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. 28. 09. 2011 32 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 33 (* 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 *) 28. 09. 2011 Programmēšanas valodas
Standartdarbības Papildus Piemērs 2: 2 -dimensiju masīvs 34 (* 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 *) 28. 09. 2011 Programmēšanas valodas
Standartdarbības Papildus Piemērs 3: 2 -dimensiju masīvs 35 (* 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 *) 28. 09. 2011 Programmēšanas valodas