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



МАЗМҰНЫ

КІРІСПЕ ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...4
1 ТЕОРИЯЛЫҚ НЕГІЗІ ЖӘНЕ АҚПАРАТПЕН ЖАБДЫҚТАЛУЫ
1.1 Массивтерді сипаттау ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...5
1.2 Массив элементтерін өңдеу ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .8
2 МАССИВ ЭЛЕМЕНТТЕРІН СОРТТАУ
2.1 Берілген шарттарға байланысты массив элементтерін сорттау ... ... ... ..12
2.2 Екі өлшемді массивтерді өңдеу ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..17
2.3 Массивтегі циклдік орын ауыстыруды программалау ... ... ... ... ... ... ... 18
3 ЭЕМ.ДА ЕСЕПТЕРДІ ШЕШУ ЖӘНЕ ТАЛДАУ
3.1 Бір өлшемді массивті паскаль тілінде өңдеу ... ... ... ... ... ... ... ... ... ... ... 21
3.2 Екі өлшемді массивті паскаль тілінде өңдеу ... ... ... ... ... ... ... ... ... ... ... 22
ҚОРЫТЫНДЫ ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...25
ҚОЛДАНЫЛҒАН ӘДЕБИЕТТЕР ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 26
КІРІСПЕ

Курстық жұмыстың тақырыбы: Паскаль тілінде бір өлшемді массивтермен жұмыс жасау.
Курстық жұмыстың мақсаты: Турбо Паскал программалау ортасында бір өлшемді және екі өлшемді массивтерді күрделі есептерді шешуде қолдануды үйрену.
Ақпараттық коммуникациялық технологиялардың қарқынмен дамып, күнделікті тұрмысқа енуіне байланысты соңғы кездері программалауға деген қызығушылықтың арта түскені белгілі. Қазіргі уақытта компьютерсіз қандай да бір жұмыс істейтін адамға қандай да бір ұмтылысты тудыруы мүмкін.
Есептеуіш техниканың қарқынмен дамуы тиімді программалық құралдарды жасау – объектілі бағдарланған программалау жүйелерінің жасалуына әкелді. Жылдам құру жүйесінің негізіне (RAD-Rapid Application Development –қосымшаларды жылдам құру ортасы)визуалды жобалау мен оқиғалы объектілі бағдарланған программалау технологиясы алынған. Мұндай программалаудың мәні – программа жасаушы құрал жұмыстың көп бөлігін өзі атқарып, программистке диолог терезелерін құрастыру мен оқиға өңдеушіні құру жұмыстарын қалдырады. RAD жүйелерінің ішінде Borland Delphi және Visual Basic орталары әртүрлі программалар құруға мүмкіндік береді: қарапайым бір терезелік қосымшалардан бастап, үлестірілген мәліметтер қорын басқару программаларына дейін. Borland Delphi ортасындағы программалау тілі Object Pascal тілі.
Программалау іскерлігін үйрену үшін нақты есептер шығарып, программасын жаза білу қажет. Ол үшін программалау тілі мен оны құру ортасын меңгеру керек. Объектілі бағдарланған программалау жүйелерінде программалаудағы негізгі ерекшелік алдымен программалау синтаксисі мен компоненттерді пайдалануды үйренуде болып табылады.
Бұл ұсынылып отырған оқу құралдарында объектілі бағдарланған программалау жүйелерінің негіздері берілген. Оқу құралын Delphi ортасында программалауға қажетті теорилық материалдар мен мысалдар келтірілген. Әрбір тараудың соңында теориялық материалдарды бекітуге арналған бақылау сұрақтары мен жаттығулар берілген.
ПАЙДАЛАНЫЛҒАН ӘДЕБИЕТ ТІЗІМІ

