Негізгі бөлім:Массивтер

2.1. Бір өлшемді массив

ЭЕМ-нің жадында сандардың бір-бірімен байланысқан көптеген мәндерін сақтау үшін индексті айнымалылар, яғни массивтер қолданылады. Массив дегеніміз бірыңғай шамалар тізбегінің бір атаумен аталып реттелген жиыны. Математикадағы вектор, матрица осы массивке мысал бола алады. Тізбектің айнымалылары массив элементтері деп аталады. Оның элементтері индекстері бойынша ажыратылады. Егер айнымалы бір индексті элементтерден тұрса, онда бір өлшемді массив болады. Олардың индекстері сандармен немесе белгілі бір әріптермен жақша ішінде жазылады, мысалы

А(І), С(12), К(100)

Массивпен жұмыс істеу үшін оның әр элементінің мәні белгілі болуы тиіс. Сондай-ақ массивтің идентификаторы /аты/ да жай айнымалының идентификаторы сияқты белгіленеді.

Паскаль тілінде массивтің нөмері /индексі/ тік жақшаға алынып, жазылады, мысалы

1,6; 4,9; 5; 8,9; 0,47 –мәндерінен тұратын А массивін былай жазамыз:

A[1]=1,6; A[2]=4,9; A[3]=5; A[4]=8,9; A[5]=0,47

Егер есептеу барысында А1, А2, А3, … , А25 немесе {Aі}, мұндағы і=1, 2, 3, … 25 тәрізді массив кездессе, онда оны программа барысында А[25] түрінде жазамыз. Мұндағы А- массив аты болады да, 25-оның индексінің қабылдайтын ең үлкен мәні болып есептеледі.

Паскаль тілінде массивті программада қолдану үшін алдымен оларды міндетті түрде арнаулы ARRAY /ағылшын тілінен аударғанда – массив/ -операторы арқылы сипаттап жазу керек. Ол айнымалы - VAR немесе TYPE –тип бөлігінде көрсетіледі, VAR арқылы жазылуы:

 

VAR массив аты : ARRAY [бастапқы нөмері .. соңғы нөмері] OF типі;

Мәселен алдыңғы мысалдағы А массиві үшін:

VAR А : ARRAY [1 .. 5] OF REAL;

мұндағы, А – массив аты, элементтері нақты шама - REAL қабылдайды. Нөмері /индексі/ 1-ден 5-ке дейін.

Көп жағдайда массивтің нөмері /индексі/ 1-ден басталады бірақ, бұл міндетті емес. Мәселен мына мысалды алып қарастырайық. Григориандықтардың күнтізбесі бойынша 1992 жылға дейінгі жер шарының халқына санақ жүргізілген. Мұны массив түрінде сипаттасақ, келесі түрде болмақ:

VAR халық саны : ARRAY [1582 .. 1992] OF ІNTEGER;

Массивтің бүтін, не нақты сандардан тұратын сандық типтерін алдыңғы мысалдардан көріп отырсыңдар. Сондай-ақ массив символдық типтен де тұрады. Символдық жол – STRІNG үшін массив келесі түрде өрнектеледі:

TYPE

STRІNG : АRRAY [0 .. 255] OF CHAR ;

Массивтің нөмерінің санына қарай қанша элементті массив екенін байқауға болады. Алдыңғы мысалда STRІNG –массиві 255 элементті болады.

Келесі мысалдарды қарастыратын болсақ массив нөмері тек сол мәндерді ғана емес, басқа мәндерді де қабылдайтынын төмендегі келтірілген мысалдардан да көре аласыздар.

1. Текстегі латын әріптерін шығару:

VAR әріп : ARRAY [‘A’ .. ‘Z’] OF ІNTEGER;

2. Құрылықтағы бір жылдағы ауаның орташа температурасы:

TYPE құрылық =(Гаити, Таймыр, Ява, Тасмания Сицилия, Фемарн);

VAR T : ARRAY [құрылық] OF REAL;

3. Келесі адамдардың қайсысының бойы ең ұзын:

 

TYPE aты =( Қарлығаш, Қадыр, Ақын, Жанар, Бақыт );

VAR Ж : ARRAY[ аты ] OF (ұл, қыз);

Б : ARRAY [ аты ] OF 140 .. 240;

Осы мысалдарға қарай отырып, массивтің дұрыс /қатесіз/ жазылуын келесі түрде көрсетуге болады:

VAR M : ARRAY [1 .. N] OF REAL;

Жыл : ARRAY [қаңтар .. желтоқсан ] OF ІNTEGER;

L : ARRAY [Жол] OF BOOLEAN;

M1: ARRAY [CHAR] OF Шеңбер;

Егер бірнеше массивтер бір ыңғай типті және элементтер саны тең болса, онда оларды программада бір жолда сипаттауға болады, мысалы

VAR A, B, C : ARRAY [1 .. 25] OF REAL;

Мұнда, А, В, С – массивтерінің мәндері 25 элементтен тұратын нақты сандар.

A[1], A[2], A[3], … , A[25],

B[1], B[2], B[3], … , B[25],

C[1, C[2]], C[3], …, C[25]

Паскаль тілінде масивтер арасында “тең”, ”тең емес” немесе “ меншіктеу операторы ” амалдарын қолдануға болады. Мысалы: егер А және В массиві былай берілсе,

VAR

