Автор: Пользователь скрыл имя, 26 Февраля 2013 в 18:26, лекция
Егер сіз берілген есепті шешу үшін қандай да бір программалау тілінде программа жазғыңыз келсе, онда алдымен есепті шешудің алгоритмін құруыңыз керек. Алгоритм – математикадағы ең бір іргелі ұғымдардың бірі. Алгоритм сөзі ІХ ғасырда өмір сүрген, адамдардың квадрат теңдеулерді жүйелей құрып оны шеше білуге үйреткен ұлы математик Әл- Хорезмидің атының латынша жазылуы algorithmi сөзінен алынған. Осылайша алгоритм ұғымы математикада ертеден қолданыла бастағанымен, математикалық теорианың объектісі ретінде кейбір проблемаларды зерттеуге байланысты ХХ ғасырдың 30-шы жылдарында зерттеле бастады.
DIM операторы
Егер
индексті өрнек ретінде
Оператордың жазылу пішімі:
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 операторларындағы цикл айнымалысы индекстің алғашқы және соңғы мәндерінің аралығында бір бірлікке артады, ал массивтің кезектегі элементі автоматты түрде алынады.
Мұны А массивін ендіру мысалы арқылы бейнелеп көрсетуге болады.
А массивін ендірудің блок – схемасын келтірейік.
--------- [ массивті хабарлау
--------- [ индекстің алғашқы мәнін беру
--------- [ индексті өзгерту
ия ---------- [ тексеру: барлық элементтер ендірілген бе?
жоқ
А массивін диалогтық режімде ендіруді мына программа арқылы орындауға болады.
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
•
•
•
Массивтердің элементтерін баспаға шығарған кезде элементтері бойынша барлық уақытта массивтің атын және индекстердің мәндерін циклде көрсету арқылы жүзеге асырылады. Мұнда массив өзін қалыптастырған циклде, сондай – ақ оны баспаға шығару үшін арнайы ұйымдастырылған жеке циклде баспаға шығарылыуы мүмкін.
Мысалы, а массивінің мәндерін монитор экранына шығару үшін мына циклді пайдалануға болады: