Reja Massiv tiplarini ifodalash Massivlar ustida ishlash Massiv elementlari ustida ishlash Massiv tiplarini ifodalash


Download 20.43 Kb.
Sana07.12.2019
Hajmi20.43 Kb.

Massivlar. Bir o'lchamli massivlar.


Reja

1. Massiv tiplarini ifodalash

2. Massivlar ustida ishlash

3. Massiv elementlari ustida ishlash




Massiv tiplarini ifodalash.

Massiv, massiv elementlari, massivlarni ifodalash, bir ulchovli massiv, kup ulchovli massiv.

Umumiy nomga ega bulgan bir xil Ko’rinishda tartiblangan elementlar ketma-ketligi massiv deb ataladi. Massiv uzgaruvchilari ularning komponentlari deb ataladi. Komponenta tipi - baza tipi xisoblanadi. Xar bir tip uzining indeksi va nomiga ega, ular kavs ichida keltiriladi.

Massiv elementlari ixtiyeriy tipda, xattoki ma’lumotlar xam bulishi mumkin.Massiv elementlarining tiplari bazali deyiladi.Massiv elementlarining soni programma ishlash jarayenida unga uzlashtirib boriladi. Uning xar bir aloxida elementiga murojaat massiv elementlarigva mos kelgan indeks buyicha buladi.Massiv indeksi xuddi vektorlar indeksi tushunchasi kabi buladi. Massivlarni e’lon kilish uchun Array of (massivdan) suz birligi ishlatiladi.

Yozilishi:


TYPE

= array[ indeks tipi ] of < komponenta tipi >;

VAR

: < tip nomi>;

Massivlar tiplarni e’lon kilmasadan xam kullash mumkin::

VAR

: array[indeks tipi] of < komponenta tipi>;



Misol.

TYPE


Klass = (K1, K2, K3, K4);

Znak = array[1..255] of char;

VAR

M1: Znak; { Znak tipi tiplar bulimida oldindan keltirilgan }

M2: array[1..60] of integer; { M2 massivining yozilishi}

M3: array[1..4] of Klass;

Mas:array[1..4] of integer;

Massivning baza tipi xar qanday tip bulishi mumkinligi sababliu boshqa massiv

xam bulishi mumkin. Natijada, kup ulchamli massiv xosil buladi.

Masalan.


TYPE

Vector = array[1..4] of integer;

Massiv = array[1..4] of Vector;

VAR


Matr : Massiv;

Xuddi shu strukturani boshqa turdagi yozuvni kullash natijasida xam xosil kilish mumkin:

VAR

Matr : array[1..4,1..4] of integer;

Shu xildagi yozilishdagi massivlarda bitta indeks katnashsa, bu massiv bir ulchovli, ikkita indeks bulsa, ikki ulchovli, n indeks bulsa, n ulchovli massivlar deyiladi. Bir ulchovli massivlar vektorlarini ikki ulchovli massivlar matritsalarini ifodalashda ishlatiladi.

Misol.


VAR

VectorZ: array[1..40] of real; { 40 elementdan tashkil topgan 1 ulchovli massiv }

MatrU : array[1..8,1..8] of byte; { 8x8 elementdan tashkil topgan 2 ulchovli massiv }

Trilf : array[1..4,1..5,1..8] of integer; { Uch ulchovli massiv }


Massivlar bilan ishlashda konstantalar xam ishlatilishi mumkin.

CONST

G1 = 4; G2 = 6;

VAR

MasY : array[1..G1,1..G2] of real;

Massiv elementlari xotirada ketma-ket joylashadi. Indekslari kichkina bulgan elementlar xotiraning pastki adreslarida saklanadi. Kup elementli massivlarda eng ung tarafdagi indeks birinchi bulib usib boradi. Masalan; Agarda


A : array[1..5,1..5] of integer; bulsa u xolda massiv elementlari adreslarning usishi buyicha joylashadi:

A[1,1]

A[1,2]


...

A[1,5]


A[2,1]

A[2,2]
Matritsalar ustida amallar


Massivlarni bir butun xolatda ishlatilgan paytda massiv nomlaridagi indekslaridagi kvadrat kavsga olinmay ishlatiladi. Massivlar kiritish operatorlarida “teng” yoki “teng emas” opearsiyalarida ishlatilishi mumkin.

Bu amallarda ishlatiladigan massivlar bir xil tipdagi indeks va komponentalarga ega bulib, strukturasi bir-biriga uxshash bulishi kerak.

Masalan: A va B massivlari Var A, B : array[1..20] of real; Ko’rinishida ifodalangan bulsa, unda natija kuyidagicha buladi:


Ifoda

Natija

A = B


A <> V

A := V

True, agarda A massivining elementlarining kiymatlari V massiv elementining kiymatlariga mos ravishda teng bulsa.

True, Agarda A massiv elementining biron bir kiymati V massiv elementining kiymatlariga mos raviщda teng bulmasa.


V massiv elementining xamma kiymatlari A massiv elementlari tomonidan uzlashtirilsa V massiv elementlarining kiymatlari uzgarmasdan koladi.



Massiv elementlari ustida amallar

Massiv elementlarini indeksatsiyalash, massivlardan nusxa olish

Massivni e’lon kilingandan keyin uni elementlarini nomlari kvadrat kavs ichida ko’rsatilgan xolda ishlatish mumkin.Masalan: Mas[2], VectorZ[10] massivning ikkinchi va uninchi elementlariga murojaat etishni bildiradi.

Ikki ulchovli massivlarda ikkita indeks, n ulchovlilarda esa n ta indeks ko’rsatiladi.

Masalan, MatrU[4,4] bu yozuv Matr U massivining 4 ta kator 4 ta ustunidagi elementini bildiradi. Array tipidagi kiymatlar bilan ishlashda kuyidagi xolatlar bulishi mumkin:

VAR

A,D : array[1..4] of real;



B : array[1..10,1..15] of integer;

I,J : integer; K : integer; S: real;

Bu operatsiyani FOR operatori yordamida xam bajarish mumkin:

FOR I := 1 TO 4 DO A[I] := 0;

Ikki ulchovli massivlarga indeks kuyish uchun ichma-ich joylashgan operatorlar ishlatiladi:
FOR I := 1 TO 10 DO

FOR J := 1 TO 15 DO

B[I,J] := 0;

Paskal algloritmik tilida massiv elementlarini birdaniga kiritish - chiqarish imkoniyati yukligi sababli elementlar bittadan kiritiladi.

Massiv elementiga kiymatni uzlashtirish operatori yordamida beriladi,initsalizatsiya misolda ko’rsatilgandek,lekin kup xollarda READ yoki READLN operatori yordamida uzlashtiriladi va sikl operatoridan foydalanamiz.

FOR I:=1 TO 10 DO


FOR J:=1 TO 15 DO


