Strukturtie datu tipi Masvi Programmanas valodas Lekt M

  • Slides: 35
Download presentation
Strukturētie datu tipi - Masīvi Programmēšanas valodas Lekt. M. Lukjanska 28. 09. 2011

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

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

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?

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

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

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

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

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>

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

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

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

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

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

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

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

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”

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

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”

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

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

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

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”

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.

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”

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

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

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 : =

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

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

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 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.

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,

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

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

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