2.3.3.
Алгоритмдік тіл
Алгоритмдердің сөздік және графикалық көрсетілімі қарапайым
және күрделі алгоритмдердегі әрекеттердің бірізділігін көрнекі түрде
бақылауға мүмкіндік береді. Бірақ көрнекілік адам үшін ғана маңызды,
ал машина үшін оның маңызы жоқ. Машина алгоритмдерде жазылған
әрекеттерді рет-ретімен орындайды, ал оны адам құрастырған.
Мүмкін уақыт өте келе машиналар да ойлануды үйренер және
өздері жағдайды сараптап, алгоритмдерді құрастырып,оларды орындап
әрі өздері қойған мақсатқа қарай жылжитын болар. Қазіргі кезде ең
мықты гроссмейстерлерді жеңген «ақылда машиналар» сіздің тамсану
сезіміңізді тудырады. Шын мәнінде ол жәй ғана жылдамырақ және
нақтырақ, үлкен мөлшерде және аз уақытта өзіне адам жүктеген
ойынның мүмкіндігі мол нұсқаларын сұрыптайды. Сондықтан
машинаға қандай да бір әрекетті аяқтатуды мәжбүрлейтін жалғыз тәсіл
–
оған осы әректіне сәйкес нақты және бірмәнді бұйрық беру. Және
машина бұл бұйрықты дұрыс әрі нақты түсінуі керек. Әрекеттердің
реті бұйрықтардың ретімен анық көрінуі тиіс, ал машина ойлана
алмайтын және түсіне алмайтын болғандықтан, алгоритмнің әр қадамы
машина толық түсінетін бұйрыққа сәйкес болуы керек.
35
Сондықтан алгоритмді орындаушы машина болады деп болжанса,
онда құрастырылған алгоритмді машинаның бұйрықты дұрыс түсінуі
мен орындау мүмкіндігінің шектеулі екенін ескеретін түрде ұсыну
керек. Бұл үшін алгоритмді суреттеудің ерекше тәсілі бар, ол –
алгоритмдік тілде жазу.
Алгоритмдік тіл — бұл арнайы қызметтік сөздердің және
алгоритмдерді жазу тәртібінің жинағы.
Қызметтік сөздер — бұл біздің тіліміздегі қарапайым сөздер, бірақ
олардың алгоритмдік тілде жазылуы бірмәндес және бұл сөздерді
жазудың басқа ешқандай нұсқаларына жол жоқ. Мысалы, сіз
конверттің сыртына мекенжайды жазған кезде «Пенза қаласы» немесе
«Пенза қ.» не болмаса «Пенза қал.» деп жаза бересіз. Егер «қала» сөзі
алгоритмдік тілдің қызметтік тізімінде болса, онда ол сөзді әрдайым
бір түрде ғана жазу керек болады (мысалы, «қала»). Тіпті сөзді
қысқартып жазған кездегі нүктенің қойылу-қойылмауын де ақылдасып
алу керек.
Алгоритмдік тілде жазылған әрбір алгоритмнің атауының алдына
АЛГ қызметтік сөзі қойылады (сөздер бас әріппен, нүктесіз).
Алгоритмнің басы мен соңын көрсету үшін БАС және СОҢ қызметтік
сөздері қолданылады. Алгоритмнің әрбір қадамы жеке жолға
жазылады.
Алгоритмдік тілдегі сызықтық алгоритмнің жалпы түрі:
АЛГ «<атауы>»
БАС
<1-
әрекет>
<2-
әрекет>
СОҢ
Бұрыштық жақшалар ол қатарда тек жақшада көрсетілгендердің
жазылуы керек екендігін білдіреді.
Тармақталған алгоритмдерді жазу үшін ЕГЕР, ОНДА, ӘЙТПЕСЕ,
БОЛДЫ деген қызметтік сөздер пайдаланылады (тармақтанудың
соңы). Тармақтанудың жалпы көрінісі:
ЕГЕР <шарт> ОНДА
< 1-
әрекет>
ӘЙТПЕСЕ
<2-
әрекет>
БОЛДЫ
36
Алгоритмдік тілде 2.2-суреттегі блок-сызбада келтірілген
алгоритмді жазамыз.
АЛГ «Бұйымдарды сұрыптау алгоритмі»
БАС
Бұйымды өлшегіш құрылғыға қою бұйымның
диаметрін өлшеу ЕГЕР диаметр берілгеннен үлкен
болса ОНДА бұйымды № 1 дүкенге орналастыру
ӘЙТПЕСЕ № 2 дүкенге орналастыру БОЛДЫ СОҢ
Кейде тармақталған алгоритмде ӘЙТПЕСЕ жолынан кейін әрекет
емес, жаңа шарт орналасады. Онда бұл екініші шарт ЕГЕР жеке
жолында емес, ӘЙТПЕСЕ орналасқан қатарда жазылады:
ӘЙТПЕСЕ ЕГЕР<2-шарт>ОНДА
<2-
әрекет>
ӘЙТПЕСЕ
<3-
әрекет>
Соңғы ӘЙТПЕСЕ 2-шартқа жатады, яғни, осы шартты орындауға
сай келеді. ӘЙТПЕСЕ ЕГЕР қызметтік сөздерінің үйлесімін ӘЙЕГ
қызметтік сөзімен жиі алмастырады.
Циклдік алгоритмдерде ӘЗІРГЕ, ЦИКЛ, ЦИКЛС ( цикл соңы)
қызметтік сөздері қолданылады. Циклдік алгоритмнің жалпы түрі:
а) алғышартпен —
ӘЗІРГЕ <шарт>
<
әрекет>
ЦИКЛС
б) шарт соңымен —
ЦИКЛ
<
әрекет>
ӘЗІРГЕ <шарт>
Блок-сызбасы 2.3-суретте келтірілген бұйымдарды сұрыптаудың
циклдік алгоритмін жазамыз. Блок-сызбаға қарағанда бұл алгоритм
алғышартпен жазылған. Сондықтан циклдің жоғарғы шекарасы
Конвейрде бұйым бар ма? шарты болады. Әрі қарай цикл әрекеті
жүреді, ал ЦИКЛС төменгі шекарасының орналасуы қайту сызығын
көрсетеді.
37
Алгоритмдегі тармақтану циклдің құрамына кіреді және цикл аяқталар
кезде бітеді. Циклді құрастыратын әрекет алгоритмін оқу ыңғайлы
болуы үшін жазу барысында оңға қарай жылжиды және осылай цикл
оңай көрінеді. Тармақталған бөлікті жылжытуға да болады. Алгоритм
блок-сызба бойынша жылжу тәртібінде жазылады және ол келесі түрде
көрінеді:
АЛГ «бұйымдарды сұрыптаудың циклдық алгоритмі»
БАС
ӘЗІР конвейрде бұйым бар
бұйымды өлшегіш құрылғыға қою
бұйым диаметрін өлшеу
ЕГЕР диаметр берілгеннен үлкен болса ОНДА
бұйымды № 1 дүкенге
орналастыру ӘЙТПЕСЕбұйымды № 2
дүкенге орналастыру
БОЛДЫ
ЦИКЛС
СОҢ
Осы алгоритмдегі әрекеттердің ретін қарастыралық. Конвейрде
бұйым бар алғышарты бұзылмайынша, бұйым диаметрін өлшеу
орындалады және ол № 1 немесе №2 дүкенге орналастырылады.
БОЛДЫ қызметтік сөзі тармақталудың аяқталғанын білдіреді, одан
кейін алгоритмнің келесі жолына өту керек. Онда циклдың басындағы
ӘЗІРГЕ жолына қайта баруды талап ететін ЦИКЛС сөзі орналасқан,
яғни, бұдан кейін цикл қайталанады. Қатардағы ӘЗІРГЕ шарты
бұзылғанда, циклдік алгоритмдерді орындау тәртібі бойынша цикл
соңы ЦИКЛС белгісінен кейінгі жолға ( біздің жағдайда бұл – СОҢ
жолы) өтеді және алгоритмді орындау аяқталады.
Енді алгоритм тіліндегі анағұрлым күрделі алгоритмдерді жазамыз.
(2.5
суретіне қараңыз).
Бұл алгоритмде блок-сызбада көрініп тұрғандай алғышарт ( Тиеуге
арналған контейнер бар ма?) та, шартсоңы та бар ( Вагонда бос орын
бар ма?), сондықтан онда ӘЗІРГЕ..ЦИКЛС түріндегі және
ЦИКЛ...ӘЗІРГЕ түріндегі жазбалар үйлеседі.
Алгоритмнің алдыңғы жағынан жылжу кезіндегі блок-сызбаның
бірінші элементі – шартсоңы символынан келетін қайту сызығы.
Шартсоңы бар алгоритмде ол қайталау барысында циклдің жаңаратын
орнын көрсетеді. Алгоритмикалық тілде бұл орын ЦИКЛ қызметтік
сөзімен белгіленеді.
38
Әрі қарай алғышарттың ӘЗІРГЕ сөзімен енген графикалық
элементтері орналасқан, одан кейін шартсоңына дейінгі әрекеттердің
реті жүреді. Шартсоңы да ӘЗІРГЕ қызметтік сөзімен енгізіледі. Егер
шарт орындалса, онда шартсоңы бар алгоритмдерде ЦИКЛ жолына
қайту керек болады (біздің жағдайда – СОҢ алгоритмін аяқтауға)
Мұның бәрі Тиеуге арналған контейнер бар алғышарты
бұзылмаған жағдайда ғана болады. Ал бұл шарт бұзылған жағдайда
алғышартты алгоритмдері ЦИКЛС цикл соңы нұсқауын басшылыққа
алатын жолға өтеді (біздің жағдайда – СОҢ алгоритмін аяқтауға).
Нәтижесінде бұл алгоритм алгоритмдік тілде келесі түрде
жазылады:
АЛГ «контейнерлерді тиеу алгоритмі»
БАС
ЦИКЛ
ӘЗІРГЕ тиеуге арналған контейнер
бар кезекті контейнерді көтеру
контейнерді вагонға орналастыру
контейнерді вагонға тиеу кранды
бастапқы қалпына әкелу ӘЗІРГЕ
вагонда бос орын бар
СОҢ
ЦИКЛС
СОҢ
Жазу кезінде жолдардың жылжып кетуі ӘЗІРГЕ..ЦИКЛС немес
ЦИКЛ.. ӘЗІРГЕ циклдарының қай жерден басталып, қай жерде
аяқталатынын жылдам табуға мүмкіндік береді.
Алгоритмдік тілдегі көмекші алгоритмдердің жазбасын қарайық.
Кез келген алгоритм көмекші бола алатындықтан, бұл жазбаларда
ешқандай ерекшелік жоқ. Негізгі алгоритмнен мәліметтерді енгізу де,
нәтижелерді шығару да (қажет болғанда) көмекші алгоритмдерде
қарапайым әрекеттер болып саналады.
Негізгі алгоритмдерде көмекші алгоритмдерді шақыру оның
тақырыбын жеңіл көрсетумен жүзеге асады, онда алгоритмдік тілдегі
негізгі алгоритмнің жалпы түрі төмендегідей болуы ықтимал:
АЛГ «<атауы>»
БАС
<1-
әрекет
<2-
әрекет
<
1 алгоритмнің
<3-
әрекет
<2-
алгоритмнің
<4-
әрекет
>
>
қосымша
>
қосымша
>
атауы
атауы
>
>
СОҢ
Жоғарыда көрсетілгендей, алгоритмдерді алгоритмдік тілде жазу
команданың ретін көрсету жолындағы дайын этап болып саналады. Ол
машина қабылдай алатын, түсінетін және орындай алатын формада
болуы керек. Осы мақсаттарға қолданылатын, анағұрлым көп таралған
машиналар ЭЕМ. Өздерін электронды-есептегіш машиналармен
қабылдатуға бағытталған және ЭЕМ жұмысының ерекшеліктерін
есепке алған алгоритмидік тілдер бағдарламалау тілдері деп аталады. .
Достарыңызбен бөлісу: |