Массивтер және оларды өңдеу.
Массив ұғымы
BASIC тілінде бірыңғай шамаларды массивке біріктіруге болады. Жалпы аты бар бірыңғай элементтердің реттелген жиыны массив болып табылады. Ол математикада вектор ұғымына, ал мектептік алгоритмдік тілде сызықтық кестеге сәйкес келеді. Массивтің аты жай айнымалының атын құрғандағы ережелерге сүйеніп құрылады.
Массивтің әрбір элементіне соңынан индексі келетін массивтің аты меншіктеледі. Сондыќтан да массив элементтерін индексті айырмалар деп те атайды.
Ұйымдастыру тәсілдері бойынша BASIC тілінде бір өлшемді екі өлшемді және көп өлшемді массивтер пайдаланылады. Бір өлшемді массивтің элементі массивтегі элементтің реттік нөмірін анықтайтын бір индекспен көрсетіледі. Мысалы:
А2) –А массивінің екінші элементі;
В1(3) –массивінің үшінші элементі;
С(N)-C массивінің N-ші элементі дегенді білдіреді.
Осылайша, индекстер массивінің атынан соң жақша ішіне орналасады.
Енді екі өлшемді массивке алып келетін мынадай есепті қарастырайық.
Айталық, 11-мөлтек ауданда тұратын тұрғындар саны және бір тұрғынға бөлінетін шаршы метр жер жөнінде деректерді өңдеу керек болсын. Өңдеу және кейбір сұрақтарға жауап алу мақсатында компьютерге деректерді енгізуді былай ұйымдастыруға болады. Мысалы, бір үйде қанша адам тұрады және 22 үй 3-пәтерде тұратын тұрғындарды кезекке қоюға бола ма? т.с.с. сұрақтарға жауап беру керек болсын.
Бұл есепті шешуде екі өлшемді массивті пайдалану ыңғайлы. Біз бірінші айнымалы ретінде үйдің нөмірін, екінші айнымалы ретінде пәтер нөмірін пайдаланамыз. Егер ол құрылып қойылған болса, онда біздің сұрақтарымыздың жауабы ретінде А[22,3] мәні баспаға шығарылады. Мұнда алғашқы индекс үй нөмірін, екіншісі пәтер нөмірін білдіреді. Ал егер А[22,3]=4 мәнін меншіктесе, онда бұл үйде 4 адам тұратын болғаны.
Екі өлшемді массивке математикада матрица, алгоритмдік тілде төртбұрышты кесте мысал бола алады.
Сонымен, екі өлшемді массивтердің элементтері екі индекспен көрсетіледі, оның біріншісі қатардың нөмірін, ал екіншісі бағанның нөмірін анықтайды, екеуінің қиылысында массивтің сәйкес элементі орналасқан болады. Мысалы, А(0,0) екі өлшемді А массивінің нөлдік қатары мен нөлдік бағанына орналасқан элемент; В3(2,3) екі өлшемді В3 массивінің екінші қатары мен үшінші бағанына орналасқан элемент екендігін білдіреді. Екі өлшемді массивтерде индекстер үтірмен бөлінеді. BASIC тілінде индекстер нөлден бастап нөмірленеді.
DIM операторы
Егер индексті өрнек ретінде формула пайдаланатын болса, онда оның мәні есептеліп болғаннан соң бүтін санға дөңгелектенеді. Егер программада массив пайдаланылатын болса, онда олар алдын ала сипатталған болуы тиіс. Бұл компьютерге массивтің құрылымы және өлшемі туралы информация берілуі керек деген сөз. Осы информацияны қабылдау арқылы компьютер өзінің жадында массив элементтерін орналастыру үшін қажетті орын қалдырады. Массивтерді сипаттау үшін DIM (dimension-өлшемділік) операторы қолданылады.
Оператордың жазылу пішімі:
k DIM m1(m1-ң шек.), m2(m2-ң шек.),…, mN(mN-шек)
мұнда k-қатар нөмірі; DIM-оператордың аты; m1, m2,…, mN-массивтің аттары; m1-шек., m2-шек., mN-шек.,…, mN-шек. - m1, m2,…, mN-ге сәйкес массивтің шекаралары. Мұнда массивтің тек жоғарғы шекаралары көрсетілген, өйткені төменгі шекаралары 1-ге тең деп қабылданады.
Егер массив бір өлшемді болса, “m шек.” сол массивтің элементтер санын бүтін сан ретінде көрсететін болады.
Мысалы, мына оператор 10 DIM С(5), D(1,2) С массивінің С(0), С(1), С(2), С(3), С(4) элементтерден тұратын бір өлшемді массив екендігін және D массивінің
D(0,0) D(0,1) D(0,2)
D(1,0) D(1,1) D(1,2)
элементтерден тұратын, екі қатары және үш бағаны бар екі өлшемді массив екендігін білдіреді.
DIM операторы массивке сілтеме жасамастан бұрын программаның басында орналасқаны жөн.
Индекстің ең кіші мәні нөл, ең үлкен мәні DIM операторында хабарланған мәннен асып кетпеуі керек. Егер индекстің мәні бұл шекарадан асып кетсе, онда программаны орындауда қателік кеткендігі жөнінде хабар экранға шығады. Бір өлшемді массивті цикл ішінде FOR және NEXT операторларын қолданып өңдеген ыңғайлы.
Бұл жағдайда цикл параметрі циклдің саны, санау қызметін атқарады және массив элементтерінің индексін белгілеуде қолданылады.
DIM операторында массивтің атынан соң дөңгелек жақша ішінде массив өлшемінің көрсеткіші ретінде мәндері алдын ала анықталған, ендірілген немесе есептелген тұраќты (бүтін типі), әйтпесе айнымалының аты (арифметикалық өрнек) пайдаланылуы мүмкін. Мысалы,
10 INPUT K,L,M
20 DIM D(K), E(L), F(L+M)
.
.
.
Бұл жағдайда D массивіне жадтың К+1 ұясы, Е массивіне (L+M)+1 ұясы бөлінеді.
Программада пайдаланылатын массивтер DIM операторында тек бір рет хабарланады.
Массивті қайталап хабарлаған жағдайда “redimensione arry” (“Массивті екінші рет хабарлау”) хабары экранға шығады. Мысалы, программаның мына төмендегі үзіндісінде:
10 DIM А(10), В(10), С(20)
20 DIM В(30), D(20)
.
.
.
В массиві екі рет хабарланған.
Бірақ массивті ERASE операторын пайдаланып қайтадан хабарлауға да болады. ERASE операторында жойылуға тиісті массивтің аты көрсетіледі. Мысалы, 15 ERASE В операторы В массивін қайта хабарлайды.
Массивтің жеке элементтерімен орындалатын операциялар. Массивтерді ендіру – шығару
BASIC тілінде массивтерді өңдейтін арнайы операциялар жоқ, сондықтан массивті оның элементтері бойынша өңдейді. Қарапайым айнымалылармен қандай амалдар орындауға болатын болса, массивтің элементтерімен де дәл сондай амалдар орындауға болады. Бұл жағдайда меншіктеу немесе шартты өту операторларында массив элементтерін пайдаланғанда массив атынан соң жақша ішінде мәні анықталуға тиісті индекстің тұрғандығына барлық уақытта ерекше назар аударуға тиіспіз.
Мысалы, мәндері
-
А(1)
|
А(2)
|
А(3)
|
А(4)
|
А(5)
|
-8
|
3.2
|
4
|
15
|
18
|
Бес элементтен тұратын массив үшін А(2)=3.2 екінші элементті 8.3 санына ауыстыру операцияясы мынадай болып жазылады:
•
•
•
30 А(2)=8.3
Мына программа үзіндісінің
•
•
•
80 J=1
90 I=3
100 A (4)=27
110 A (I)=94
120 A(2*I-1)=A(J)+A(I)
орындалуы 100 – оператор орындалғанан соң массивтің А(4) төртінші элементі бұрынғы 15 санының орына 27 санының ендірілуіне алып келеді.
110 – оператор бойынша массивтің А(І), (І=3) үшінші элементіне 94 саны меншіктеледі, ал 120 – оператордың орындалуы нәтижесінде А (2*3-1)=А(5) элементіне массив элементтерінің қосындысы А(1)+А(3)=-8+94=86 мәні меншіктелетін болады.
Осылайша, келтірілген программа үзіндісінің орыдалуы нәтижесінде жоғарыда келтірілген А массивінің түрі мынадай болып өзгереді.
-
А(1)
|
А(2)
|
А(3)
|
А(4)
|
А(5)
|
-8
|
3.2
|
94
|
27
|
86
|
Көптеген жағдайларда массивтерді өңдеуде массив элементтеріне ретімен қатынас жасау талап етіледі.
Сонымен, массивті хабарлағаннан және оның элементтеріне жадтан орын бөлгеннен соң, келешекте компьютер оны өңдеу үшін жадтың бөлінген аймағына оның элементтерінің сандық мәндерін ендіру және орналастыру талап етіледі.
Массивтің өлшемі шағын болатын ең қарапайым жағдайда мұны INPUT, READ және DATA операторларының көмегімен массив элементтеріне аты және индекстерінің сандық мәндері бойынша қатынас жасай отырып, массивтің әрбір элементін ендіру арқылы жүзеге асыруға болады.
Массивтерді ендіру мысалдарын қарастырайық.
1. А массив берілсін. Оны мына төмендегідей жолмен ендіруге болады.
10 DIM A(5)
20 INPUT A(1), A(2), A(3), A(4), A(5)
•
•
•
100 END
А массивіне жадтан қажетті орынды сақтап қоюшы 10 – оператор орындалғанан соң, 20 – оператордың жүзеге асырылуы монитор экранына «?» таңбасын шығарады. Компьютер А массивінің элементтерінің сан мәндерін, ол 20 – операторда индексті айнымалылар қандай реттілікпен берілсе, дәл сондай реттілікпен ендіруді күтіп тұрады. Компьютердің пернетақтасынан А массиві элементтерін мына түрде енгізу керек:
В – 7,6.3,5,17,9 <ЕП> Осымен массивті ендіру аяқталады.
А массивіне жадтан орын бөлінгенен соң оның элементтерін ендіру компьютерді пайдаланушылардан сұрамай – ақ жүзеге асырылады. Мысалы, мына программа:
10 DIM A(5)
20 READ A(1), A(2), A(3), A(4), A(5)
30 DATA -7,6.3,5,17,9
•
•
•
100 END
орындалғанда READ операторының тізімінде бірінші тұрған А(1) айнымалыға DATA операторындағы бірінші мән – 7 меншіктеледі, А(2) айнымалысына 6.3 мәні, А3 айнымалысына 5 мәні т.с.с. меншіктеледі.
Массив элементтеріне қатынас жасаудың екң ыңғайлы құралы, массив элементінің индексі ретінде циклді басқарушы айнымалыны пайдалану болып табылады.
Мұндай тәсіл массивтермен жұмыс істеуді оңай тәртіпке келтірілетіндіктен массивтерді өңдеудегі негізгі тәсілдердің бірі болып табылады. Бұл жағдайда FOR – NEXT операторларындағы цикл айнымалысы индекстің алғашқы және соңғы мәндерінің аралығында бір бірлікке артады, ал массивтің кезектегі элементі автоматты түрде алынады.
Мұны А массивін ендіру мысалы арқылы бейнелеп көрсетуге болады.
А массивін ендірудің блок – схемасын келтірейік.
А(5)
--------- [ массивті хабарлау
--------- [ индекстің алғашқы мәнін беру
-------- [ элементті ендіру
I=I+1
--------- [ индексті өзгерту
ия ---------- [ тексеру: барлық элементтер ендірілген бе?
жоқ
А массивін диалогтық режімде ендіруді мына программа арқылы орындауға болады.
10 DIM A(5)
20 FOR І=1 TO 5
30 INPUT A(I)
40 NEXT I
•
•
•
100 END
20 – оператормен ендіру циклі басталады. Онда І айнымалысы 1 – ге тең мәнді меншіктейді. Бұдан әрі INPUT операторы бойынша А(1) айнымалысының мәнін сұрайтын экранда «?» таңбасы пайда болды. Оған бірінші санды ендіру арқылы жауап береміз:
Бұдан соң NEXT операторы І – ді бір бірлікке арттырады, яғни І=2 болады, бұл мән басқарушы және басқару қайтадан 30 – операторға беріледі. Монитор экранында қайтадан «?» таңбасы пайда болады. Пернетақтадан екінші санды ендіреміз:
? 6.3 < ЕП >
Осылайша компьютер жадына А массивінің қалған үш элементі ендіріледі:
? 5 < ЕП >
? 7 < ЕП >
? 9 < ЕП >
Массивті ендіруді жүзеге асыратын мына төмендегі програма:
10 DIM A(5)
20 FOR І=1 TO 5
30 READ A(І)
40 NEXT I
50 DATA -7,6.3,5,17,9
•
•
•
1 ден 5 – ке өзгеретін І – дің әр түрлі мәндері үшін А(І) айнымалысына мәндер DATA операторындағы сандардан алынып ретімен меншіктеледі.
Өлшемдері әр түрлі бірнеше массивтерді ендіруде бірдей өлшемді массивтерді бір циклмен ендіру есебінен циклдер санын азайтуға болады.
Айтайық, А массивінен басқа В={2.3, 3.4, 8.3} және С={0.7, -3.1, 5.7} массивтерін ендіру қажет болсын.
Программа мына төмендегідей түрде берілуі мүмкін:
10 INPUT «В және А массивтерінің өлшемдерін енгізіңдер»; K,L
20 DIM B(K), C(K), A(L)
30 FOR І=1 TO K
40 INPUT B(I), C(I)
50 NEXT I
60 FOR J=1 TO L
70 INPUT A(J)
80 NEXT J
•
•
•
150 END
Программаны орындау В және А массивтерінің өлшемдерінің мәндерін сұраудан басталады.
В және А массивтерінің өлшемдерін енгізіңдер.
? 3,5 < ЕП >
Барлық массивтерге жадтан орын бөлінгенен соң В және С массивтерін ендіру циклі жұмысын бастайды. Пайда болған сұрақ «?» таңбасына В және С массивтерінен алынған жұп сандармен жауап беру керек:
? 2.3, -7 < ЕП >
? 3.4, -3.1 < ЕП >
? 8.7, 5.7 < ЕП >
Келесі бес «?» таңбасына А массивінің бес санын ендіріп жауап береміз.
? -7 < ЕП >
? 6.3 < ЕП >
? 5 < ЕП >
? 17 < ЕП >
? 9 < ЕП >
READ, DATA ендіру операторларын пайдалану алдыңғы программа үзіндісін былайша өзгертуге алып келеді:
•
•
•
40 READ B(L), C(L)
•
•
•
70 READ A (J)
•
•
•
90 DATA 2.7, .7, 3.4, -3.1, 8.7, 5.7, -7, 6.3
100 DATA 5, 17, 9
•
•
•
Массивтердің элементтерін баспаға шығарған кезде элементтері бойынша барлық уақытта массивтің атын және индекстердің мәндерін циклде көрсету арқылы жүзеге асырылады. Мұнда массив өзін қалыптастырған циклде, сондай – ақ оны баспаға шығару үшін арнайы ұйымдастырылған жеке циклде баспаға шығарылыуы мүмкін.
Мысалы, а массивінің мәндерін монитор экранына шығару үшін мына циклді пайдалануға болады:
•
•
•
160 FOR І=1 TO 5
170 PRINT A(I)
180 NEXT I
•
•
•
Бұл жағдайда А массиві элементтерінің мәндері баған түрінде баспаға шығарылады. 170 – оператор шығарылатын сандар үшін мынадай:
170 PRINT “A(“;I;”)=”;A(I) мәтінмен толықтыру шығарылған нәтижені түсінуді жақсартады:
A(1)=-7
A(2)=6.3
A(3)=5
•
•
•
А массивінің элементтерін қатар түрінде де баспаға шығаруға болады. Ол үшін 170 – қатардағы PRINT операторын нүктелі үтірмен аяқтау керек.
Қатынас жасау талап етілетін массив элементтерінің индекстерінің мәндерін есептейтін формуланы құру массивтің жеке элементтері жұмыс істеудің басқа маңызды тәсілі болып табылады.
Мысалы, А массивінің барлық жұп элементтеріне 4-ке тең сандық мән меншіктеу талап етілсін.
А массивін хабарлағаннан соң және оның мәндерін компьютер жадына ендіргеннен кейін программаның мынадай үзіндісі пайдаланылуы мүмкін:
•
•
•
70 FOR І=1 TO 2
80 А (2*І)=4
90 NEXT I
•
•
•
80 – оператордағы индексті есептеуші формула А массивінің тек жұп элементтерімен ғана қатынас жасауға мүмкіндік береді.
Бұл жағдайда массивтің хабарланбаған элементтерімен қатынас жасамас үшін барлық уақытта индекс мәндерінің төменгі және жоғары шекараларын қадағалап отыруға тура келеді.
Массивтерді өңдеудің типтік
процедуралары
Массивтермен жұмыс істеу процедуралары әр түрлі және көптеген жағдайларда компьютерде шығарылатын есептердің арнайы ерекшеліктерімен анықталады. Бірақ әр түрлі көп есептердің және оларды шешу үшін пайдаланылатын алгоритмдердің ішінен массивтерді өңдеудің типтік тәсілдерінің және алгоритмдерінің белгілі жиынын бөліп алуға болады.
Осы аталғандардың ішінен бір өлшемді массивке қолданылатын кейбіреулерін қарастырайық.
Массивтермен жұмыс істеу тәсілдерінің өзіне назар аудару үшін хабарлау операциясы, массивтер информациясын ендіру және шығару операциялары түсінік келтірмей беріледі және массив элементтерінің сандық мәндері анықталмайды.
Массив элементтерінің қосындысын есептеу
К элементі бар А массивінің элементтерінің қосындысын есептеу талап етілсін, яғни
К
S=Σ А(І)
1=1
Анықтау керек.
Қосындыны есептеу алгоритмін нәтижесі өсіп отыратын қосындыны
жинау принципі бойынша құрамыз. S қосындының алғашқы мәнін анықтаймыз. Әрине алғашқы кезде S=0 болады. Оған массивтің А(І)-бірінші элементін қосамыз және қосындының жаңа мәні S=S+A(1)-ді есептеп шығарамыз. Оның сандық жағынан А (1) элементтің мәнін тең екендігін көру қиын емес. Келесі қадамда алынған қосындыға А(2) элементін мына түрде S=S+A( 2)=(0+A(1))+A(2) қосып А массивінің алғашқы екі элементінің қосындысын аламыз.
Әрбір І-ші қадамда массивтің жаңа элементін мына S=S+A(1) пішінде қоса отырып, К қадамнан соң ізделініп отырған қосындыны аламыз.
Ұсынылған осы процедура S=S+A(1) шамасын есептеуді К рет қайталанатын цикл түрінде қосындыны жинауды ұтымды ұйымдастыруға мүмкіндік береді.
S қосындысын есептеу алгоритімнің блок-схемасын мына түрге беруге болады.
Математика алгоритм S=A(1)+A(2)+A(3)+ …+A(K) формуласы бойынша тікелей есептеуді, есептеудің К-қадамы қайталанатын процедурасымен алмастырылады.
S=(…(((0+A(1))+A(2))+A(3))+…+A(K))
1-қадам
2-қадам
• 3-қадам
•
•
К-қадам
Программа қосындыны жинаудың К-қадамды процедурасын К рет қайталанатын цикл түрінде ұйымдастыру ыңғайлы болады.
Программаның түрі мынадай болады:
INPUT “Массивтің өлшемін ендір K=’’; K
30 FORI=1 T O K
40 INPUT A(1)
50 NEXT I
60 S=0
70 FORI=1 T O K
80 S=S+A(1)
90 NEXT I
100 PRINT ’’S = ’’; S
110 END
Мұнда, 60 – оператор S қосындының бастапқы мәнін нөлге айналдырады, ал оны есептеу 70-90 – операторлардың тұратын циклде жүзеге асырылады.
Массив элементтерінің көбейтітдісін есептеу
А массив элементтерін мына түрде:
К
P=∏ А(I)
I=1
Массив элементтерінің көбейтіндісін есептеу принцпі жоғарыда қарастырылған массив элементтерінің қосындысын есептеуге ұқсас.
Көбейтіндінің ақтық мәні P=P x A (I) формуласы бойынша есептелетін дербес көбейтінділерді K-рет еселіп жинаудан соң анықталады.
P көбейтіндісінің алғашқы мәні ретінде Р=1 тандап алу керек, өткені ол нәтижесінің сандақ мәніне әсерін тигізбейді. Бұдан соң бірінші қадамда Р=P*A (1)=1*A(1),екінші кадамға P=P*A(2)=A(1)*A(2), үінші қадамға Р=P*A(3)=A(1)*А(2)*А(3), ең соңында К-қадамда Р=P*A(1)*А(2)*...*А(К-1)*А(К) есептеледі.
Бұл алгоритмді жүзеге асырушы программа үзіндісі мына төменде келтірілген:
60 Р=1
70 FOR I=1 TO K
80 P=P*A(I)
90 NTXT I
100 PRINT "P=";P
110 END
Берілген шартты қанағаттандыратын массив
элементтерін санын анықтау
К элементтен тұратын А массивінің қанша элементі берілген шартты қанағаттандыратындығын анықтау талап етілсін.
Нақты болу үшін бұл шарттың түрі А(1)>L болсын.
Берілген шартты қанағаттандыратын массив элементтерінің санын есепке алу үшін N айнымалысын ендірейік. N-нің мәнін есепке алуды А массивінің әрбір элементіне ретімен қатынас жасау және А(I)>L шартының орындалуын тексеру кезінде жүзеге асыруға болады. Шарт орындалған жағыдайда N-нің мәнін бір бірлікке арттыру керек, яғни N=N+1-ді есептеуге массивтің келесі элементін (егер массив аяқталмаған болса) талдауға өтеміз.Бұл шарт орындалмаған жағыдайда массивтің келесі элементіне қатынас жасауды ұйымдастыруға өте керек.
Массив элементтерін талдаудың бұл процедурасын блок-схема түріне көрсетуге болады.
h
Бұл процедураның А массивтің ендіру және хабарлау операторлары жоқ мына программа жүзеге асырылады.
60 N=O
70 FOR I=1 TO K
80 IF A(I)>L THEN N=N+1
90 NEXT I
100 PRINT "N="; N
110 END
Бірнеше белгілі массивтер бойынша
жаңа массив алу
Алгоритмнің бұл түрін жүзеге асыру үшін өлшемдерді бірдей А(I) және В(I), (I=1,2,...,К) массивтер бойынша С(I), (I=1,2,....,К) массивтің элементтерін алуға арналған қарапайым есепті қарастырамыз. С(I) массивінің элементтері мына формуламен анықталады: С (I)=A(I)+B(I)
Есепті шешу алгоритмі А(I)және В(I) массивтерінің элементтерін I бойынша 1-ден К-ға дейін өзгеретін цикл арқылы алып, барлық С(I)=A(I)+B(I) массивін есептеуге келіп тіреледі. Сонда бұл есепті шешетін программаның түрі мынадай болады:
10 INPUT"K=";K
20 DIM A(K),B(K),C(K)
30 FOR I=1 TO K
40 INPUT A(I),B(I)
50 NEXT I
60 FOR I=1 TO K
70 C(I)=A(I)+B(I)
80 PRINT C (I)
90 NEXT I
100 END
20-операторда программада пайдаланылатын барлық массивтер хабарланады және оның ішінде есептеу барысында алынатын С массивіне де орын бөлініп қойылатындығына назар аудару керек.
60-тан 90-ға дейінгі операторлар С массивінің элементтерін ретімен монитрр экранына шығаруды ұйымдастырады.
80-операторды массивті есептейтін циклге қосу С массивін баспаға шығаруға арналған арнайы циклді ұйымдастырудан құтқарады.
Массив элементтерін терістеу
К элементтен тұратын А массив элементерінің жазылу ретін керісінше ауыстыру қажет.
Бұл есепті шешу үшін бастапқы массив элементтерінң бірін транзит ретінде сақтаушы қосымша айнымалыны ендіру талап етіледі. Бұл айнымалыны G әріпімен таңбалайық.
Алдымен бірінші және К – элементтердің орындарын өзара алмастыру керек. Ол үшін А (І) элементінің мәнін G(С=А(І)) айнымалысына, содан соң К – элементінің мәнін А(І)=А(К) бірінші элементке, одан кейін бірінші элементтің мәнін G айнымалысынан К- элементке А(К) =G меншіктейміз. Массивтің ортасына жеткенше А(І) және А(К-І+1) элементтердің қалған жұптарымен дәл осыған ұқсас әрекеттер жасаймыз. Алмастырылуға тиісті соңғы элементтер, егер К жұп сан болса А (К/2) және А(К /2), ал егер К жұп сан болса, онда А ([K/2]) және A([K/2]+2) болады. [K/2] операциясы К/2 бөліндінің нәтижесінен бүтін санды алуды бейнелейді. BASIC тілінде бұл үшін INT функциясын пайдалануға болады.
Осылайша, программада әрқайсында массив элементтерін терістейтін [K/2] қадамнан тұратын цикл ұйымдастыру керек.
Мына төмендегі программа жоғарыда айтылғандарды жүзеге асырады.
10 INPUT «К=»;К
20 DIM A (K)
30 FOR I=1 TO K
40 INPUT A(I)
50 NEXT I
60 M= INT (K/2)
70 FOM I=1 TO M
80 G=A(I)
90 A(I)=A(K-I+1)
100 A(K-I+10=G
110 NEXT I
120 FOR I = 1 TO K
130 PRINT A(I)
140 NTXT I
150 END
Массив элементінің және онын индексінің
ең үлкенін (ең кішісін) іздеу
К саннан тұратын А массивінің ең үлкен элементін және оның индексін іздеу үшін екі қосымша айнымалы ендіруге тура келеді.
Бірінші М массив элементінің ағымдағы ең үлкен мәнін сақтау үшін;
Екіншісі N ағымдағы ең үлкен мәннің индексін сақтау үшін;
Бұл есептің шешеімі А массивінің әрбір элементін М – нің ағымдағв ең үлкен мәнімен бірінен соң бірін ретімен салыстыру арқылы табылады. Егер А (І) элементінің мәні М –нің мәнінен үлкен болса, онда М ретінде осы элементтің
М=А(І) мәні қабылданады, ал N айнымалысы оның N=І индексінменшіктейді. Осы жоғарыда айтылған жағдайға қарама – қарсы жағдайда, яғни басқаша айтқанда әзірше І< К болса, онда массивтің келесі кезектегі элементін қарастыруға өту жүзеге асырылады.
Мұнда тағы М және N бастапқы мәндерін анықтау талап етіледі.
Егер массив элементінің бастапқы ең үлкен мәні ретін – де оның М = А(1),N=1 бірінші элементін алсақ және онымен екінші элементтен бастап массивтің қалған элементтерін циклді түрде салыстырсақ ол өзін-өзі ақтайды.
Бұ.л алгоритм мына программамен жүзеге асырылады:
10 INPUT “K=”:K
20 DIM A(K)
30 FOR I= 1 TO K
40 INPUT A(I)
50 NTXT I
60 M= A(1):N=1
70 FOR I =2 TO K
80 IF M < A(I) THEN M= A(I):N=1
90 NTXT I
100 PRINT “M=’:M: “N=”:N
110 END
Сонымен, бұл есепті шешу алгоритмінің блок – схемасы мына төменде көрсетілген.
-
-
-
Иә
M=A(I)
N=1
Жоқ
І=I+1
Иә
жоқ
Жоғарыдағы программада 60-қатар М және N айнымалыларына бастапқы мәндер меншіктейді, ал циклге (70-90 операторлар) екінші элементтен бастап А (І) массивінің әрбір элементін айнымалымен бірінен соң бірін ауыстыру жүзеге асырылады. 80 – операторда МБұл программа бірімен бірдей бірнеше ең үлкен элементтер болған жағдайда, олардың ішінен біріншісінің N индексінің баспаға шығарады.
Массив эхэлементтерінің ең кіші мән іздеуде программа өзінің құрылысын сақтайды, тек 80-оператордағы қатынас операциясының таңбасы «>» болып өзгереді.
Массивті реттеу
К санынан тұратын А массивінің элементтерін өсу (кему) ретіне қарай орналастыру қажет болсын.
Бұл есепті шешудің бірнеше тәсілдері бар. Бұл жерде біз солардың бірі «көпіршік тәсілін» қарастырамыз.
Ол массивтен ең кіші (ең үлкен) элементті іздеуге негізделеді. Алдымен массивтің ең кіші элементін іздеу жүзеге асырылады. Содан соң ол бірінші элементпен орын алмасады. Бұдан кейін бірінші элементтен басқа қалған элементтердің ішінен тағыда ең кіші элемент ізделеді және екінші элементпен орын ауыстырады.
Бұл процедура әзірше іздеу аймағында соңғы екі элемент қалмағанға дейін жалғастырады, оның ішінен ең кіші соңғысының алдыңғысы болады.
Бұл есептің ерекшелігі сол массивтің өлшемі К және оның элементі А(І) (І=1,2...,К) бастапқы берілгендер болып табылады, ал нәтиже сол А массивінің өзі болады, бірақ ол реттелген болады.
Қосымша айнымалылар ретінде мыналар пайдаланылады:
М – ағымдағы ең кіші элементті сақтайды;
N – ең кіші элементтің индексі;
І – реттелген массив элементінің индексі (сыртқы циклдің басқарушы айнымалысы);
J – ең кіші элемент ізделетін массив бөлігіндегі элементтің индексі (кіші циклдің айнымалысы).
Мына төменде келтірілген программаның үзіндісі бастапқы берілген А массивінің элементтерін реттеу процедурасын жүзеге асырады және оның реттелген элементтерінің жиынын баспаға шығарады.
•
•
•
60 FOR I=1 TO K-1
70 M=A(I)
80 FOR J=I+1 TO K
90 IF A (J)
100 NEXT J
110 A (N)=A(I)
120 A(I)=M
130 PRINT A (I)
140 NEXT I
150 END
70-100 операторлар массивінің қалған бөлігінен ең кіші элементті іздеудің стандартты процедурасын іске асырады, ал 110-120 операторлар кезектегі реттелмеген А(І) элементін табылған ең кіші М элементімен ауыстырады.
А массивін кему бағытында реттеуде келтірілген программада 90-оператордағы қатынас операциясының таңбасы «>» болып өзгереді.
Компьютерлік желілер. Желілер түрлері
Компьютерлік желілер түсінігімен сіз 7-сыныпта таныстыңыз, желілер түрлерінің көрнекі үлгісі- мектептің информатика кабинетінің компьютерлік желісі. Мұндай көлем бойынша кішігірім, бір үй, ғимарат, кәсіпорын аумағында жұмыс істейтін желілер жергілікті деп аталады. Аймақтық немесе ауқымды деп аталатын басқада желілер бар.
Қала, облыс, ел ішінде орналасқан желілер аймақтық деп аталады. Егер олар қайсы бір ұйымға немесе ұйымдар тобына қарасты болса, онда корпаративтік деп аталады. Мысалы, Қ.Р-ның Ұлттық банкінің желісі – Banknet, негізгі банктің компьютерлерін оның барлық филиалдарының компьютерлерімен (аудандық бөлімшелерін қосу) біріктіреді.
Одан үлкен көлемдегі, бүкіл елдерге, құрлықтарға тараған желілер ауқымды деп аталады. Олар корпаративтік те, жалпы да бола алады. Мысалы, интернет сияқты олардың кез келген пайдаланушыларға қызмет ету мүмкіндіктері бар.
Компьютерлерді желіге олардың ресурстарын бірлесіп пайдалану үшін және ақпаратпен алмасу үшін біріктіріледі.
Компьютердің ресурстары ақпараттық және техникалыққа бөлінеді. Ақпараттық ресурстарға программалар және деректер, ал техникалықтарға – принтер, модем, сканерлер, график сызғыштар кіреді. Ақпарат сақтау құралдары СD-ROM, ZIP, DVD сияқтылар ақпараттық ресурстарға кіреді. Олар программалар және деректері бар қапшықтар ретінде қаралады. Оларға қосылу логикалық дискіге жасалғандай жүзеге асырылады. Орналасқан компьюткрінен ғана қол жеткізуге болатын ресурстар жергілікті деп аталады. Желінің басқа компбютерлеріне де ашық компьютер ресурстары ортақ немесе желілік деп аталады. Жергілікті және ортақ ресурстар түсініктері шартты. Бұл – жергілікті ресурсты ортақ етуге болады және, керісінше ортақ ресурсқа жергілікті мәртебесін беруге болады.
Ортақ ресурстар орналасқан компьютер сервер деп аталады. Сервердегі ақпаратқа жол ашатын және осы ресурстар пайдаланатын негізгі жетістігі мынада: компьютерлер мен концентраторлар арасындағы жекелеген жалғағыштар істен шыққанмен, бүкіл желі жұмыс істей береді.
«Жұлдызша» топологиясының кемшілігі оның негізгі жетістігінен туындайды: егер концентратор бұзылса, онда ол бүкіл желіні түгел істен шығарады.
Достарыңызбен бөлісу: |