Главная страница
Контакты

    Басты бет


Алгоритм және оның қасиеттері

жүктеу 1.45 Mb.



жүктеу 1.45 Mb.
бет8/11
Дата20.03.2017
өлшемі1.45 Mb.

Алгоритм және оның қасиеттері


1   2   3   4   5   6   7   8   9   10   11

Айнымалыларға мән беру операторы.

DATA операторы
Айнымалыларға мән беруді DATA READ, RECTORE операторларының көмегімен жүзеге асды.

DATA операторлары бұл оператордың LET операторын өзгешелігі мұнда айнымалыларға мән беру мәліметтер блогын пайдалануға негізделген.

Мәліметтер (данные; data) - автоматты құралдардың көмегімен, кей жағдайда адамның қатысуымен, өңдеуге I ыңғайлы түрде берілген мағлұмат. Мәліметтердің кірістік, шығыстық, басқару, проблемалық, сандық, мәтіндік, графикалық және т.б.
Айнымалыларға мән беру меншіктеу осы блокпен сандарды не символдық тұрақтыларды оқу жолымен орындалады. Бұл бағдарламаны орындар алдында ЭЕМ зердесінде қалыптастыратын реттелген сандық информацияларды бастапқы бағдарламада DATA операторы арқылы беріледі.



Оператордың жазылу үлгісі:

k DATA C1,C2…Cn

Мұнда k-қатар нөмірі, DATA-оператордың аты, C1,C2…Cn- үтірлермен бөлінген тұрақтылар.

Мысал:

10 DATA-1;0;86;0. 3Е-5 бұл оператор бойынша бағдарламаны орындар алдында бір саны бірінші 0.86 саны екінші 5 және 0,310 саны DATA операторы орындалуын операторы тобына жатады және бағдарламаның кез-келген жеріне құрылған бағдарлама бойынша ЭЕМ-де есеп шығару екі кезеңнен тұрады.



1. Бағдарламаның операторын ЭЕМ-ге түсінікті үлгіге түрлендіру. Бұл кезеңде DATA операторы арқылы берілген мәліметтер блогы қалыптасады.

2. Бағдарламаның операторын нөмірлерінің өсу ретіне қарай орындалады. Егер бағдарламаның орындалуын барысында DATA операторы кезеңде өтіп кеткендіктен ол есептеуге ешқандай әсерін тигізбейді. Осы бағанда алынған DATA операторы орындалмайтын оператор болып табылады. Бастапқы бағандарда бірнеше DATA операторлары болуы мүмкін бірақ олардан тек бір ғана мәліметтер блогын жасалады.

Мысалы,


5 DATA 2,- 1,0

. . .

20 DATA 0,3 -71,12



. . .

100 DATA 10, 12

Бұл жағдайда мәліметтер блогы DATA операторының бағдарламада кездесу ретімен жасалады.

DATA операторын басқа оператормен бірге бір қатарға жазуға болмайды ол нөмірленген қатардағы жалғыз ғана оператор болуы тиіс. DATA операторы READ операторлардың көмегімен оқылатын мәліметтер блогын жасайды.


READ операторы
READ операторы – деректер блогынан мәндерді іріктеп алуы операторлар болып табылады.

Операторыдң жазылу пішімі:

k READ v1,v2,vN

Мұндағы k-қатар нөмері, READ-оператордың аты, v1,v2,vN- айнымалылардың аты.

Бұл оператор арқылы программаның орындалуы кезінде деректер блогын сандық информация іріктемеліп алынып айнымалыларға меншіктеледі.

Мысалы, мынадай программа үзіндісі берілсін

10 DATA 6,-10 1.2, 100

20 READ X,Y,Z



.

.

.

50 READ A



.

.

.

20 қатардағы оператордың орындалуы кезінде х айнымалысына 10-мәнді A,Z айнымалысына 1,2-мәні меншіктеледі, бұдан соң деректер блогында пайдаланылған тек бір ғана 100 саны қалады. Ол ақырында READ-операторы орындалғанда іріктелініп алынуы мүмкін. Мысалы, 50-қатардағы READ-операторы орындалғанда сол қалған 100 саны А-айнымалысына меншіктеледі іріктелініп алуға ғана рұқсат етеді. Мысалы, деректер блогын бірден үшінші санды алынған деректер блогынан санды алуға әрекет жасау қате есептеледі. Интерпретаторы «?» таңбасымен баспаға шығарады және программаның орындалуы тоқтатылады. Айнымалылардың бастапқы мәндерін қалыптастыру үшін READ-операторын пайдалану ыңғайлы. Бұл оператордың жалпы санын үнемдейді.

Бастапқы параметрлерді өзгерту үшін тек DATA операторының тізімін өзгерту ғана талап етіледі. Бір қатарға бірнеше операторды, жазуға READ-операторын программаға кез-келген орынға жазуға болады. Программаны орындалуының алдында интерпретатор барлық DATA операторын олардың программадағы кездесу реті бойынша қарап шығып, бір ғана деректер блогын жасайды. Программа READ-операторы кездескен сайын интерпретатор блогынан мәндерді ретімен алады және оларды READ-операторының айнымалысына ретімен оқылған дерек мәндерінің орны деректердің кезектегі элементтеріне орналастырылған ерекше көрсеткіштің көмегімен есте сақталады. Келесі READ-операторы мәндерді осы элементтен басып алады.

RESTORE операторы
Бұл оператор деректер блогынан мәндер алынып болған жағдайда оны қалпына (бастапқы күйіне ) келтіру қызыметін атқарады. Оператордың жазылу пішімі: RESTORE

Мұнда RESTORE (қалпына келтіру) оператордың аты. Бұл оператор орындалғаннан кейін READ оператормен сандарды оқу деректер блогының бірінші санынан басталады.

RESTORE операторы программа жұмысының кез келген кезеңінде, яғни деректер блогынан барлық сандар оқылып болғанға дейін де орындала алады.

Мына:


10 DATA 10,0.3 2.8. -0.9

20 READ M,A,B,C.

.

.

.



  • RESTORE

.

.

.



120 READ A,A,B,C.
программа үзіндісінде 20-оператор орындалғанда айнымалыларға мынадай мәндер меншіктеледі.

М=10; A=0.3; B=2.8; C=-0.9.

Есепті шешу кезеңінде бұл айнымалылар қандайда бір басқа мәндерді де қабылдай алады. Бұдан әрі А,В және С айнымалыларына М айнымалысының мәнін қалпына келтірмей-ақ бұрынғы мәндерін қайтадан меншіктеу талап етілсін делік. Бұл үшін деректер блогынан сандарды бірінші саннан бастап оқуды даярлайтын RESTORE операторы пайдаланылады. М айнымалысына бірінші санды меншіктеуді қалдырып кету үшін 120-операторда А айнымалысына екі рет жазылған. Мұнда А айнымалысына бірінші меншіктелген мән жазылған, ал одан кейін екінші рет меншіктелетін мән ақиқат болады.

RESTORE операторы DATA операторының кіші нөмерлі қатарларынан бастап DATA операторындағы тұрақтыларды қайталап пайдалануға мүмкіндік береді. RESTORE операторы қатардағы бірден бір оператор немесе қатардағы бірнеше оператордың бірі бола алады.



Шартты өту операторы
Тармақталу алгоритм мектептік алгоритмдік тілде егер командасы арқылы жүзеге асырылатындығын сіздер бұрыннан білдесіздер. Мектептік алгоритмдік тілде егер командасы толық және қарастырылған пішімдер жазылады.

Толық пішім Қарастрылған пішім

Егер «шарт» Егер «шарт»

Онда «1-әрекет» онда «әрекет»

Әйтпесе «2- әрекет» бітті

Бітті

Ал BASIC программалау тілінде осы егер команданың қызметін атқаратын арнайы оператор бар. Оны шартты операторы деп аталады. Бұл операторды да толық және қарастырылған пішімді жазып пайдалануға болады.

Шартты өту операторының толық пішімінің жазылу үлгісі:

1kIF el xe2 THEN k 10 ELSE k 20

