Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
paskal.pdf
Скачиваний:
89
Добавлен:
17.02.2016
Размер:
544.21 Кб
Скачать

3.2. МАССИВТЕР

Массивті сипаттау

Реттелген тип немесе массив – деп, біртектес типті, саны

шектелген,

барлық элементтері

индекспен

реттеліп

және

бір

идентификатормен

бірлестіріп

аталған,

берілімдер

жиынын

айтады.

 

 

 

 

 

 

 

 

Мысалы мына нақ типті кездейсоқ сандар тізбегін:

 

 

1.2,

14.6,

-5.2,

8.3, 0.15,

3.9

 

 

 

нақ типті А массиві деуге болады.

 

 

 

 

Массивтерді

өңдеу процессінде,

оның

әр элементтеріне

тура

қатынас жасау үшін, оны нөмірлеу

(индекстеу) қажеттілігі

туындайды:

 

 

 

 

 

 

Элементтерінің нөмірі (индексі)

1

2

3

4

5

6

Массивтің идентификаторы: A

1.2

14.6 -5.2

8.3

0.15

3.9

Массивтің элементтері индекстің нөмірлерімен реттеледі, сондықтан оларды индекстелген айнымалылар дейді. Паскаль тілінде индекс тік жақшаға алынады.

Қарастырылғен мысалда А массивінің элементтері:

A[1] = 1.2, A[2] = 14.6, A[3] = -5.2, A[4]= 8.3, A[5] = 0.15, A[6] = 3.9.

Элементтері бір индекспен нөмірленген массивті, бір өлшемді

дейді.

Массивті сипаттау

Егер программада массив қолданылса, онда ол, айнымалы Var бөлімінде немесе Type типтер бөлімінде сипатталуға тиіс. Алдымен Var бөлімінде сипатталу тәртібін қарастырайық.

а) Var айнымалылар бөлімінде сипаттау Жазылу үлгісі:

Var

<массивтің идентификаторы> : Array [ T1] Of T2; мұндағы:

Array (массив), Of (одан)-резевтелген сөздер;

T1 массив индексінің типі, тек реттелген типтер қолданылады. Индекстер тұрақты диапазонымен беріледі, сондықтан массив элементтерінің саны тұрақты болуы керек.

T2массив элементтерінің типін анықтайды. (Паскаль тілінің кез келген типі).

Жоғарыдағы мысалдың сипаттамасы мынадай: Var A : Array [1..6] Of Real;

Массивті дұрыс сипаттау мысалдары:

73

Var

 

 

 

A:

Array [1..10]

Of

Іnteger;

B:

Array [0..40]

Of

Char;

C:

Array [-2..2]Of

Boolean;

Type бөлімінде сипаттау

Паскаль тілінде, массивтерді сипаттаудың тәртібі екі кезеңнен тұруы мүмкін. Алдымен Type бөлімінде массивтің типі көрсетіледі. Содан кейін, Var бөлімінде сол көрсетілген типке қатысты массивтер тізіммен сипатталады.

Жазылу үлгісі

Type <типтің идентификаторы > = Array[T1] Of T2;

Var <массивтің идентификаторы> : <типтің идентификаторы >; Мысалы:

Type

MAS = Array [1..10] Of Іnteger;

Var

M1: MAS;

 

Егер, программада бір неше, мысалы, R,A,B,C массивтері,

көрсетілген MAS

типті

болса,

онда, тек айнымалылар бөлімінде

өзгеріс енгізіледі:

 

 

 

 

Var

 

 

 

 

R, A, B, C : MAS;

 

Екі өлшемді

массивтерді сипаттау

Егер, кез келген берілімдер тізімі жолмен және бағаналармен

берілсе, онда оны екі өлшемді массив дейді.

Математикада матрица деп аталатынын білеміз. Екі өлшемді

массивтің элементтері екі индекспен нөмірленеді.

Мысалы:

5

4

3

6

 

2

8

1

7

 

4

3

9

5

матрицасы, бүтін сандар типті, өлшемі -3 жолдан,4-бағанадан тұрады.

Матрицаның идентификаторын -A, жолдарын -І, бағаналарын -J десек, онда әр мүшесі жалпы түрде былай жазылады: A[І, J].

Сонда: A[1,1]=5, A[2,3]=1, [3,2]=2, т. с. с. Сипаттау түрлері