1. Абрамов В.Г., Трифонов Н.П., Трифонова Г.Н. Введение в язык Паскаль. - М.: Наука, 1988. - 320 б.
2. Абрамов С.А., Зима Е.В. Начала программирования на языке Паскаль. - М.: Наука, 1987. - 112 б.
3. Вирт Н. Алгоритмы и структуры данных./ Ағылшан тілінен аударылған. М.: Мир, 1989. - 360 б.
4. Грогоно П. Программирование на языке Паскаль. - М.: Мир, 1982. - 382 б.
5. Дантеманн Дж., Мишел Дж., Тейлор Д. Программирование в среде Delphi: Ағылшан тілінен аударылған. - Киев: НИПФ “ДиаСофтЛтд.”, 1995. - 608 б.
6. Епанешников А., Епанешников В. Программирование в среде Турбо Паскаль 7.0. - М.: ДИАЛОГ-МИФИ, 1993. - 288 б.
7. Йенсен К., Вирт Н. Паскаль. Руководство для пользователя и описание языка: Пер. с англ. - М.: Финансы и статистика, 1982. - 151 б.
8. Матчо Дж., Фолкнер Д.Р. Delphi: Пер.с англ.- М.: БИНОМ, 1995. - 464 б.
9. Орлик С.В. Секреты Delphi на примерах: - М.: БИНОМ. - 316 б.
10. Перминов О.Н. Программирование на языке Паскаль. - М.: Радио и связь, 1988. - 224 б.
11. Пильшиков В.Н. Сборник упражнений по языку Паскаль: Учеб. пособие для вузов. - М.: Наука, 1989. - 160 б.
12. Прайс Д. Программирование на языке Паскаль: Практ. руководство. - М.: Мир, 1987. - 232 б.
13. Рубенкинг Н. Турбо Паскаль для Windows: В 2 т.; Ағылшан тілінен аударылған - М.: Мир, 1993. - 536 б.
14. Фаронов В.В. Турбо Паскаль. В 3-х книгах. Книга 1. Основы Турбо Паскаля. - М.: Учеб.-инж.центр МВТУ-ФЕСТО ДИДАКТИК, 1992. - 304 б.
15. Фаронов В.В. Паскаль и Windows. - М.: Учеб.-инж.центр МВТУ-ФЕСТО ДИДАКТИК, 1994. - 539 б.
16. Фаронов В.В. Практика Windows-программирования. М.: Информпечать, 1996. - 247 б.
17. Федоров А., Рогаткин Д. Borland Pascal в среде Windows. - Киев: Диалектика, 1993. - 656 б.
18. Форсайт Р. Паскаль для всех: Ағылшан тілінен аударылған.- М.: Машиностроение, 1986. - 288 б.

Мазмұны

Кіріспе ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... ... ... ... ... ... ... ... ...4
1 Теориялық негізі және ақпаратпен жабдықталуы
1.1 Массивтерді
сипаттау ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
... ... ... ...5
1.2 Массив элементтерін
өңдеу ... ... ... ... ... ... ... .. ... ... ... ... ... ... ... ... ... ... ..
..8
2 Массив элементтерін сорттау
2.1 Берілген шарттарға байланысты массив элементтерін
сорттау ... ... ... ..12
2.2 Екі өлшемді массивтерді
өңдеу ... ... ... ... ... ... ... .. ... ... ... ... ... ... ... ... ... .17
2.3 Массивтегі циклдік орын ауыстыруды
программалау ... ... ... ... ... ... ... .18
3 ЭЕМ-да есептерді шешу және талдау
1. Бір өлшемді массивті паскаль тілінде
өңдеу ... ... ... ... ... ... ... .. ... ... ... ..21
2. Екі өлшемді массивті паскаль тілінде
өңдеу ... ... ... ... ... ... ... .. ... ... ... ..22
ҚОРЫТЫНДЫ ... ... ... ... ... ... .. ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... ... ... ... ... ... .25
ҚОЛДАНЫЛҒАН
ӘДЕБИЕТТЕР ... ... ... ... ... ... . ... ... ... ... ... ... ... ... ... ... ..
... ..26

Кіріспе