READLEN(D[I,J];
WRITELN operatori ishlatilishi sababli xar bir kiymat yangi katordan kiritiladi. Aloxida elementlarni kiymatlarini kiymatlarini xam kiritish mumkin. Bunda kuyidagi operatorlardan foydalaniladi:

READ(A[3];

READ(B[6,9]);

Bu yerda A vektori 3- elementninig kiymati va V matritsaning 6-katori 9- ustunida joylashgan elementlari kiymatlarini kiritadi.

Ikkala kiymat xam ekranning bitta katorida , kursorning joriy pozitsiyasidan teriladi.

Massiv elementlari kiymatini chiqarish xam xuddi shunday bajariladi, lekin bunda Write yoki Writeln operatorlari kullaniladi.


FOR I: =1 TO 4 DO

Writeln (A[I]); { A massivi elementlari kiymatini chiqarish}

Yoki


FOR I: =1 TO 10 DO

FOR J:= 1 TO 15 DO

Writeln (V[I,J]); { B massivi elementlari kiymatini chiqarish}

Misol:


5 ta elementdan xosil bulgan X massivining elementlarini kiriting.

Xar bir elementning kvadrati va ildizini ekranga chiqaring.

Yechilishi:

PROGRAM P7_2;

VAR

Sum,I: integer;

Sr: real;

X: array[1..5] of integer;

Kor, Kv: array[1..5] of real; { Natija kasr yoki Integer bulishi mumkin }

BEGIN


Sum:=0;

Writeln('5 ta butun kiymatlarni kiriting: ');

FOR I:= 1 TO 5 DO BEGIN

Write('I- sonni kiriting: ');

Readln(X[I]);

Kor[I]:= Sqrt(X[I]); { ildizni xisoblash }

Kv[I]:= Sqr(X[I]); { kvadratini xisoblash }

END;


FOR I:= 1 TO 5 DO Write(Kor[I]:8:2);

Writeln;


FOR I:= 1 TO 5 DO Write(Kv[I]:8:2);

Readln;


END.
Massivlar bilan ishlashda konstantalar xam ishlatilishi mumkin.

CONST


G1 = 4; G2 = 6;

VAR


MasY : array[1..G1,1..G2] of real;

Massiv elementlari xotirada ketma-ket joylashadi. Indekslari kichkina bulgan elementlar xotiraning pastki adreslarida saklanadi. Kup elementli massivlarda ung tarafdagi indeks birinchi bulib usib boradi. Masalan; Agarda


A : array[1..5,1..5] of integer; bulsa u xolda massiv elementlari adreslarning usishi buyicha joylashadi:

A[1,1]

A[1,2]

...



A[1,5]

A[2,1]

A[2,2]

Massivlarni bir butun xolatda ishlatilgan paytda massiv nomlaridagi indekslaridagi kvadrat kavsga olinmay ishlatiladi. Massivlar kiritish operatorlarida “teng” yoki “teng emas” opearsiyalarida ishlatilishi mumkin.



Bu amallarda ishlatiladigan amallar bir xil tipdagi indeks va komponentalarga ega bulib, strukturasi bir-biriga uxshash bulishi kerak.

Masalan: A va B massivlari Var A, B : array[1..20] of real; Ko’rinishida ifodalangan bulsa, unda natija kuyidagicha buladi:


Ifoda

Natija

A = B


A <> V

A := V

True, agarda A massivining elementlarining kiymatlari V massiv elementining kiymatlariga mos ravishda teng bulsa.

True, Agarda A massiv elementining biron bir kiymati V massiv elementining kiymatlariga mos raviщda teng bulmasa.


V massiv elementining xamma kiymatlari A massiv elementlari tomonidan uzlashtirilsa V massiv elementlarining kiymatlari uzgarmasdan koladi.



Massivni e’lon kilingandan keyin uni elementlarini nomlari kvadrat kavs ichida ko’rsatilgan xolda ishlatish mumkin.Masalan:

Mas[2], VectorZ[10] massivning ikkinchi va uninchi elementlariga murojaat etishni bildiradi. Ikki ulchovli massivlarda ikkita indeks, n ulchovlilarda esa n ta indeks ko’rsatiladi.

Masalan, MatrU[4,4] bu yozuv Matr U massivining 4 kator 4 ustunidagi elementini bildiradi. Array tipidagi kiymatlar bilan ishlashda kuyidagi xolatlar bulishi mumkin:

VAR


A,D : array[1..4] of real;

B : array[1..10,1..15] of integer;

I,J : integer; K : integer; S: real;

Bu operatsiyani FOR operatori yordamida xam bajarish mumkin:

FOR I := 1 TO 4 DO A[I] := 0;

Ikki ulchovli massivlarga indeks kuyish uchun ichma-ich joylashgan operatorlar ishlatiladi:


FOR I := 1 TO 10 DO

FOR J := 1 TO 15 DO

B[I,J] := 0;

Paskal algloritmik tilida massiv elementlarini birdaniga kiritish - chiqarish imkoniyati yukligi sababli elementlar bittadan kiritiladi.

1 Misol:

5 ta elementdan xosil bulgan X massivining elementlarini kiriting.

Xar bir elementning kvadrati va ildizini ekranga chiqaring.

Yechilishi:

PROGRAM P7_2;

VAR

Sum,I: integer;

Sr: real;

X: array[1..5] of integer;

Kor, Kv: array[1..5] of real; { Natija kasr yoki Integer uchun juda katta bulishi mumkin }

BEGIN

Sum:=0;



Writeln('5 ta butun kiymatlarni kiriting: ');

FOR I:= 1 TO 5 DO BEGIN

Write('I- sonni kiriting: ');

Readln(X[I]);

Kor[I]:= Sqrt(X[I]); { ildizni xisoblash }

Kv[I]:= Sqr(X[I]); { kvadratini xisoblash }

END;

FOR I:= 1 TO 5 DO Write(Kor[I]:8:2);



Writeln;

FOR I:= 1 TO 5 DO Write(Kv[I]:8:2);

Readln;

END.



2 Misol:

3x3 massiv elementlarini kiriting va xar bir kator yigindisini xisoblang va xar bir kator yigindisini xisoblang

Yechilishi:

PROGRAM P7_8;

VAR

X: array[1..3,1..3] of integer;



Sum: array[1..3] of integer;

I, J: integer;

BEGIN

Randomize;



FOR I:= 1 TO 3 DO

FOR J:= 1 TO 3 DO BEGIN

X[I,J]:=Random(300); {massivning tasodifiy kiymatlari bilan tuldiramiz}

END;

FOR I:= 1 TO 3 DO

Sum[I]:= 0; { yigindini 0 ga tenglashtiramiz }

FOR I:= 1 TO 3 DO

FOR J:= 1 TO 3 DO

Sum[I]:= Sum[I]+X[I,J];

FOR I:=1 TO 3 DO

Write(Sum[I]:3); { yigindini chiqaramiz}

Readln;

END.

Massivdan nusxa olish deb,bitta massiv elementlari kiymatlarini boshqa massiv elementlari uzlashtirishiga aytiladi. Nusxa olishni bitta uzlashtirish operatori yordamida amlga oshirish mumkin,masalan A:=D yoki FOR operatori yordamida.



FOR I:= 1 TO 4 DO A[I]:= D[I];

Ikkala xolda xam massiv elementlari kiymatlari uzgarmaydi, A massivi elementlarining kiymatlari D massivi elementlari kiymatiga teng bulib koladi.Ko’rinib turibdiki, ikkala massiv xam strukturasi buyicha bir- biriga uxshash. Kupchilik xolatlarda massiv da kaysidir elementlarini izlashga tugri keladi. Masalan, A massivining nechta elementi nol kiymatga ega ekanligini bilish talab etiladi. Buning uchun kushimcha uzgaruvchi K ni kiritamiz va FOR, IF operatorlaridan foydalanamiz:

K:=0;

FOR I:=1 TO 4 DO



IF A[I] = 0 THEN K : = K+1;

Sikl bajarilgandan keyin K uzgaruvchi A massivining nolga teng bugan kiymatlarini uz ichiga oladi.Massiv elementlari kiymatlarini joyini almashtirish massivning bazali tipiga uxshash tipdagi yerdamchi uzgaruvchi yordamida amalga oshiriladi. Masalan, A massivining birinchi va beshinchi elementlari kiymatlarini joyini almashtiring:

Vs : =A[5] { Vs- yordamchi uzgaruvchi }

A[5] :=A[1];



A[1]: =Vs;
Download 20.43 Kb.

Do'stlaringiz bilan baham:




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2020
ma'muriyatiga murojaat qiling