2kIF el xe2 THEN k 1 ELSE m2

3 kIF el xe2 THENe1 ELSE e2

4 kIF el xe2 GOTO k 10 ELSE k 20

Мұнда:


  • k қа тар нөмірі;

  • IF- оператордың аты;

  • el xe2 - тектлерілген шарт;

  • е1*е2- арияметикалық өрнектер;

  • х-қатынас оператордың таңбалары (<,<>, =,)

  • m1 m2 – шаттың сақталу немесе сақталмауына байланысты орындалатын оператор:

- THEN- қызметші сөз:

  • ELSE- Қызметші сөз:

  • k 10- Шатты сақталған жағжайда оператордың нөмірі;

  • k 20- Шартты сақталған жағдайда оператордың нөмірі:

  • GOTO- шаттыз өту операторы:


Шартсыз өту операторы
Шарттсыз өту операторын GOTO (өту) есептеуді одан әрі жалғастыруда программаның келесі кезекте орындалытын операторын көрсету үшін, яғни программаның қандайда бір бөлігін өту үшін қолданылады. Оператордың жазылу пішімі:

GOTOk

Мұнда GOTO-оператордың аты; k-GOTOоператордың соң орындалатын оператордың қатарының нөмірі. Осылайша, GOTO операторы программаның табиғи реттілікпен орындалатын бұзады. Мысалы, 10 GOTO 120 операторын нөмірі 10-қатардан кейін 120- операторы орындалады.

Мысалы,

10 A=7


20 GOTO 40

30 A=1


40 A=A 3

50 PRINT A

60 END

Пргорамма орындалғанда 10- қатардағы меншіктеу операторы А айнымалысына 7 мәнін меншіктейді. 20 – қатардағы операторынна кейін 40- операторы орыедалады, онда айнымалсына сол айнымалының алғашқы мәніне 3-ті қосқандағы мән меншіктеліп нәтижесі баспаға шығарылады. Ал мына төмендегі программа орындалғанда Ы. Алтынсариннің «Кел балалар оқылық» атты өлеңі экранға шығады.

Ыбырай Алтынсарин (шын аты - Ибраһим, 1841-1889) - қазақтың аса көрнекті ағартушы-педагогы, жазушы, этнограф, фольклоршы, қоғам қайраткері



10 REM «өлең»

20 PRINT «Кел балалар оқылық» GOTO70

30 PRINT «Ықылыспен тоқылық» GOTO 80

40 PRINT «Шамнан шырақ жағылар» GOTO 90

50 PRINT «Іздемей-ақ табылар» GOTO 100

60 PRINT «Оқығанды көңілге» GOTO 30

70 PRINT «Оқысаның балалар» GOTO 40

80 PRINT « Тілегенің алдыңнан» GOTO 50

Бұл программа орындалғанда мына төмендегідей нәтиже экранға шығады.

Кел балалар оқылық

Оқығанды көңілге

Ықыласпен тоқылық

Оқысанңыз балалар

Шамнан шырақ жағылар

Тілегенің алдыңнан іздемей-ақ табылар.

Әзір циклі
BASIC тілінде циклді мектептік алгоритмдік тілдегі жазылуымен салстырып былай жазуға болады.

Әзір <шарт> k IF NOT P THEN k 30

цб k 10S

<әрекет> k 20 GONO k

цс k 30 REM соңы
Мұнда к-қатарда шартты өту операторы тұр, ол қойылған шарт «сакталмаған» жағдайда басқаруды к 30-қатарға, яғни «қайталану командасынан» шығару құрылғысына береді. Цикл к 10-қатардан басталып циклдің денесіне сай келетін к 20-қатардағы шартсыз өту операторымен аяқталады, содан кейін басқаруды қайтадан шартты тексеру қатарына береді. Осылайша, мектептік алгоритмдік тілдегі сияқты цикл қайталана береді.

Төменде циклдің бұл түрінің блок-схемасы BASIC тіліндегі жазылуымен салыстырылып көрсетілген.







Командалар тізбегі











k IF ШАРТ THEN k 20

k 10 STOP