Курстық жұмыстың тақырыбы: Паскаль тілінде бір өлшемді массивтермен
жұмыс жасау.
Курстық жұмыстың мақсаты: Турбо Паскал программалау ортасында бір
өлшемді және екі өлшемді массивтерді күрделі есептерді шешуде қолдануды
үйрену.
Ақпараттық коммуникациялық технологиялардың қарқынмен дамып, күнделікті
тұрмысқа енуіне байланысты соңғы кездері программалауға деген
қызығушылықтың арта түскені белгілі. Қазіргі уақытта компьютерсіз қандай
да бір жұмыс істейтін адамға қандай да бір ұмтылысты тудыруы мүмкін.
Есептеуіш техниканың қарқынмен дамуы тиімді программалық құралдарды
жасау – объектілі бағдарланған программалау жүйелерінің жасалуына әкелді.
Жылдам құру жүйесінің негізіне (RAD-Rapid Application Development
–қосымшаларды жылдам құру ортасы)визуалды жобалау мен оқиғалы объектілі
бағдарланған программалау технологиясы алынған. Мұндай программалаудың мәні
– программа жасаушы құрал жұмыстың көп бөлігін өзі атқарып, программистке
диолог терезелерін құрастыру мен оқиға өңдеушіні құру жұмыстарын
қалдырады. RAD жүйелерінің ішінде Borland Delphi және Visual Basic орталары
әртүрлі программалар құруға мүмкіндік береді: қарапайым бір терезелік
қосымшалардан бастап, үлестірілген мәліметтер қорын басқару программаларына
дейін. Borland Delphi ортасындағы программалау тілі Object Pascal тілі.
Программалау іскерлігін үйрену үшін нақты есептер шығарып, программасын
жаза білу қажет. Ол үшін программалау тілі мен оны құру ортасын меңгеру
керек. Объектілі бағдарланған программалау жүйелерінде программалаудағы
негізгі ерекшелік алдымен программалау синтаксисі мен компоненттерді
пайдалануды үйренуде болып табылады.
Бұл ұсынылып отырған оқу құралдарында объектілі бағдарланған
программалау жүйелерінің негіздері берілген. Оқу құралын Delphi ортасында
программалауға қажетті теорилық материалдар мен мысалдар келтірілген. Әрбір
тараудың соңында теориялық материалдарды бекітуге арналған бақылау
сұрақтары мен жаттығулар берілген.

1 Теориялық негізі және ақпаратпен жабдықталуы
1.1 Массивтерді сипаттау

Паскаль тілінде жеке-дара мәліметтермен қатар, қандай да бір жүйеде
жиналыстырылған олардың топтарын да қарастыруға болады. Осындай топтардың
бірі - құрылымдық типті ARRAY (массив) мәліметтері.
Массив дегеніміз - бір типті шамалардың реттелген белгілі бір тобы.
Массивке кіретін айнымалыларды массивтің элементтері дейіді, олардың саны
сипаттама бөлімінде жарияланып анықталады да, программаның орындалу
барысында өзгермейді. Массив элементтерінің типі файлдан басқа кез келген
(бүтін, нақты, символдық, жолдық, массивтік т.б.) типті бола алады. Яғни
Паскаль тілінде жолдар массивін, символдар массивін, массивтер массивін
т.с.с. қарастыруға мүмкіншілік бар. Массив элементтерінің типін массивтің
негізгі базалық типі деп атайды.
Массив тұтасымен бір атпен аталады, ал элементтерінің реті индекс
арқылы көрсетіледі. Индекс массивтің идентификаторынан соң тік жақшаға
алынып жазылады, мысалға: a[1], a[2], a[3],... a[i],... a[n]. Индекстің типі
массив элементтерінің ретінің өзгеру аралығын көрсетеді де, шектелген жай
типтердің (байттық, логикалық, аралық, атау) бірімен беріледі. Массивтің
типін анықтау үшін Array ... of (тұратын массив) қызметші сөздері
қолданылады. Массив алдын ала типтерді сипаттайтын Type тарауында
жарияланады немесе айнымалылар Var тарауында аталады.
Жазылуының жалпы түрі:
Type
Массив аты=array[индекстер типі]: ofэлементтер типі;
Var
айнымалылар:типтің аты;
Мұндағы: индекстер типі - 1-индекс, 2-индекс, ...
элементтер типі - массивті құрайтын негізгі элементтерінің типі.
Немесе массив айнымалылар тарауында анықталуы:
Var
Массив аты:array[индекстер типі]:ofэлементтердің типі;

