5.2. Матрицалар устида амаллар
Массивларни бир бутун холатда ишлатилган пайтда массив номларидаги индексларидаги квадрат кавсга олинмай ишлатилади. Массивлар киритиш операторларида “тенг” ёки “тенг эмас” опеарцияларида ишлатилиши мумкин.
Бу амалларда ишлатиладиган массивлар бир хил типдаги индекс ва компоненталарга эга булиб, структураси бир-бирига ухшаш булиши керак.
Масалан: A ва B массивлари Var A, B : array[1..20] of real; куринишида ифодаланган булса, унда натижа куйидагича булади:
Ифода
|
Натижа
|
A = B
A <> В
A := В
|
True, агарда А массивининг элементларининг кийматлари В массив элементининг кийматларига мос равишда тенг булса.
True, Агарда А массив элементининг бирон бир киймати В массив элементининг кийматларига мос равищда тенг булмаса.
В массив элементининг хамма кийматлари А массив элементлари томонидан узлаштирилса В массив элементларининг кийматлари узгармасдан колади.
|
5.3 Массив элементлари устида амаллар
Массив элементларини индексациялаш, массивлардан нусха олиш
Массивни эълон килингандан кейин уни элементларини номлари квадрат кавс ичида курсатилган холда ишлатиш мумкин.Масалан: Mas[2], VectorZ[10] массивнинг иккинчи ва унинчи элементларига мурожаат этишни билдиради.
Икки улчовли массивларда иккита индекс, n улчовлиларда эса n та индекс курсатилади.
Масалан, MatrU[4,4] бу ёзув Matr U массивининг 4 та катор 4 та устунидаги элементини билдиради. Array типидаги кийматлар билан ишлашда куйидаги холатлар булиши мумкин:
VAR
A,D : array[1..4] of real;
B : array[1..10,1..15] of integer;
I,J : integer; K : integer; S: real;
Бу операцияни FOR оператори ёрдамида хам бажариш мумкин:
FOR I := 1 TO 4 DO A[I] := 0;
Икки улчовли массивларга индекс куйиш учун ичма-ич жойлашган операторлар ишлатилади:
FOR I := 1 TO 10 DO
FOR J := 1 TO 15 DO
B[I,J] := 0;
Паскаль алглоритмик тилида массив элементларини бирданига киритиш - чикариш имконияти йуклиги сабабли элементлар биттадан киритилади.
Массив элементига кийматни узлаштириш оператори ёрдамида берилади,иницализация мисолда курсатилгандек,лекин куп холларда READ ёки READLN оператори ёрдамида узлаштирилади ва цикл операторидан фойдаланамиз.
FOR I:=1 TO 10 DO
FOR J:=1 TO 15 DO
READLEN(D[I,J];
WRITELN оператори ишлатилиши сабабли хар бир киймат янги катордан киритилади. Алохида элементларни кийматларини кийматларини хам киритиш мумкин. Бунда куйидаги операторлардан фойдаланилади:
READ(A[3];
READ(B[6,9]);
Бу ерда А вектори 3- элементниниг киймати ва В матрицанинг 6-катори 9- устунида жойлашган элементлари кийматларини киритади.
Иккала киймат хам экраннинг битта каторида , курсорнинг жорий позициясидан терилади.
Массив элементлари кийматини чикариш хам худди шундай бажарилади, лекин бунда Write ёки Writeln операторлари кулланилади.
FOR I: =1 TO 4 DO
Writeln (A[I]); { А массиви элементлари кийматини чикариш}
Ёки
FOR I: =1 TO 10 DO
FOR J:= 1 TO 15 DO
Writeln (В[I,J]); { B массиви элементлари кийматини чикариш}
Мисол:
5 та элементдан хосил булган Х массивининг элементларини киритинг.
Хар бир элементнинг квадрати ва илдизини экранга чикаринг.
Ечилиши:
PROGRAM P7_2;
VAR
Sum,I: integer;
Sr: real;
X: array[1..5] of integer;
Kor, Kv: array[1..5] of real; { Натижа каср ёки Integer булиши мумкин }
BEGIN
Sum:=0;
Writeln('5 та бутун кийматларни киритинг: ');
FOR I:= 1 TO 5 DO BEGIN
Write('I- сонни киритинг: ');
Readln(X[I]);
Kor[I]:= Sqrt(X[I]); { илдизни хисоблаш }
Kv[I]:= Sqr(X[I]); { квадратини хисоблаш }
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.
Массивлар билан ишлашда константалар хам ишлатилиши мумкин.
CONST
G1 = 4; G2 = 6;
VAR
MasY : array[1..G1,1..G2] of real;
Массив элементлари хотирада кетма-кет жойлашади. Индекслари кичкина булган элементлар хотиранинг пастки адресларида сакланади. Куп элементли массивларда унг тарафдаги индекс биринчи булиб усиб боради. Масалан; Агарда
A : array[1..5,1..5] of integer; булса у холда массив элементлари адресларнинг усиши буйича жойлашади:
A[1,1]
A[1,2]
...
A[1,5]
A[2,1]
A[2,2]
Массивларни бир бутун холатда ишлатилган пайтда массив номларидаги индексларидаги квадрат кавсга олинмай ишлатилади. Массивлар киритиш операторларида “тенг” ёки “тенг эмас” опеарцияларида ишлатилиши мумкин.
Бу амалларда ишлатиладиган амаллар бир хил типдаги индекс ва компоненталарга эга булиб, структураси бир-бирига ухшаш булиши керак.
Масалан: A ва B массивлари Var A, B : array[1..20] of real; куринишида ифодаланган булса, унда натижа куйидагича булади:
Ифода
|
Натижа
|
A = B
A <> В
A := В
|
True, агарда А массивининг элементларининг кийматлари В массив элементининг кийматларига мос равишда тенг булса.
True, Агарда А массив элементининг бирон бир киймати В массив элементининг кийматларига мос равищда тенг булмаса.
В массив элементининг хамма кийматлари А массив элементлари томонидан узлаштирилса В массив элементларининг кийматлари узгармасдан колади.
|
Массивни эълон килингандан кейин уни элементларини номлари квадрат кавс ичида курсатилган холда ишлатиш мумкин.Масалан:
Mas[2], VectorZ[10] массивнинг иккинчи ва унинчи элементларига мурожаат этишни билдиради. Икки улчовли массивларда иккита индекс, n улчовлиларда эса n та индекс курсатилади.
Масалан, MatrU[4,4] бу ёзув Matr U массивининг 4 катор 4 устунидаги элементини билдиради. Array типидаги кийматлар билан ишлашда куйидаги холатлар булиши мумкин:
VAR
A,D : array[1..4] of real;
B : array[1..10,1..15] of integer;
I,J : integer; K : integer; S: real;
Бу операцияни FOR оператори ёрдамида хам бажариш мумкин:
FOR I := 1 TO 4 DO A[I] := 0;
Икки улчовли массивларга индекс куйиш учун ичма-ич жойлашган операторлар ишлатилади:
FOR I := 1 TO 10 DO
FOR J := 1 TO 15 DO
B[I,J] := 0;
Паскаль алглоритмик тилида массив элементларини бирданига киритиш - чикариш имконияти йуклиги сабабли элементлар биттадан киритилади.
1 Мисол:
5 та элементдан хосил булган Х массивининг элементларини киритинг.
Хар бир элементнинг квадрати ва илдизини экранга чикаринг.
Ечилиши:
PROGRAM P7_2;
VAR
Sum,I: integer;
Sr: real;
X: array[1..5] of integer;
Kor, Kv: array[1..5] of real; { Натижа каср ёки Integer учун жуда катта булиши мумкин }
BEGIN
Sum:=0;
Writeln('5 та бутун кийматларни киритинг: ');
FOR I:= 1 TO 5 DO BEGIN
Write('I- сонни киритинг: ');
Readln(X[I]);
Kor[I]:= Sqrt(X[I]); { илдизни хисоблаш }
Kv[I]:= Sqr(X[I]); { квадратини хисоблаш }
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 Мисол:
3х3 массив элементларини киритинг ва хар бир катор йигиндисини хисобланг ва хар бир катор йигиндисини хисобланг
Ечилиши:
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); {массивнинг тасодифий кийматлари билан тулдирамиз}
END;
FOR I:= 1 TO 3 DO
Sum[I]:= 0; { йигиндини 0 га тенглаштирамиз }
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); { йигиндини чикарамиз}
Readln;
END.
Массивдан нусха олиш деб,битта массив элементлари кийматларини бошка массив элементлари узлаштиришига айтилади. Нусха олишни битта узлаштириш оператори ёрдамида амлга ошириш мумкин,масалан А:=D ёки FOR оператори ёрдамида.
FOR I:= 1 TO 4 DO A[I]:= D[I];
Иккала холда хам массив элементлари кийматлари узгармайди, А массиви элементларининг кийматлари D массиви элементлари кийматига тенг булиб колади.Куриниб турибдики, иккала массив хам структураси буйича бир- бирига ухшаш. Купчилик холатларда массив да кайсидир элементларини излашга тугри келади. Масалан, А массивининг нечта элементи ноль кийматга эга эканлигини билиш талаб этилади. Бунинг учун кушимча узгарувчи К ни киритамиз ва FOR, IF операторларидан фойдаланамиз:
K:=0;
FOR I:=1 TO 4 DO
IF A[I] = 0 THEN K : = K+1;
Цикл бажарилгандан кейин К узгарувчи А массивининг нолга тенг буган кийматларини уз ичига олади.Массив элементлари кийматларини жойини алмаштириш массивнинг базали типига ухшаш типдаги ердамчи узгарувчи ёрдамида амалга оширилади. Масалан, А массивининг биринчи ва бешинчи элементлари кийматларини жойини алмаштиринг:
Vs : =A[5] { Vs- ёрдамчи узгарувчи }
A[5] :=A[1];
A[1]: =Vs;
Назорат саволлари
1.Массив деб нимага айтилади?
2.Массив кандай эълон килинади?
3.Куп улчамли массивлар деб кандай массивларга айтилади?
4.Массивлар устида кандай амалларни бажариш мумкин?
5.Массив элементи типлари кандай булади?
6.Массив элементларини кандай килиб чикариш мумкин?
7.Массивлардан нусха олиш кандай бажарилади?
8.Массивга киймат бериш кандай амалга оширилади?
9.Массивни кандай кенгайтириш мумкин?
10. Массив элементларини учириш кандай бажарилади?
6-Маoруза . Процедура ва функциялар.
Режа
6.1. Умумий маълумотлар
6.2. Стандарт ва библиотека модуллари
6.3.Ташкил килинган процедуралар ва функциялар
6.4.Фойдаланувчининг процедура ва функциялари
Do'stlaringiz bilan baham: |