Массив
Жоспары
Кіріспе .…...................
1. Құрылымды мәліметтер типі
….............................
1.1 Бір өлшемді массивтер.........
1.2. Массивтермен амалдар орындау..
1.3. Массив элементтерімен амалдар
орындау.......................
1.4. Массив элементтерін енгізу
және шығару...................
2. Массивтерді сұрыптау әдістері.
….............................
2.1. Ауыстырмалы сұрыптау («көпіршік»
тәсілі).......................
2.2. Қойылымды сұрыптау......................
2.3. Таңдап алу арқылы сұрыптау......................
2.4. Екі өлшемді массивтер (матрица).....................
2.5 Спортлото ойыны.........................
Қорытынды....................
Пайдаланылған әдебиеттер …...
Қосымша …....................
Кіріспе
Спортлото ойыны
адамдарға кеңінен танымал
Теледидарларда көрсетілетін
осы лотереялық ойында арнайы
құрылғы кішкене шарларды
Бұл программаны
қарапайым компьютерде ойнау
үшін кішкене программа
Turbo Pascal программалау
тілінің де басқа тілдер
Паскаль тілін 1970
жылы швейцарияның Цюрих
1979 жылы қабылданған
стандартты Паскаль тілі басқа
тілдерден қалыспайды. Сондықтан
да қазіргі кезде Паскаль тілі
кез-келген саладағы күрделі
Қазіргі кездегі программалау тілінің арасында ең көп тараған тілдердің бірі Turbo Pascal универсалды программалау тілі. Бірақ оны жүйелік программаларда, транслятор, операциялық жүйелерді жазуда қолдану жақсы жетістіктер береді.
Паскаль тілін 1973 жылы швейцар математигі Никлаус Вирт жасап шығарады да, атақты француз математигі, физигі, философы және алғашқы есептеу машинасы - арифмометрді /1641/ жасаған Блез Паскальдің құрметіне "Паскаль" деп ат қойды.
Turbo Pascal тілінде жазылған программаның архитиктуралары әр түрлі компьютерлердің бірінен бірін ауыстыруға бір операциялық жүйенің екінші операторлық жүйеге ауыстыруға жеңіл. Сонымен қатар Turbo Pascal тіліндегі программалардың орындалу жылдамдығы біршама жоғары.
Turbo Pascal тілінің компиляторы қазіргі кездегі MSDOS, WINDOWS операциялық жүйеде жұмыс істей береді.
Паскаль тілін 1973
жылы швейцар математигі
Паскаль тілі оқып үйренуге жеңіл, түрлі салалық информациямен жұмыс істеуде нәтижелі болғандықтан, дүние жүзінде көп тараған тілдердің бірі болып табылады.
Паскаль тілі:
• алгоритм құрылымын сақтап құрылған;
• жоғары деңгейлі программалау тілдерінің жақсы қасиеттерін жинақтаған;
• қазіргі замандағы
көптеген программалау
Сондықтан бұл тілдің
нақты ЭВМ - нің мүмкіндігіне
байланысты бірнеше түрлері
Біз өмір сүріп жатырған уақытымыз ақпараттық технологияның кеңінен даму кезі. Қазіргі кезде дүние жүзінде үш жүз миллионға жуық компьютер бар. Компьютер негізгі екі бөлікке бөлінеді: аппараттық бөлік және программалық бөлік. Компьютер программассыз ешқандай информацияны өңдеу операциясын орындай алмайды. Сондықтан компьютерлерге әртүрлі жұмыс атқаратын программалар жазылуы керек.
Алдымен программалар
перфоленталарға жазылды,
1. Құрылымды мәліметтер типі
1.1 Бір өлшемді массивтер
Элементтерінің саны
алдын-ала белгілі бір типті
индексті айнымалылардың
TYPE "массив aтауы"=ARRAY[X1] OFX2;
VAR "массив атауы":ARRAY[X1] OFX2;
мұндағы:
"массив атауы" -
массивті белгілеген идентифика
ARRAY - массив үғымын білдіретін қызметші сөз.
OF - қызметші сөз(бұл жерде жалғауларын білдіреді, мысалы бүтін шамалардан)
Х1 - массив индексінің типі, нақтыдан басқа барлық типтер қолданылады.
Х2 - массив элементінің негіздік типі.
Бағдарламада массивтерді
сипаттаудың бірнеше жолдары
бар. Алдымен типтер бөлімінде
массивті бір идентификатор
Turbo Pascal бағдарламаларында
бір циклдің ішінде екінші
цикл, оның ішінде үшінші цикл
т.с.с. бір-біріне
Алдымен сыртқы
циклдің параметрінің алғашқы
мәні бойынша сыртқы циклдің
орындалуының шарты
Ішкі циклдің параметрлерінің
барлық мәндері бойынша ішкі
циклдің орындалуы толық
Сыртқы циклдің
параметрінің келесі мәні
Барлық циклдік
операторлармен бағдарламалар
Егер бағдарламада бірнеше массивтің индекстері мен негіздік типтері бірдей болса, онда оларды бір тізімге біріктіріп жазып сипаттауға болады, төмендегі мысалдарда элементтері нақты сан болатын А,В,С массивтерінің бәріне де компьютердің жадынан элемент бөлінген, сондықтан олар бір тізімге біріктіріліп сипатталған.
Массивтердің типтер бөлімінде сипатталуы:
CONST N=100; {N-элементтер саны}
TYPE Mas=Array[1..N] Of Real;
Element=(Ge,C,O,N,Na,K,Li,Cu,
Gaz=Array[Ge.. N] Of Integer;
VAR A,B,C:Mas; X:Gaz;
Массивтердің айнымалылар бөлімінде сипаттапуы:
CONST N=100;
VAR A,B,C:Array[1..N]Of Real;
D, E: Array [1.. 5] Of Char;
Mezgil:Array[ 1.. 10] Of String;
Y,Z: Array[1..20] Of Byte;
R:Arrayl'A'.-'Z'lOfChar;
P:Array[1.. 101] Of String;
Жоғарыда сипатталған массивтердің барлығының да элементтерінің бір индексі бар. Бұндай массивтерді бір өлшемді массивтер дейді.
Есептеулерде бір өлшемді массивтермен қатар көп индексті массивтер де кездеседі. Оларды индексінің санына қарай n - өлшемді массивтер деп атайды. Солардың ішінде Паскаль бағдарламаларында екі индексті массивтер кеңінен қолданылады. Оларды көбінесе матрицалар деп атайды. Матрица элементтерінің бірінші - индексі қатардың, екіншісі -бағанның нөмірін білдіреді.
Екі өлшемді массивтердің типтер бөлімінде сипатталуы:
CONST N=100; М=100;
TYPE Mas=Array[1..N) 1..M]Of Real;
VAR A: Mas;
Екі өлшемді массивтердің айнымалылар бөлімінде сипатталуы:
CONST N=100; М=50;
VAR A:Array[1..N, 1..M]Of Real;
B: Array[1 ..3,1 ..7] Of Integer;
1.2. Массивтермен амалдар орындау
Массивтердің өзімен жұмыс істеу үшін массивтің өз атауы қолданылады. Массивтің өзі тек қана "тең", "тең емес" және меншіктеу амалдарына ғана қатыса алады. Бұл амалдарға қатысатын массивтердің типтері мен элементтер саны бірдей болуы керек.
Мысалы мынадай массивтер берілсе:
VAR X, Ү: Array[ 1..5]Of Byte;
Бұл массивтерге келесі амалдар қолданғанда:
Х=Ү - егер массивтердің индекстері сәйкес элементтері тең болса, онда нәтиже "ақиқат" болады
Х<>Ү- егер массивтердің индекстері сәйкес элементтерінің кемінде біреуі тең болмаса, онда нәтиже "ақиқат" болады
Х:=Ү - X массиві Ү
массивінің барлық
1.3. Массив элементтерімен амалдар орындау
Массивті сипаттап болғаннан кейін, операторлар бөлімінде массив элементтеріне жай айнымалылармен орындалатын әртүрлі амалдар қолдануға болады. Оларды әр түрлі өрнектерде операндалар орнына, For, While, Repeat операторларының параметрлерінде, логикалық амалдарда салыстыру элементі ретінде пайдалануға болады. Бағдарламалық тексте массивтің әр элементі массивтің аты мен индексі арқылы жазылады. Элементтер индекстің мәндері арқылы реттеледі. Бір ескеретіні "индекс" және "индекстің типі" түсініктерін араластыруға болмайды. "Индекстің типі" түсінігі тек массивті сипаттайтын бөліктерде ғана қолданылады. Ал "индекс" түсінігі операторлар бөлігінде массив элементтерін белгілегенде қолданылады. Индекс ретінде әртүрлі өрнектер қолдануға болады. Көбінесе өрнектердің қарапайым бір түрі ретінде тұрақтылар мен айнымалылар қолданылады. Сондықтан да (массив элементтерін басқаша индексті айнымалылар деп атайды. Егер математикада индекс жай жақшаға алынып немесе төменгі регистрде жазылса, Паскаль бағдарламаларында массив индекстері тік жақшаларға алынып жазылады.
Массив элементтері
бағдарламалардағы өрнектер
А (51, -15, 5.5, -8.1, 15, 0, 8)
- А массиві 7 элементтен тұрады,
элементтердің бағдарламада
VAR A:ARRAY{ 1.. 7] of Real;
А[ 1]=51; А[2]=-15; А[3]=5.5; А[4]=-8.1; А[5]= 15; А[6]=0; А[7]=8
Массив элементтерінің
Ү: =5*А[ 1]+SQR(A[2]+A[3]); X:=COS(A[5])+Sin(A[5]);
Fork:=1 To 10 Do Begin
Read(A[k]); Writeln(A[k]); A[k]:=A[k+1];
lfA[k]<5 Then S:=S+A[k];
While A[k]> =80 Do Begin S: =S+A[k]; k: =k+1 End; End;
1.4. Массив элементтерін енгізу және шығару
Массив элементтерін енгізу және шығару цикл арқылы жүзеге асырылады. Егер элементтерді ендіру үшін Read операторы қолданылса, онда элементтер бір қатарға жазылып ендіріледі. Ал Readln операторы қолданылса, онда әр элементті жаңа қатардан енгізу керек.
..............................
Readln(N);
For K:=1 To N do Read(A[K]);
..............................
Readln(N);K:=1;
Repeat Read(A[K]; K:=K+1
Until K>N;
..............................
Readln(N); K:=1;
While K= Readln(A[K]); K:=K+1 End;
..............................
Бағдарламаның орындалу нәтижесінде N элементтен тұратын массив элементтерін пернетақтадан ендіруді ұйымдастырады, бағдарламада циклді оқығанда Read операторын N рет оқып тоқтап, массив элементтері мәндерін қашан пернетақтадан енгізгенше күтіп тұрады, бұл жерде К айнымалысы цикл параметрі қызметімен қоса массив индексі ретінде де қолданылып тұр.
Кейде бағдарламаның әр орындалуында массив элементтерінің мәндерін қайта-қайта пернетақтадан енгізу керек болады, бұл әсіресе енгізілетін элементтер саны өте көп болған кездерде бағдарлама орындаушы кісіні жалықтырып жібереді, сондықтан бұндай жағдайларда оларды бірден тұрақтылар бөлімінде енгізіп қойса да болады:
CONST N=5;
A:ARRAY[1..N]OF REAL=(40.5, 48, 47.1, 52.3, 11.2);
B:ARRAY[1..9]OF REAL={31,25,40, 1.5,48,54.7, 12.3,54.5,21);
Массив элементтерін шығару процесі де ендіруге ұқсайды. Егер цикл денесінде элементтерді шығару үшін Write операторы қолданылса, онда массив элементтері экранға бір қатарға бір-біріне жабысып жазылып шығады. Бұл жағдайда нәтиженің көрнекілігін арттыру үшін Write операторында массивтен кейін бос орын жазылады. Ал Writeln операторы қолданылса, онда массивтің әрбір элементі жаңа қатарға жазылып шығады.
.......................
For K:=1 To N Do Write(‘A[‘,K,’]=’, A[K], ’ ‘);
… … … … … … … … … … … … … …
К: =1;
Repeat Writeln(A[K]); K:=K+1
Until K>N;
..............................
K: =1;
While K= Begin Write(A[K], ' '); K:=K+1 End;
..............................
Кейбір есептеулерде белгілі бір шарттың орындалуына байланысты массив элементтерін іздеп табу керек болады. Ол үшін цикл арқылы массивтің барлық элементтерін берілген шамамен салыстыру процесін ұйымдастыру керек. Егер циклдің әр орындалуында массивтің жаңа элементі берілген шартты қанағаттандырса, онда бұл элемент ізделінген элемент болып табылады. Мысалы:
1. Массивтің 5-ке тең элементтерін экранға шығару:
…….If A[K]=5 Then Write(A[K], ' ');……
2. Массивтің жұп элементтерінің нөмірлерін (индекстерін) шығару:
…….If A[K] Mod 2=0 Then Write('K=', К, ' ')…….
3. Массивтің 7-ден үлкен және 15-тен кіші элементтерінің санын табу:
N:=0; .... If (A[K]>7) And (A[K]< 15) Then N:=N+1; …….
Writeln('N=', N);
4. Массивтің 10-нан үлкен элементтерінің қосындысын табу:
S:=0; ……. If A[K]>10 Then S:=S+A[K]; …….
Writeln('S=', S );
2. Массивтерді сұрыптау әдістері.
Сұрыптау – қазіргі заманда мәліметерді өңдеу процессінің кең тараған түрлерінің бірі. Сұрыптау деп – массив элементтерін белгіленген ережелер бойынша орналастыру болып табылады. Мысалы, массивті өсуі не кемуі бойынша сұрыптау.
2.1 Ауыстырмалы сұрыптау («көпіршік» тәсілі)
Алгоритм 1-ші мен 2-ші элементтерді салыстырудан басталады. Егер 2-ші элемент 1-шіден кіші болса, онда оларды орындарымен алмастырылады. Бұл процесс қатар тұрған әр жұп элементтері үшін қайталанады, процесс бүкіл N элементтері өңделмейінше қайталанады. Массивтің бір «өтімінен» кейін ең үлкен элемент ең артқы (N-ші) орынға тұрғызылады. Алгоритм жалғаса береді, сонда p-ші өтім кезінде алғаш (N-p) элементтері оң жақтағы көрші элементтерімен салыстырылады. Егер келесі бір өтімде алмастырулар болмаса, алгоритм өз жұмысын тоқтатады. Соңында ең «жеңіл» элементтер алгоритм орындалуы барысында біртіндеп «қалқып шығады».
for i := 1 to n-1 do
for j := n-1 downto i do
if a[j] > a[j+1] then begin
x := a[j];
a[j] := a[j+1];
a[j+1] := x;
end;
2.2 Қойылымды сұрыптау
Басында алғаш тұрған екі элемент сұрыпталады. Олар сұрыпталған S жиынын құрайды. Келесі элемент алынып, сұрыпталған S жиынына сол жағындағы элементтері одан кіші етіліп, ал оң жағынан артық болып қойылады. Берілген элементті жиынға тұрғызу орны – аралықты жартыға бөлу арқылы табылады. Алгоритм өз жұмысын аяқтайды сол жағдайда, қашан N-ші орында тұрған элемент өңделіп болады.
2.3 Таңдап алу арқылы сұрыптау
N элементтерден құралған массивінің ең үлкен элементі табылады (ол p нөмерінде тұр делік), ол N-ші орында тұрған элементімен орындарын ауыстырылады, мұнда бір шарт сақталуы тиіс: N <> p, яғни олар тең болмауы керек. Қалған (N-1) элементтерден тағы да ең үлкені таңдап алынады да, N-1 орында тұрған элементпен алмастырылады. Өз жұмысын алгоритм 1-ші және 2-ші орындарда тұрған элементтер сұрыпталғаннан кейін ғана өз жұмысын тоқтатады. Ол үшін N-1 өтім керек болады екен. Осылай ең кіші элементтерді сұрыптауға да қолдануға болады.
for i := 1 to n-1 do begin
k := i; x := a[i];
for j := i+1 to n do
if a[j] < x then begin
k := j;
x := a[j];
end;
a[k] := a[i];
a[i] := x;
2.4 Екі өлшемді массивтер (матрица)
Екі өлшемді массив деп – элементі массивтің жол мен бағанында тұрған орнына тәуелді болатын массив. Жалпы түрде матрицаның элементтері былай белгіленеді A(I,J), мұндағы A – массивтің аты, I - жолдың индексі (нөмері), J – бағанның индексі (нөмері).
Turbo Pascal тілінде екі өлшемді немесе көпе өлшемді массивтермен жұмыс істеу үшін, олар сипаттау бөлімінде көрсетілуі тиіс.
Екі өлшемді массивті немесе матрицаны екі түрлі тәсілмен жазуға болады:
I. <матрицаның аты>: array[жол саны] of array[баған саны] of <айнымалының типі>;
II. <матрицаның аты>: array[<жол саны>, <баған саны>] of <айнымалының типі>.
A [n, m] массивін сипаттау жолы:
i
А массиві: 1 2 3 ... n
j
1
2
.
..
m
var
A: array [1..n, 1..m] of integer;
Екі өлшемді массивті енгізу:
FOR I := 1 TO N DO
FOR J := 1 TO M DO
READ(A[I, J]);
Мысал. Берілген жиырма бес элементтен тұратын B[5, 5] екі өлшемді массивке бөлшек сандар енгізіп, оларды дисплейге кесте түрінде шығару бағдарламамасы:
{$R}
PROGRAM MAS; {Бағдарламама атауы}
Type {Типтерді сипаттау бөлімі}
Max = array [1..5, 1..5] of real; {Шарт бойынша массив типі}
Var {айнымалыларды сипаттау бөлімі}
В: Mas; {Mas типті В - массиві}
I, J: integer; {циклды басқару айнымалылары}
BEGIN {негізгі бағдарламама басы}
WRITELN(‘В – массивінің элементтерін енгізіңіз:’);
FOR I := 1 TO 5 DO {I – бойынша циклі}
FOR I := J TO 5 DO {J – бойынша циклі}
READ(A[I, J]); {B[I, J] массивіне нақты сандарды
енгізу операторы}
FOR I := 1 TO 5 DO {I – бойынша циклі}
BEGIN
FOR I := J TO 5 DO {J – бойынша циклі}
WRITE(B[I, J], ‘ ‘); {B[I, J] массивінің элементін дисплейге шығару операторы}
WRITELN;
END;
END. {негізгі бағдарламама соңы}
Квадрат матрицада индекстердің ара қатынасы
I=J – матрицаның элементтері бас диагональ бойында орналасқан.
I I>J - элементтер бас диагональдың астында орналасқан
I+J=N+I – элементтер
қосалқы диагональ бойында
I+J I+J>N+I – элементтер қосалқы диагональдың астында орналасқан.
Массивтерді қолдану ережелері
Анализ кезінде келесі екі сұраққа жауап беру керек:
1) Берілген есепті шешу үшін массив керек пе?
2) Егер керек болса, онда оның көлемі қандай болуы керек?
Массивті қолдану керек пе?
Бірінші сұрақтың мәні мынада: массивті тек қана ең керекті жағдайларда ғана қойдалану тиімді. Осыған үш себеп бар:
Бағдарламаманың үлкею, яғни қиындау барысында, көп массивті қолдана отырып, индекстері де өсе береді. Сонда қателер саны де көбейе бастайды. Бағдарламаманың кодын оқу қиынға түседі.
Массив үлкен көлемдерге
өте тез жетеді және жадыдан
көп орынды қажет етеді.
Массивсіз есепті
шешу кезінде, кейбір
Массивтің көлемі қандай болуы керек?
Мұндай сұрақ міндетті түрде қойлыуы тиіс, себебі массив дәл мәндермен сипатталуы керек. Т массивінде алғашқыда белгісіз элементтер саны болсын делік. Ол 60 немесе 80 мәнге ие бола алсын. Яғни мұнда ол 100-ден артық мәнге ие бола алмайды, осыдан былай жазсақ, 40 ұяшық босқа қалады. Бірақ, егер берілген өлшемге бір орын жетпей қалса, онда әрине біз оған өкінеміз.
Мысал. Натурал
сандардан тұратын N*M матрицасы
берілген. Одан ең кіші элементті
және оның алатын орнын
Бұл есептің шешуінің бірнеше жолы бар. Айталық, массив элементтеріне параллель баруға және бірнеше рет қарап шығуға болады, матрицаны екі рет қарап шығуды да ұйымдастырылуы да мүмкін. Бір қарағанда ең кіші элементті табамыз, егер осындай элементтер бірнешеу болса, онда екінші қарап шығарда олардың орнын анықтаймыз.
PROGRAM MATTR 8:
CONST t=100; s=100;
VAR A :ARRAY [1..T,1..S] OF INTEGER;
N,M, IM,JM,I,J,MIN,K:INTEGER;
BEGIN
WRITE( ‘Жол санын енгіз’);
READLN(N);
WRITE(‘Бағана санын енгіз’);
READLN (M);
FOR i=1 TO N DO
BEGIN
WRITELN (‘Сандарды бос орын арқылы енгіз’,M);
FOR j:=1 TO M DO
READ(A[i,j])
END;
MIN:=A[1,1];
IM:=1;JM:=1;K:=O ;
FOR i:=1 TO N DO
FOR j:=1 TO M DO
IF MIN >A[i,j] THEN
BEGIN
k:=1; im:=i; jm:=j
min:=A[i,j]
END
ELSE
If min =A[i,j] THEN k:=k+1;
If k=1 THEN
BEGIN
WRITELN (‘матрицада бір ең кіші элемент =’,min);
WRITELN (‘B’,im,’жол,B’,jm,’бағана’)
END
ELSE
BEGIN
WRITELN (‘матрица’,k,’ ең кіші элемент =’,min);
FOR i:=im TO N DO
FOR j:=1 TO M DO
IF min=A[i,j] THEN WRITELN(‘жолда’,i,’бағанада’, j)
END;
END.
Есепті шешу үшін:
* айнымалыларды сипаттаймыз;
* А массив ұзындығы мен массив элементтерінің мәнін енгіземіз
* массив элементтеріне қарап, ең кіші мәнін іздейміз және мәнін индекс есіне сақтаймыз;
* ең кіші элементтер санын есептейміз;
Барлық ең кіші элементтер туралы информацияны шығару үшін:
* К-нің санына қарай
не бір ғана ең кіші элемент
туралы информацияны шығарамыз,
Айнымалылар:
А – екі өлшемді массив;
N,M- массивтің жолдары мен бағаналар саны;
I,J-(массивтің) циклдің айнымалылары;
К- ең кіші элементтер саны;
IM,JN-ең кіші элементтің жолы мен бағанасы;
MIN-ағымдағы минимум;
Осы есепті матрицаны бір қарап өтіп те шешуге болады. Мұндай жағдайды көмекші екі сөйлемді массив енгізу қажет. Массивке ең кіші элементтердің жолдары мен бағандардың мәні енгізіледі;

- Массив целых чисел тремя методами
- Массивы
- Массивы
- Массивы
- Массивы в языке Паскаль
- Массивы данных в Турбо Паскале
- Массивы. Основные алгоритмы обработки массивов на примере языка программирования Pascal
- Масова коммуникация
- Масові комунікації
- Масонство в России: политические и религиозно-этические аспекты деятельности
- Масоны и заговор декабристов
- Массаж и самомассаж
- Массаж кистей рук,назначение,физиологическое действие массажа,техника массажа кистей рук
- Массаж при хроническом гастрите и гастроптозе