Бір өлшемді массивтердің жариялануын көрсететін мысал.
Бірінші түрі.
Var
M1:array[1..10] of integer; - 10 бүтін саннан тұратын массивті
жариялау.
Осы жариялау арқылы келесі айнымалылар келтіріледі:
M1[1] M1[2] M1[3] ...M1[10]
Тура осылай басқа да типті элементтерден тұратын массивтерді жариялауға
болады, мысалға:
M2:array[1..14] of Char; - 14 символдан тұратын массив.
M3:array[1..100] of Real; - 100 нақты саннан тұратын массив.
M4:array[1..5] of string; - 5 тестік жолдан тұратын массив.
M5:array[1..7] of Boolean; - 7 логикалық типті элементтерден тұратын
массив.
Егер де екі массив элементтерінің типі бірдей болса және бірдей типті
индекстері бар болса, онда бұл массивтерді (қатынас = немесе амалдарын
қолданып) тұтасымен бір бірімен салыстыруға болады. Бірақ бұл операциялар
өте сирек пайдаланады, әдетте массивті өңдеу элементтері бойынша
жүргізіледі. егер де массив жарияланса, онда массивтің кез келген элементін
шақыру үшін массивтің аты және де тік жақшаларымен шектелген массивтегі
элементтің реттік нөмірі (индексі) жазылуы тиіс.
Екінші түрі.
Жоғарыда көрсетілген мысалдарда массив тікелей айнымалылар Var
тарауында анықталуы қарастырылады, бірақ бұрынырақ айтқанымыздай массив
көбінесе Type тарауында жарияланады да, кейін айнымалылар Var тарауында осы
жарияланған типті айнымалылар аталады, мысалға,
Type
R1: array [1..10] of integer;
R2: array [1..6] of Char;
R3: array [1..3] of real;
R4: array [1..8] of string;
R5: array [1..5] of Boolean;
Бұл жағдайда, массивтердің типтері алдын ала типтер тарауында
анықталғандықтан, айнымалылар тарауында массивтер жариялануы келесі түрде
болады:
Var
M1 : R1;
M2 : R2;
M3 : R3;
M4 : R4;
M5 : R5;
Массивті Type тарауында жариялаудың басымдылығын келесі нақты мысалдан
көруге де болады.
Type
Gruppa=(G1,G2,G3,G4);
Famil=array(byte) of char;
AI=(I,II,III,IV,V,VI,VII,VIII,IX,X, XI,XII);
Var
B2:Famil;
N2:array[1..60] of integer;
M3:array[‘a’..’d’] of gruppa;
Vector:array[1..10] of real;
M5:array[AI] of 28..31;
LOG: array[boolean] of integer;
B2 бұл мысалда типтер тарауында жарияланған Famil типімен сипатталған,
мұнда индекстің типі байттық (byte) болғандықтан, B2 массиві char типті 255
элементтен (В2[0],B2[2],...B2[255]) тұрады.
N2 бірден айнымалылар тарауында сипатталған integer типті 60 элементтен
(N2[1],N2[2],...N2[60]) тұрады.
M3 бірден сипатталған G1,G2,G3,G4 мәндерінің бірін қабылдай алатын 4
элементтен (M3[‘a’]), (M3[‘b’]), (M3[‘c’]), (M3[‘d’])
Vector real типті 10 элементтен (Vector[1], Vector[2], ..., Vector[10])
тұрады.
M5 массивінің индексінің типі AI аталу типімен берілген, яғни
элементтері: M5[I],M5[II], M5[III],... түрінде көрсетіледі де, 28, 29, 30, 31
сандарының бірін қабылдайды.
LOG массиві индексінің типі логикалық, яғни екі бүтін саннан тұратын
массив. (LOG(True):=9; LOG(False):=4).
Массивтің индексі мен элементтерінің мәндерін ажырата білу керек:
индекстің көмегімен элементтің мәнін табамыз. Мысалға М5 массивінің
элементтерінің орналасуын схема түрінде көрсетейік.
31 28 31 30 31 30 31 30 31 30 31 30 I II III IV V VI
VII VIII IX X XI XII
Жоғарыда бірінші жолдың ұяшықтарында массив элементтерінің мәндері, ал
екінші жолда массив элементтерінің индекстері келтірілген, яғни
М5[I]=31, М5[II]=28,... М5[VII]=31.
Егер массивтің негізгі (базалық) типі массивтік болса, онда қарастырып
отырған массивтің өлшемі жоғарылайды.
Мысал.
Type
Vector=array[1..3] of integer;
Matrix=array[1..5] of vector;
Var
A: matrix:
Мұндағы А - екі өлшемді массив болып табылады, элементтері А[1][2]
немесе А[1.2] түрлерінің бірімен көрсетіледі.
А массивін былайша сипаттауға да болатын еді:
Var
A: Array[1..3, 1..5] of integer;
Осылай кез келген өлшемді массивтерді сипаттауға болады. Паскаль
тілінде массивтің өлшеміне шек қойылмайды, ол тек падаланатын компьютер
жадының сыйымдылығымен шектеледі.
Іс жүзінде бір және екі өлшемді массивтер жиі қолданылады. Жалпы бір
өлшемді массив элементтерін вектор, ал екі өлшемді массив матрица
ұғымдарымен парапар болып саналады.
Массивті сипаттау үшін алдына ала анықталған тұрақтылар да пайдаланады:
Const
T1 = 4; T2 = 6;
Var
Tab1Y: array[1..T1, 1..T2] of real;
Массив элементтері жадыда жүйелі түрде бірінен соң бірі орналасады.
Мысалы M: array[1..3,1..3] of integer массивінің элементтері жадында
индекстерінің өсуі бойынша келесі түрде орналасады:
M[1,1] M[1,2] M[1,3] M[2,1] M[2,2] M[2,3] M[3,1] M[3,2]M[ 3,3]