k 20 Командалар тізбегі

k 30 GOTO k


Мұнда командалар тізбегі шартты тексеруден орналасқан. Мұндай жағдайда шартқа байланысты цикл денесі бір рет те орындалмауы мүмкін. Циклдің бұл түрін ӘЗІР циклі деп атайды.
Дейін циклі
Бұл циклдің блок – схемасы мына суретте көрсетілген.




Командалар тізбегі




Жоқ

иә



k Командалар тізбегі

k 10 IF NOT шарт THEN k

k 20 REM цикл соңы


Циклдің бұл түрінде командалар тізбегі шартты тексеруге дейін орналасады, сондықтан цикл денесі шартқа тәуелсіз, кемінде бір рет орындалады. Циклдің бұл түрін ДЕЙІН циклі деп атайды. Әзір цикілінде цикл денесі әзір-шарт ақиқат болса орындалады; мұндай жағдайда шарт циклді жалғастырушы шарт болып табылады. Дейін циклінде цикл денесі, шарт ақиқат болғанға дейін орындалады, мұндай жағдайда шартты циклді аяқтау шарты деп атайды. Циклдің бұл түрлері нақты есептердің ерекшеліктеріне сәйкес программа құруда қолданылады.

Мысалы, ДЕЙІН циклін пайдаланып х-тің мәні -10-нан 10-ға дейін 2 қадаммен өзгеретін у= х2 в функциясының мәнін есептейтін программа құрыңыздар.




ДЕЙІН циклі бойынша:


































Үшін цикілінің BASIC тіліндегі жазылуы.

FOR және NEXT операторлары
Жоғарыда айтылғандай циклді программаларды басқаруды беру операторы IF арқылы ұйымдастыруға болады. Бірақ циклдер программа жасаудағы ең маңызды және кеңінен тараған құрылым болғандықтан практикада BASIC программалау тілінде оларды ұйымдастыру үшін арнайы

FOR және NEXT операторлары қарастырылған. Бұл операторларды циклдік программаның ұзындығын қысқарту үшін және BASIC тіліндегі программада циклдерді анық ажыратып бөліп көрсету үшін пайдаланады.

Мектептік алгоритмдік тілде параметрі бар қайталану командасын Үшін цикілі деп атайды. Оның жазылу пішімі мынадай:


Цб: үшін і1 бастап і2 дейін

цикл денесі (командалар тізбегі)



Цс

BASIC программалау тілінде Үшін циклін жазу үшін FOR операторы қолданылады. FOR операторын циклдің басының операторы немесе жай ғана циклдің басы деп атайды. Олар әр уақытта қайталанатын командалар тізбегінің, яғни циклдің денесінің алдында келеді. Сонымен цикл басының жазылу пішімі мынадай болады:



k FOR v=e1 TO e2 STEP e3.
Мұнда к-қатар нөмірі, v-циклдің параметрі, e1, e2-цикл параметрінің бастапқы және соңғы мәндері, TO (дейін) – қызметші сөздер, STEP (қадам) – қызметші сөз, e3-цикл параметрі қадамының өзгерісі, яғни өсімшесі.

Программа жасағанда FOR операторынан соң циклдің денесін құрайтын операторлар тізбегі жазылады. Цикл NEXT операторымен анықталады. Сондықтан NEXT операторын цикл соңының операторы деп те атайды. NEXT операторының жазылу пішімі:



k NEXT v
Мұнда k-қатар нөмірі, NEXT-(келесі) оператордың аты; v-циклдің параметрі. Ол міндетті түрде FOR операторындағы параметрмен сәйкес келуі тиіс. Сонымен, BASIC тілінде цикл былай ұйымдастырылады:

k FOR v=e1 TO e2 STEP e3
Командалар тізбегі.

k NEXT v

FOR және NEXT операторларын

пайдалану ережелері
Бұл оператордың көмегімен циклді программалауда мына төмендегі ережелерді ескеру қажет.

1. FOR операторын қолданып циклге ендіруге рұқсат етілмейді. Яғни циклдің денесін құрайтын операторға сырттан басқаруды беруге болмайды. Сырттан басқаруды беруде е1,е2,е3 өрнектің мәні есептелмейді. Егер е1,е2,е3 айнымалы немесе тұрақтылар болса,

онда олардың мәні анықталмайды.

Сырттан басқаруды берудің мүмкін еместігіне мысал;

.

.

.

30. FOR I = N 2 TO 20

40. Y (I) = X (I) 5

50. NEXT I

60. A =A -3

70. IF A I=15 THEN 40



.

.

.

Мұнда 70-операторымен басқаруда 40-қатардағы циклдің ішкі параметірге беруге болмаиды.



2. Кез келген уақытта цикілден шақыруға рұқсат етіледі. Мысалы;

.

.

.

20. K = 1

30. FOR I = 1 TO 10

40. K = K 1

50. IF K – 10 THEN 70

60. NEXT I

70. PRINT K, I

.

.

.

программа үзіндісіне циклдің программасын қателікпен алып келіуі мүмкін болғандықпен алдын ала анықтауға кеңес беруге болмайды.



3. Циклдің санын қатаң сақтауы, бүтін болуы тиіс.

.

.

.

30. FOR I % = 1 TO 2 %



.

.

.

90. NEXT I %



.

.

.

Циклден шығаруда цикл программаның сонғы мәні сақталады.



Пайдаланушы анықтайтын функция
Есептер шығару барысында элементар функциялар: sinx, cosx, tnx, ex және т.б. жиі қолданылады. Бұл функцияларды стандартты математикалық функциялар деп аталады, оларды программаның кез келген жерінде алгебралық өрнектерде қолдануға болады. Функциялардың аргументтері міндетті түрде жақшаға алынып жазылады.

Кейде есеп шығаруда осы аталған стандартты математикалық функцияларға ұқсамайтын алгебралық өрнектер кездесуі мүмкін. Мұндай жағдайда BASIC программалау тілі пайдаланушыға өзінің функциясын құруға мүмкіндік береді. Мұндай функцияларды пайдаланушы анықтайтын функциялар немесе стандартты емес функциялар деп атайды. Оларды анықтау үшін, DEF (Define Function) операторы қолданылады. Оператордың жазылу пішімі:



K DEF FN v(x1,x2,…,xN)=e

Мұнда k-қатар нөмірі; DEF (анықта)- оператордың аты; FNV- пайдаланушы анықтайтын функцияның аты; (v- программалаушы таңдап алатын латын әріпі); х1, х2, …,хN- формальды аргументтер тізімі; е- арифметикалық өрнек. Мысалы,

30 DEF FN B(X,Y)=X^ 2 Y^2

Стандартты емес, яғни пайдаланушы анықтайтын функцияның аты барлық уақытта үш латын әріпінен құралады, ал үшінші әріпті пайдаланушы өзі таңдайды. Тек қарапайым, (индекстері жоқ) үтірлерімен бөлінген айнымалылар (х1, х2, …,хN) ғана формальды аргументтер бола алады.

Ереже бойынша формальды аргументтер е арифметикалық өрнегіне де енеді. Оған санымен бірге басқа да айнымалылар мен тұрақтылар да енеді. е арифметикалық өрнегі формальды аргументтермен және басқа да оған енетін шамалар мен қандай амалдарды, қандай реттілікпен, орындау керектігін көрсетеді. Сонымен, жоғарыда келтірілген мысалдарға 30-операторда қандай екендігі бәрі бір кейбір шаманың х-ты квадраттау және оған басқа формальды шама у-тің квадратын қосу арқылы анықталатындығы көрсетілген. Стандартты емес функция программада DEF операторымен сипатталғаннан соң, оның бұл программадан стандартты функцияларды пайдалануға, яғни BASIC тілінің әр түрлі операторларында пайдалана беруге болады.

Мысалы, мына төмендегі функцияны есептейтін программа құрайық.



Мұнда түрінде жазуға болатын формула көптеген рет пайдаланылған. Программа бұл формуланы DEF операторының көмегімен функция ретінде анықтау орынды. Сонда программаның түрі мынандай болады:

10 REM

