- •1. ТУРБО ПАСКАЛЬ ПРОГРАММАЛАУ ОРТАСЫ
- •2.1. Паскаль тілінің негізгі элементтері
- •Паскальдағы сөздер
- •Идентификатор
- •Тұрақтылар және айнымалылар
- •2.2. Берілім типтері
- •Турбо Паскальдағы берілім типтерінің тізбесі
- •Логикалық тип
- •2.4. Амалдар, математикалық функциялар, өрнектер
- •2.5. Программаның құрылымы
- •2.6. Енгізу-шығару процедуралары
- •Экранға шығару форматтары
- •2.7. Қарапайым операторлар
- •2.8. Алгоритмдеудің негізгі құрылымдары
- •2.9. Тізбектеу құрылымды алгоритмдер
- •2.10. Тармақталу құрылымды алгоритмдерді ұйымдастыру
- •Құрамды оператор
- •Күрделі шартты операторлар
- •CASE таңдау операторы
- •2.11. Қайталау құрылымды алгоритімдерді ұйымдастыру
- •FOR параметрлі цикл операторы
- •Whіle алдыңғы шартты цикл операторы
- •Repeat кейінгі шартты цикл операторы
- •Фибоначчи сандарын есептеу
- •Евклид алгоритмі
- •2.12. Процедуралар және функциялар
- •Функциялар
- •Рекурсивті программалау мысалдары
- •3. ҚҰРЫЛЫМДЫ БЕРІЛІМ ТИПТЕРІ
- •Жолдық өрнектертер
- •Жолдық процедуралар және функциялар
- •3.2. МАССИВТЕР
- •Массивті сипаттау
- •Символдық массивтер
- •Іріктеу алгоритмдері
- •Ұсақтап бөлу арқылы тез іріктеу әдісі
- •3.3. ЖИЫНДАР
- •Жиындарға қолданылатын амалдар
- •3.4 ЖАЗБАЛАР
- •Типті сипаттау
- •Сатылы жазбалар
- •Файлдық типтер және айнымалылар
- •Сыртқы файлды программамен байланыстыру
- •Файлдан оқу
- •Файлға жазу
- •Файлды толықтыру
- •Мәтіндік файлдар
- •Қолданылған әдебиеттер
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