2. Массив элементтерін өңдеу

Массив жарияланған соң оның әр элементі массив идентификаторы арқылы
шақырылып, өңдеу процесіне қатыса береді. Мысалы келесі жазу Fam[3] болсын,
онда Fam массивінің үшінші элементін, ал Tabl[2,3] - екі өлшемді Tabl
массивінің 2-жолы мен 3-бағанасының қиылысқан элементін шақыруға мүмкіндік
береді.
Массив элементтерін өңдеу операцияларына мысалдар қарастырудан бұрын
келесі үш массивке және төрт қосымша айнымалыға сипаттамасын келтірейік:
Var
A,D : array [1..4] of real;
B : array [1..10,1..15] of integer;
I,J,K : integer;
S : real;
Массив элементтеріне бастапқы мәндерін меншіктеу. Бұл ұғым массивтің
әр элементіне базалық типке сәйкес болатын бір мәнді меншіктеуді білдіреді.
Бұл операцияның For операторы арқылы орындалуы тиімді болады:
For I:= 1 to 4 do A[I]:=0;
Екі өлшемді массив элементтеріне бастапқы мәнді меншіктеу үшін
бірінің ішіне бірі орналасқан For операторлары арқылы ұйымдастырған жөн:
For I:= 1 to 10 do
For J:= 1 to 15 do
B[I,J]:=0;
Паскаль тілінде массив элементтерінің барлығын тұтасымен экранға
немесе баспаға шығаратын құралдары жоқ болғандықтан шығару элементтеп
жүргізіледі.
Массив элементтерінің мәнін жоғарыда көрсетілгендей меншіктеу
операторы арқылы жүргізуге болады, бірақта іс жүзінде олардың мәндері Read
немесе Readln операторлары арқылы клавиатурадан енгізіледі:
For I:=1 to 4 do Readln(A[I]);
Ал екі өлшемді массив үшін:
For I:=1 to 15 do
Readln(B[I,J]);
Программада Readln операторын пайдалануға байланысты енгізілетін әр
шама жаңа жолдан бастап жазылады.
Массив элементтерін экранға немесе баспаға шығару үшін енгізуге ұқсас
программалар жазылады, бірақ Read, Readln орнына Write немесе Writeln
операторлары пайдаланылады:
For I:=1 to 4 do
Writeln (A[I]); {А массивінің элементтерін шығару}
Ал екі өлшемді массив үшін:
For I:=1 to 10 do
For J:=1 to 15 do
Writeln (B[I,J]); {B массивінің элементтерін шығару}
Массив элементтерін көшіру үшін бір массивтің барлық элементтерінің
мәндерін екінші массивтің элементтеріне меншіктеу керек, қойылған мақсатқа
жету үшін программада бір меншіктеу операторы А:=D немесе For операторынан
құрылған операторлық жол жеткілікті:
For I:=1 to 4 do A[I]:=D[I];
Екі жағдайда да D массивінің элементтері өзгеріссіз қалады, ал А
массивінің элементтерінің мәндері D массивінің элементтерінің мәндеріне тең
болады.
Кейде массив бойынша белгілі бір шартқа сәйкес болатын элементтерін
табу керек болады. Мысалы М массивінің неше элементінің мәні нөлге тең? Бұл
сауалға жауап беру үшін К - қосымша айнымалысын және For мен If
операторларын пайдаланамыз. К айнымалысын М массивінің нөлдік элементтер
санын сақтауға арнайық. Енді программа келесі түрде жазылады:
K:=0;
For I:=1 to 5 do
If M[I] = 0 then K:=K+1;
Циклдік қайталану орындалып болған соң К айнымалысында нөлдік мәнде
элементтер саны есептелінеді. К-ның бастапқы мәні 0-ге тең болып,
программада For - операторына дейін жазылады.
Массив элементтерінің орнын ауыстыру да қосымша айнымалыны (К массивтің
базалық типіне сәйкес болуы керек) енгізу арқылы шешілетін мәселе. Мысалы М
массивінің төртінші және екінші элементтерінің орнын ауыстыру керек болса:
Kos:=M[4]; {Kos-қосымша айнымалы}
M[4]:= M[2];
M[2]:= Kos;
Іс жүзінде бірқатар экономикалық статистика есептерін программалауда
массив элементтерін сұрыптау, белгілі бір шартқа байланысты іріктеу немесе
ретке келтіру операциялары жиі орындалады.
Программалаудағы массив типті мәліметтерді өңдеуге арналған тәсілдерін
көрсету мақсатымен төмендегі бірнеше мысалдарды қарастырайық.
1.1. Мысал. Бір өлшемді А(i) (мұнда i = 1, 2, ..., N) массивінің
элементтерінің S қосындысын және P көбейтіндісін есептейтін алгоритмін құру
қажет. Есептеуде массив элементтерінің саны 20 болсын.
Осы N нақты сандар тобын А массив деп қарастырсақ, массивтің
элементтері а[1], a[2], ..., a[20] нақты сандар болады.
Бұл мысалда қарастырылатын жағдайлар, яғни бір өлшемді массив
элементтерінің көбейтіндісі мен қосындысын табу, негізінде екі өз бетінше
қарастырылатын есептер. Оларды бір алгоритмде қарастырылуы тек олардың
біркелкілігі.
а) б)