20 DEF FNY (X)=3*X^2 COS (X)



30 REM CD

40 INPUT C,D

50 REM Z

60 Z=(FNY(C)-FNY(D))/FNY(C D)^3

70 PRINT “Z=”; Z

80 END


60-операторда көрсетілген FNY функциясының аргументтері шын аргументтер деп аталады. Олар 20-оператордағы формальды аргументтердің орындарына қойылатын нақты сандық мәндерді береді. Пайдаланушы анықтайтын, яғни стандартты емес функцияларды программалауда пайдаланғанда ескерілуге тиісті бір қатар ерекшеліктерді атап өтейік.

Формальды аргументтер, аргументтерді таңбалау және функцияның мәнін есептейтін формулаға енетіндігін көрсету үшін пайдаланылады. Мысалы, программаның мына төмендегі үзіндісінде:



.

.

.

20 DEF FNC (X,Y)=SQR (X^2 Y^2)



.

.

.

50 DEF FND(X)=SIN (X)/X



.

.

.

80 LET Z=Y B*3



.

.

.

FNC жєне FND функцияларын анықтаудағы х аргументі өзара байланысты емес тәуелсіз шамалар. Компьютерде оларға оперативті жадтың әр түрлі ұялары бөлінеді. Дәл осы сияқты 20-оператордағы у формальды аргументінің программаның 80-операторындағы у айнымалысына ешқандай қатысы жоқ. Мыналар шын аргументтер бола алады: тұрақтылар, айнымалылар (жай және индексті), өрнектер. Орындалатын оператордың формуласында шын аргументті стандартты емес функцияның аты оперант ретінде кездескен кезде ғана стандартты емес функцияны пайдалану орындалады. Функцияны пайдалануда алдымен барлық шын аргументтердің мәндері есептеледі, одан әрі олар функцияның анықтамасындағы формальды аргументтердің сәйкес орындарына қойылады және функция анықтамасының оң жағына жазылған өрнектің мәні есептеледі. Осы мән функциясының мәні болып табылады.

Пайдаланушының анықтайтын функциясы бүтін, нақты немесе символдық бола алады. Функцияның атынан соң % символы тұрса, онда ол бүтін деп, ал $ символы тұрса, онда ол символдық деп аталады. Бүтін санды функцияның мәні бүтін саны болып табылады, ал символдық функцияның мәні символдар қатары болады. Егер % және $ таңбалары жоқ болса, онда функция нақты функция болады, яғни нәтижесі нақты сан болады.

Мына төменде пайдаланушының анықтайтын функциясын пайдаланудың мысалдары келтірілген:

20 DEF FNA % (X,Y,R%)=X*K% Y*10*K%

20 DEF DNB% (A$,L)=SWG (A$,I,L) ”A”

20 DEF FNC (X)=SIN (X) /X

М±нда:


  • FNA% функциясының мәні бүтін сан;

  • FNB$ функциясының мәні символдар қатары;

  • FNC функциясының мәні нақты сан болады.

Пайдаланушы функцияны анықтауда деректердің түрлерінде рұхсат етілмейтін түрленулердің, яғни сандық деректердің символдық деректерге және керісінше түрленулерінің болмауын қадағалап отыруы керек. Оны пайдаланғанда шын аргументтердің саны және олардың түрлі функция анықтамасындағы формальды аргументтердің санына және түріне сәйкес келуі тиіс. Бұл талапты бұзу қателікке алып келеді. Мысалы, мына операторлардың:

20 DEF FNB (X)=2*X/SQR (X)

30 PRINT FNB (5,2)

орындалуының нәтижесінде экранға аргументтерде қате кеткендігі туралы хабар шығады. DEF операторы орындалмайтын оператор, сондықтан да барлық DEF операторларын басқа да орындалмайтын операторлармен бірге программаның басына орналастыруға болады. Ол тек программалық режімде ғана пайдаланылады:

Мысалдар келтірейік:


  • 20 DEF FNA (X)=АВS (SIN(X)

1   2   3   4   5   6   7   8   9   10   11


жүктеу 1.45 Mb.