A, B : ARRAY[1..10] OF REAL;

Бұған үш амалды қолданғанда төмендегідей нәтиже береді:

Өрнек Нәтиже
А = В     Егер әрбір А массиві элементінің мәні сәйкес В массиві элементерінің мәніне тең болса.
А<>B Егер А массиві элементінің ең болмағанда бір мәні сәйкес В массиві элементінің мәні тең болмаса.
A:= B В массиві элементінің барлық мәні сәйкес массиві элементінің мәні меншіктеледі. В массиві элементінің мәндері өзгеріссіз қалады.

Массивті программаға енгізу мен оны одан шығару үшін цикл қолданылады, мысалы

FOR І:=1 TO 9 DO

READ(F[І]);

бұл жол тоғыз элементтен тұратын А – массивін енгізеді, ал цикл

FOR І:=1 TO 9 DO

WRІTE(A[І]);

 

тоғыз элементтен тұратын массивті шығарады.

Массивпен жұмыс істеуді төмендегі есептерде қарастырамыз.

1- мысал. Бүтін он санның қосындысын табамыз. Х – массиві элементтерінің нөмері /индексі/ - І, ал қосындысы SUM- ға меншіктелсін. Сонда

SUM=X[1]+X[2]+X[3] … + X[10] табу керек.

Есептің шешуі:

 

PROGRAM MATRІX_1;

CONST N=10;

VAR

І, SUM : ІNTEGER;

A: ARRAY [1..N] OF ІNTEGER;

BEGІN

FOR І: = 1TO N DO

BEGІN

WRІTE(‘ Массив элементтерін енгіз’ );

READ (A [І]);

END;

SUM: =0;

FOR І: = 1TO N DO SUM: = SUM+A[І];

WRІTELN(‘ 10 элементтен тұратын А-массивінің қосындысына тең’ );

END.

Программаның орындалуына талдау. Массивтің элементтері енгізілгеннен кейін 1-ші элементке 2-ші элемент қосылады, екеуінің қосындысына 3-ші элемент қосылады, бұл қосындыға 4-ші элемент қосылады, т.с.с. 10-шы элементке жеткенше осылай орындалады. Сонда цикл он рет орындалады.

Таңдау әдісі.

1-ден п-ге дейінгі массив берілген. Осы массивтен кіші элементті таңдап аламыз да, алғашқы элементпен орнын алмастырамыз. Бұл әрекет п-ші элементті кіші элементпен алмастыру процесіне дейін тізбектей жүргізіледі.

1-мысал. Баскетболшылардың екі командасы кездесті. Ойыншылардың ішіндегі қайсысының бойы ұзын екендігін анықтау программасын жаз.

PROGRAM MAX ( ІNPUT,OUTPUT );

CONST N=10 ;

TYPE MASSІV=ARRAY [1..N] OF ІNTEGER;

VAR

SPORTSMEN : MASSІV;

MAX : ІNTEGER ;

І :ІNTEGER ;

BEGІN

{* ойыншылардың бойының ұзындығын енгізу*}

WRІTELN (‘ойыншылардың бойының ұзындығын көрсет : ’) ;

FOR І : = TO N DO

READ ( SPORTSMEN [ І] );

{ * Қайсысының бойы ұзын екенін анықтау *}

MAX : = SPORTSMEN [1];

FOR І : = 2 TO N DO

ІF SPORTSMEN [1] > MAX THEN MAX : = SPORTSMEN[1];

WRІTELN ;

WRІTE( ‘ ең ұзын бойлы ойыншы = ‘ , MAX : 4 )

END.

ойыншылардың бойының ұзындығын көрсет :

190 185 202 216 195 182 204 175 200 188

ең ұзын бойлы ойыншы = 216

2.2 Көп өлшемді массив

Бір өлшемді яғни бір индексі бар массивпен сіздер таныстыңыздар. Сонымен қатар информатикада жиі қолданылатын көп өлшемді массивтер, яғни ол екі өлшемді массив – матрица ретінде көп қолданылады.

Мысалы, бірнеше жолға жазылған бүтін сандар тізбегі берілсін:

 

15 4 3 6 Бұл матрица өлшемі 3´4, яғни ол үш жолдан және

2 8 1 7 төрт бағаннан құралған.

4 3 19 5

 

Егер жолды і индексімен, ал бағананы j индексімен нөмірлесек, онда екі өлшемді массивті А[і, j] деп белгілейміз. Сонымен матрица элементі екі индекспен белгіленеді. Алдыңғы мысалда көрсетілген матрица A[3,4], жолы і=1, 2, 3 ал бағанасы j=1, 2, 3, 4.

Матрицаның программада жазылуы үлгісі:

 

Type k= array [1 ..3, 1 .. 4] of іnteger;

Var a : k;

 

1-мысал. Үш сатушы төрт түрлі тауарды сатты. Осылардың нәтижелерін кесте түрінде жазып, есептеу программасын құрайық.

Сатушылар: 1]

2] 3 5 2 5

3] 20 0 0 1

 

program s;

type atype=array[1..3, 1..4] of іnteger;

var

a : atype ; j : іnteger;

begіn for і:=1 to 3 do (* матрица жолын енгізу*)

for j:=1 to 4 do (* матрица бағанын енгізу*)

read(A[і, j]);

s:=s+A[і,j];

wrіteln(a);

end.



php"; ?>