АВТОМАТТЫ ПРОГРАММАЛАУ НЕГІЗІНДЕ КОМПЬЮТЕРЛІК МОДЕЛДЕУ САУХАНОВА М.С.
Қазақстан, Астана, Л.Н. Гумилев атындағы Еуразия ұлттық университеті E-mail: [email protected]
Программалық және аппаратты-программалық есептеу жүйелерінде күрделі әрекет ететін нақты негіздер өте жиі кездеседі. Мұндай қасиеттер басқару құрылғыларына, желілік протоколдарға, диалогты терезелерге, компьютерлік ойындардың кейіпкерлеріне және көптеген басқа да объектілерге тән.
Автоматты программалаудың бас идеясы – әрекет ету логикасын әрекеттің семантикасынан ажыратып жазу.
Автоматты программалаудың негізгі ұғымы – «күй». «Күй» ұғымы ғылымның көптеген салаларында қолданылады, мысалы, басқару, формалды тілдер теорияларында. t0 уақыт мезетіндегі жүйе күйінің негізгі қасиеті – болашақтың (t0>t) өткен шақтан (t0 < t) «ажыратылуы», яғни ағымдағы күйдің, осы t0 мезетіндегі кіріс әрекетіне байланысты жүйенің реакциясы болатын әрекетті орындау үшін қажет, жүйенің өткен шағы туралы барлық ақпаратты білуі [1].
Күйді айқын емес түрде осы шақтағы жүйенің реакциясына әсер ететін және өткен шақтың барлық кіріс әрекеттерін біріктіретін айрықша шама ретінде қарастыруға болады. Сонымен жүйенің реакциясы тек кіріс әрекеттерге және ағымдағы күйге тәуелді.
Компьютерлік моделдеу барысында күрделі тәртіппен қызмет атқаратын нақты негізді екі бөлікке бөлуге болады:
– әрекет ету логикасына жауап беретін басқаратын бөлігі – ағымдағы күйге және кіріс әрекеттеріне сәйкес орындалатын әрекеттерді таңдап, жаңа күйге көшіреді;
– басқарылатын бөлігі – басқаратын бөлік таңдаған әрекеттердің орындалуына жауапты және басқаратын бөлік үшін кіріс әрекеттерінің кейбір компоненттерін, яғни кері байланысты құрады.
Дәстүрлі басқару теориясындағыдай басқарылатын бөлік басқару объектісі деп, ал басқаратын бөлікті басқаратын автомат, немесе автомат деп аталады.
Әрекет ету логикасы басқаратын автоматта шоғырланады. Ал басқару объектісінде тек қарапайым орындалатын әрекеттер ғана қалады. Ол сыртқы ортадан келетін кіріс әрекеттерін өңдемейді, тек автоматтан қандай әрекеттер орындалу керектігі жөнінде нұсқаулар алады.
Жоғарыда айтылғандарды жүзеге асыру үшін ашық кодты UniMod – автоматты–
бағытталған пакетінің көмегімен күрделі нақты негіздің компьютерлік моделін автоматтандырылған басқару объектілері түрінде құруға болады [2].
Объектінің жоғары-төмен, оңға-солға және диагоналдар бойынша қозғалысының компьютерлік моделін құрайық. UniMod – автоматты–бағытталған пакетінің көмегімен алдымен байланыс схемасын құрамыз. Байланыс схемасында сырттан әсер ететін оқиғалар, автоматтар және басқарылатын объектілер көрсетіледі. Қозғалыстарды моделдеу барысында кірістірілген автоматтарды қолданамыз: А1 – автоматы жоғары- төмен және оңға-солға қозғалыстарын және объектінің қозғалысын тоқтатуды басқарады, А2 – автоматы қиғаш қозғалыстарды ұйымдастырады (Сурет 1).
Байланыс схемасында автоматқа сырттан әсер ететін оқиғалар келесі кластардың көмегімен жүзеге асырылады:
Уақыт My_Timer.java класы
- Е11 – уақытты жеткізуші оқиға
Объектінің қозғалысын ұйымдастырушы Upr.java класы - Е1 – объектіні жоғары жылжытушы оқиға
- Е2 - объектіні төмен жылжытушы оқиға - Е3 - объектіні оңға жылжытушы оқиға - Е4 - объектіні солға жылжытушы оқиға - Е5 - объектіні тоқтатушы оқиға
Объектінің қиғаш қозғалысын ұйымдастырушы Upr2.java класы - vvp – объектіні жоғары оңға
- vnp – объектіні төмен оңға - vvl – объектіні жоғары солға
- vnl – объектіні төмен солға жылжытушы оқиғалар
Сурет 1. Байланыс схемасы
Басқарылатын объектілердің қызметін ұйымдастыру үшін төмендегі кластар қолданылады:
Объектінің координатасын өзгертетін Dv_p класында - z1- объектінің координатсын өзгерту
- z2 – объектінің бастапқы координатасын анықтау әдісітері берілген.
Объектінің ОХ осі бойынша координатасын өзгертетін Count_i класында - z1- бастапқы координатасын анықтау
- z2 – і координатасын инкременттеу - z3 – і координатасын декременттеу
- z4 - і координатасын қалыпты сақтау әдістері берілген.
Объектінің ОУ осі бойынша координатасын өзгертетін Count_j класында - z1- бастапқы координатасын анықтау
- z2 – і координатасын инкременттеу - z3 – і координатасын декременттеу
- z4 - і координатасын қалыпты сақтау әдістері берілген.
Байланыс схемасы құрылғаннан кейін А1 автоматының өту графы тұрғызылады (Сурет 2).
А1 автоматының өту графында 6 күй бар: diag, up, down, left, right, stop. diag күйіне А2 автоматы кірістірілген. diag күйіне А1 автоматының басқа күйлерінен қиғаш жүрісті ұйымдастырушы оқиғалар жеткізіледі. diag күйінен А1 автоматының күйлеріне жоғары-төмен, оңға-солға жылжыуға сәйкес оқиғалар жеткізіледі.
Сурет 2. А1 автоматының өту графы.
А2 автоматының өту графы А1 автоматының өту графына ұқсас (Сурет 3).
А2 автоматының өту графында 6 күй бар: s1, up_right, down_right, up_left, down_left, Exit. А2 автоматының А1 автоматынан өзгешелігі Exit күрделі күйінің бар болуы. А2 автоматының кез-келген күйінде жоғары-төмен немесе оңға-солға қозғалысты жеткізуші оқиғалар орындалса, А2 автоматы Exit күйіне көшеді, яғни бұл күйде А2 автоматы жұмысын тоқтатады.
Сурет 3. А2 автоматының өту графы
Программа интерфейсінде түймелер төмендегі координаталар бойынша орналасқан:
vv.setBounds(70, 290, 50,50);
s.setBounds(70, 350, 50, 50);
vn.setBounds(70, 410, 50, 50);
vvl.setBounds(10, 290, 50, 50);
vl.setBounds(10, 350, 50, 50);
vnl.setBounds(10, 410, 50, 50);
vvp.setBounds(130,290 , 50, 50);
vp.setBounds(130, 350 , 50, 50);
vnp.setBounds(130, 410 , 50, 50);
actionPerformed(ActionEvent e) әдісіне келесі қосымша шарттар қосылады:
if (e.getSource()==vvp) fireEvent(Upr2.VVP);
if (e.getSource()==vnp) fireEvent(Upr2.VNP);
if (e.getSource()==vvl) fireEvent(Upr2.VVL);
if (e.getSource()==vnl) fireEvent(Upr2.VNL);
A2 автоматындағы әдістерді құру үшін координаталарды анықтау схемасы қолданылды (Сурет 4).
Сурет 4. Координаталарды анықтау схемасы.
Схемаға сәйкес әдістер келсі түрде жазылады:
public void z2(StateMachineContext context) { j++; }
public void z3(StateMachineContext context) { j--; }
Ал қозғалысты ұйымдастыру үшін қолданылатын әдісті төмендегідей жазуға болады:
public void z1(StateMachineContext context) {
Pic.p.setBounds(Count_i.i, Count_j.j, 50, 50); }
j - -
i - - i++
j++
Әдістердің кодтары қарапайым, ал программаның негізгі логикасы графтарда жүзеге асырылған. Бұл автоматты программалаудың көмегімен жүзеге асырылды.
Қолданылған әдебиеттер:
1. Шалыто А.А. Использование граф-схем алгоритмов и графов переходов при программной реализации алгоритмов логического управления. СПб.: Питер, 1996.
2. Сауханова М.С. Автоматты программалауда UniMod пакетін қолдану ерекшеліктері. ІІІ Халықаралық ғылыми-практикалық конференциясының еңбектері.-Тараз, 2009,-13, 46-51.