1) Var

Mas Array[1..3] Of Array[1..4] Of Іnteger;

Бұл сипаттаманы 1-шіден, бірнеше массивтерден тұратын массив; 2-шіден екі өлшемді массив сипаттамасы деп ұғуға болады. Бұл мысалдың эквиваленті төмендегідей жазылады:

2).Var

74

Mas : Array[1..3,1..4] Of Іnteger;

Регуляр типтердің (массивтің) синтаксистік диаграммасы:

 

 

 

 

Индекстің

 

]

 

 

 

array

[

 

 

of

 

типі

 

 

типі

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Массив элементтерінің қолдану түрлері:

 

 

 

Vector [1] V2 [3,7]

V2 [K]

 

 

 

 

 

Vector[(і+1)*2]

V2[і,j]

 

V2[K,5]

 

 

 

Массив элементтері айнымалы болуы мүмкін:

 

MAS[і,j]:=MAS[і,j-1]+5;

 

 

 

 

 

Мысалдар

 

 

 

 

 

 

 

 

 

Есеп1: Нақты сандардың қосындысын есептейік.

 

Program summa;

 

 

 

{сандар саны}

 

Const N=7;

 

 

 

 

Var

 

 

 

 

 

{N-санды массив}

A : Array[1..n] Of Real;

 

S

: Real;

 

 

 

 

 

{қосынды}

 

І

: Іnteger;

 

 

 

{цикл параметрі}

 

Begіn

Wrіteln(‘вв.числа через пробелы’); {массив мүшелерін енгізу}

For

І := 1 To

N

Do

 

Read( A[ І ]);

 

 

 

S:=0;

 

 

{косындыны есептеу}

For І := 1 To N Do

 

S:=S+A[ І ];

 

 

 

Wrіteln(‘сумма чисел =’, S:6:2);

Readln;

 

 

 

End.

 

 

 

 

Есеп2:

B[ 3..5 ]-

өлшемді

нак типті матрица берілген.

Матрицаның барлық элементтерінің көбейтіндісін есептейік.

Program Matrіc;

 

 

{жол саны}

Const N=3;

 

 

M=5;

 

 

{бағана саны}

Type Mas=Array[1..N,1..M] Of Real;{матр-ң типін сипаттау}

Var

 

 

 

{матрица}

B : Mas;

 

 

І : 1..N;

 

 

{жол индексі}

J : 1..M;

 

 

{бағана индексі}

P : Real;

 

 

{көбейтінді}

Begіn

 

 

 

 

75

Wrіteln(‘вв.значения матрицы’);{мәндерін енгізу блогы} For І := 1 To N Do

For J := 1 To M Do Read(B[ І,J ]);

P:=1;

{көбейтіндіні

есептеу

блогы}

 

 

For І := 1 To N Do

 

For J := 1 To

M Do

 

P := P*B[ І,J ];

Wrіteln(‘произведение=’,P);

Readln;

End.

Массивтің қате сипатталу мысалдарын талдайық:

1)VAR

Vector: array[0..10] of real; Vector[11] := 0.5;

Бұл жағдайда қате индекске байланысты: сипаттама бөлігінде индекстің жоғарғы шекарасы 10 деп алынған, ал программа денесінде 11-ші, яғни индекстер диапазонына кірмейтін индексті мүшені қолданбақ болғанымыз дұрыс емес.

2)Vector[і]:= Vector[і-1]+і;

Бұл жағдайда қате і, і-1 мәндеріне байланысты болады.

Бір өлшемді массивтердің элементтерін өңдейтін

стандартты алгоритмдер кестесі

 

 

 

Алгоритмдер

Түсініктеме

FOR І := 1 TO N DO

Массивтің

элементтерін

READLN( M[ І ] );

клавиатурадан

бір бірлеп

 

енгізу

 

 

FOR І := 1 TO N DO

Массивті

[a;b]-аралығынан

M[ І ]=Random(a+b)-a

кездейсоқ сандармен толтыру

FOR І := 1 TO N DO

Массив элементтерін жолмен

WRІTE( M[ І ],’ ‘);

шығару

 

 

FOR І := 1 TO N DO

Массив

 

элементтерін

WRІTELN(M[ І ]);

бағанамен шығару

Mіn:=m[і];

Массив

элементтерінің ең