жоқ
ия

1-сурет. Бір өлшемді массив элементтерінің қосындысы мен көбейтіндісін
табу алгоритмі (а); модификация блогын қолданып құоылған алгоритм (б)

Program M61;
Var
i: integer;
A: array[1..20] of real;
S,P: real;
Begin
For i:=1 to 20 do Read(a[i]);
S:=0; P:=1;
For i:=1 to 20 do
Begin
S:=S+a[i]; P:=P*a[i];
End;
Writeln (‘қосынды=’, S:6:2);
Writeln (‘көбейтінді=’, P:6:2);
End.
Бұл программада 20-ға тең болатын тұрақты мән үш рет қайталанады, ал
егер массив элементтерінің саны өзгеретін болса, программаға да бірнеше
өзгерістерді енгізуге тура келеді, сондықтан массив элементтерінің санын
тұрақтылар тарауында анықтап алу тиімді болып табылады. бұл жағдайда
жоғарыда келтірілген программа төмендегі түрге келтіріледі.
Program M1_1;
Const
N=20;
Var
i: integer;
A: array[1..N] of real;
S,P: real;
Begin
For i:=1 to N do Read(a[i]);
S:=0; P:=1;
For i:=1 to N do
Begin
S:=S+a[i]; P:=P*a[i];
End;
Writeln (‘қосынды=’, S:6:2);
Writeln (‘көбейтінді=’, P:6:2);
End.
Енді программада массив элементтерінің санын өзгертетін болсақ, онда
программаға тек бір ғана өзгеріс еңгізіледі, ол: N тұрақтысы программада
қайта анықталады.

1. Массив элементтерін сорттау

2.1 Берілген шарттарға байланысты массив элементтерін сорттау.

Алдын ала қойылған талаптарға сәйкес келетін массив элементтерін
іріктеу жағдайларын ұйымдастыратын келесі мысалдарды қарастырайық.
1.2-мысал. Белгілі бір U шартын қанағаттандыратын А(i), (мұндағы i =
1,2,3,...N) массив элементтерінің қосындысы мен санын анықтауға арналған
программа құру қажет болсын.
Берілген мәліметтер: A(N) массиві;
N - массив өлшемі;
i - цикл параметрі;
параметрдің бастапқы мәні - 1;
параметрдің соңғы мәні - N;
Қорытындысы: S - U шартын қанағаттандыратын A(i) массивінің
элементтерінің қосындысы;
k - U шартын қанағаттандыратын массив элементтерінің жалпы
саны;

...

Массивтің элементтерін енгізу (циклде
орындалады)

S пен K-ға бастапқы мәндерін меншіктеу