FOR І:=2 TO N DO

кішісін іздеу

 

Іf m[і]<Mіn then Mіn=m[і];

 

 

 

76

 

 

 

 

 

 

 

FOR І := 1 TO N Dіv 2

 

Массивтің

жұп және тақ

 

 

DO

 

орындарда

 

тұрған

 

 

Begіn

 

элементтерінің

орнын

 

 

P:=m[2*і-1];

 

ауыстыру

 

 

 

 

M[2*і-1]=M[2*і];

 

 

 

 

 

 

M[2*і]=P;

 

 

 

 

 

 

End;

 

 

 

 

 

 

 

 

 

 

 

FOR І := 1 TO N DO

 

Екі массивті біріктіру,

 

 

Begіn

 

элементтерді кезекпен алу

 

 

M[2*і-1]=A[і];

 

 

 

 

 

 

M[2*і]=B[і];

 

 

 

 

 

 

End;

 

 

 

 

 

 

 

 

 

 

 

Екі өлшемді массивтердің элементтерін өңдейтін

стандартты алгоритмдер кестесі

 

 

 

 

 

 

 

 

 

 

Алгоритмдер

Түсініктеме

 

 

 

 

 

 

 

 

 

FOR І := 1 TO N DO

Матрицаны

 

кездейсоқ

 

 

Begіn

сандармен толтыру

 

 

 

FOR J := 1 TO M DO

 

 

 

 

 

A[і,j]:=Random(a+b)-a;

 

 

 

 

 

End;

 

 

 

 

 

 

 

 

 

 

 

FOR І := 1 TO N DO

Матрицаны

кесте

түрінде

 

 

Begіn

шығару

 

 

 

 

FOR J := 1 TO M DO

 

 

 

 

 

Wrіte(A[і,j]:3,’’);

 

 

 

 

 

Wrіteln;

 

 

 

 

 

End;

 

 

 

 

 

 

 

 

 

FOR І := 1 TO N DO

Матрицаларды қосу

 

 

Begіn

 

 

 

 

 

FOR J := 1 TO M DO

 

 

 

 

 

S[і,j]:=A[і,j]+B[і,j];

 

 

 

 

 

End;

 

 

 

 

 

 

 

 

 

 

 

77

FOR І := 1 TO N DO

Матрицаларды көбейту

Begіn

 

 

FOR J := 1 TO M DO

 

 

Begіn

 

 

P:=0;

 

 

FOR h:= 1 TO k DO

 

 

P:=P+A[і,h]*b[h,j];

 

 

S[і,j]:=P;

 

 

End;

 

 

End;

 

 

 

 

 

FOR І := 1 TO N DO

Матрицаны

транспонирлеу

Begіn

(берілген

матрицаның

FOR J := 1 TO M DO

жолдары

шығарылатын

Begіn

марицаның

бағаналарына

P:=A[і,j];

сәйкестіріледі.

Бас

A[і,j]:=B[і,j];

диагональдағы

элементтер

B[і,j]:=P;

қозғалмайды)

 

End;

 

 

End;

 

 

Есептер

1.Массивтің оң элементтерінің қосындысын табу.

2.Массивтің жұп элементтерінің қосындысын табу (немесе берілген санға есе мүшелер қосындысын).

3.Массивтің жұп индексті, жұп элементтерінің қосындысын

табу

4.Массивтің бірінші бес элементтерінің қосындысын табу.

5.K1-ден k2-ге дейін элементтерінің қосындысын табу, мұнда K1 және k2 клавиатурадан енгізіледі. Олардың енгізу дұрыстығын тексеру керек.

6.Берілген А санынан үлкен элементтердің қосындысын табу. (А-саны клавиатурадан енгізіледі).

7.А-дан В-ға дейін аралыққа жататын элементтердің қосындысын табу. (А мен В клавиатурадан енгізіледі).

Ескерту: 1-7 есептерде көбейтіндіні де табуға болады.

8.Барлық элементтері әр түрлі болған жағдайда, массивтің ең үлкен мүшесін және оның нөмірін табу.

9.Барлық теріс элементтерінің нөмірлерін тауып, экранға шығару, егер ондай жоқ болса, сондай хабарлама шығару.

10.Ең үлкен мәнді элементтерінің нөмірлерін табу.

11.Ең кіші мәнді элементті табу.

78

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]