U шартын тексеру (мысалдың нақты шарты
жазылуы тиіс)
жоқ

ия
U шарты орындалса S пен K мәндерін
өзгерту

ия жоқ
Циклдің қайталану шартын тексеру

...

2-сурет. U шартын қанағаттандыратын бір өлшемді массив элементтерінің санын
және қосындысын табу алгоритмнің үзіндісі

Массив элементтерінің қосындысын немесе көбейтіндісін анықтайтын
есептеріндегі сияқты белгілі бір шартты қанағаттандыратын массив
элементтерінің жалпы санын есептегенде қорытындыланатын нәтижені арнайы бір
шамаға меншіктеліну талабы қойылады. Қарастырылып отырған мысалда белгілі
бір U шартын қанағаттандыратын A(i) массив элементтерінің жалпы саны k
айнымалысымен анықталады. Оның бастапқы мәні S айнымалысының бастапқы мәні
сияқты нөлге тең болады.
Алгоритм орындалу барысында U шартын қанағаттандыратын тағы да жаңа бір
элемент анықталатын болса, онда S қосындысына осы элементтің мәні қосылады,
ал k айнымалысына бірлік қосылады, бұл U шартын қанағаттандыратын тағы да
бір элементтің анықталуын көрсетеді, яғни k айнымалысы санаушы (керек
элементтердің саны) ретінде анықталады.
Program M3;
Const
N=20;
Var
i: integer;
A: array[1..N] of real;
S,P: real;
Begin
For i:=1 to N do Read(a[i]);
S:=0; P:=1;
For i:=1 to N do
If a[i] 0 then
S:=S+a[i];
Else
P:=P*a[i];
Writeln (‘қосынды=’, S:6:2);
Writeln (‘көбейтінді=’, P:6:2);
End.
Жоғарыдағы мысалда белгілі бір U шартын қанағаттандыратын массив
элементтерін теруге арналған алгоритмнің нұсқасы келтірілген. Қарастырылған
мысалда U шарты ретінде массив элементтері оң-теріс екені тексеріледі.
Нақты есептерде U шарты ретінде әртүрлі жағдайлар алынуы мүмкін олар,
мысалға:
1.4-мысал. Белгілі бір U шартын қанағаттандыратын А(i), массив
элементтерінен жаңа B(j), массив элементтерін құрастыру керек (мұндағы i =
1,2,...,N,j=1,2,...,M).
Берілген мәліметтер: А(N) массивтің элементтері - аi;
N - A массивінің өлшемі;
Нәтижесі: bj элементтерден тұратын жаңа B(M) массиві (мұндағы M - B
массивінің өлшемі)
Бұл мысалды шешу алгоритмінің (19-сурет) мағынасы келесіде: А
массивінің әр элементі қарастырылады да, егер де U шартына сәйкес келетіні
анықталса, онда табылған элемент В массивіне жазылады.

...

Массивтің элементтерін енгізу
(циклде орындалады)

Қорытынды В
массивінің санаушысы j-ге бастапқы мәнін

меншіктеу

U шартын тексеру (мысалдың нақты
шарты жазылуы тиіс)
жоқ
ия
U шарты орындалған кезде
j мәнін бірлікке арттыру

U шартын қанағаттандыратын А
массивінің элементін В

массивіне көшіру

А массивінің санаушысының мәнін 1-
ге арттыру

ия жоқ Циклден шығу шартын
тексеру

Қорытынды нәтижені - В массив элементтерін баспаға беру
... (циклде
орындалады)

...

3-сурет. Берілген массив элементтерінен қойылған шартқа байланысты жаңа
массив құрастыру алгоритмнің үзіндісі

Сондықтан құрастыратын алгоритмде А массивінің барлық ... жалғасы

Сіз бұл жұмысты біздің қосымшамыз арқылы толығымен тегін көре аласыз.
Ұқсас жұмыстар
Интерпол картотекасы
Delphi және PASCAL тілдерінде массив ұғымын түсіндіру және массивтерді өңдеу
Си және Си тілініңи көрсеткіштері мен массив элементтері
Хоной башнясы
“Ипподром” ойынын программалау
Python бағдарламалау тілінің тарихы
Turbo pascal тілі туралы ақпарат
Delphi жүйесінде ойын құрастыру
5 ферзі
Си программалау тілі туралы ақпарат
Пәндер