vendingmachine

Holatlar mashinasi – Finite state machine.

Hech o’ylab ko’rganmisiz, metrodagi turniket qanday ishlaydi. Turniketda ikki xil ochiq va yopiq holatlar bo’ladi. Dastlab yopiq holatda bo’lib, yo’lovchi tanga tashlasa ochiq holatga o’tadi. Yo’lovchi to’siqdan o’tgach yana yopiq holatga o’tadi. Juda sodda va qulay qurilma to’g’rimi? Bir qarashda dasturiy vositasi ham soddadek. Bir nechta if lar bilan hal bo’ladigandek. Qo’shimcha shartlar qo’shilsachi? Masalan yo’lovchi tanga tashladi va turniket o’z holatini yopiqdan ochiqga o’zgartirdi, shu holatda yana jeton tashlansa nima bo’ladi. Shu tariqa if lar mo’l bo’lib boraveradi. Katta ehtimollik bilan boshqa bir if qo’shiladi. Shart ifoda ishlatishni yomon yoki xato deyish niyatidan uzoqman. Man urg’u bermoqchi bo’layotgan jihat shuki, kodda shart ifodasining ko’pligi dasturchi uchun kelajakda tushunmovchiliklar keltirib chiqaradi. Tarkibida 15 ta if mavjud bo’lgan metod yoki funksiyani ko’rgan bo’lsangiz yaxshi tushunib turibsiz. Turniket – shartlar ketma-ketligini tuzib olish orqali yechiladigan masalalar ichida nisbatan osonlaridandir. Endi yuqoridagi rasmga e’tibor bering.

Sizningcha ushbu qurilma nech xil holatda bo’lishi mumkin va kodida nechta shart ifoda ishlatiladi? Misol keltiraylik:

  • Mijoz pul kiritadi.
  • Pul sifat tekshiruvidan o’tqaziladi.
  • Pul sifat tekshiruvidan o’tdi.
  • Mijoz mahsulot tanlaydi.
  • Mahsulot narxi kiritilgan pulga to’gri keldi.
  • Mahsulot taqdim qilindi.

Mijoz mahsulotni qo’liga olguncha bajarilishi mumkin bo’lgan eng sodda senariydir. Pul g’ijim yoki shikastlangan bo’lsachi? Agar so’m emas boshqa valyuta turini kiritsangizchi? Qaytim masalasi, mahsulot kiritilgan puldan qimmatroq bo’lgan holatlar ham bor. Yoki kompyuter o’yinini o’ynayapsiz. Qahramoningizning keyingi harakati uchun nechta variant bor? Yugurish, sakrash, sakray turib tangani olish, o’tirib sakrash va hokazo. Variantlar cheksiz bo’lishi mumkin. Tasavvur qildingiz-a?

Bu turdagi muammolar uchun maxsus model mavjud. Uning nomi Finite state machine(FSM)dir. Shunday qilib bugungi maqola FSMlar haqida bo’ladi. FSMlarning qo’llanish ko’lami shu qadar kattaki bu mavzuga to’htab o’tmaslikni noto’g’ri deb hisobladim.

Maqolani ikki qismga bo’lib oldim; nazariy va amaliy qismlar. Anglagan bo’lsangiz kerak bugun maqola nazariy qismdir.

Nazariy qism

FSMning Finite state machine yoki finite-state automata kabi nomlari mavjud. Qisqacha qilib State machine ham deyishadi. O’zbek tiliga Holatlar mashinasi deb tarjima qilinsa bo’ladi. FSM ning keng tarqalgan qisqacha ta’rifi:

Kompyuter tizimlarini yoki mantiqiy ketma-ketliklarni yaratishda qo’llaniladigan matematik model.

FSMga state(holat)lardan iborat abstrakt mashina sifatida qaraladi. Bir vaqtning o’zida faqat bir faol holatda bo’ladi. Mashina o’z holatini o’zgartirishiga transition sababchi bo’ladi. Transitionga biror-bir harakat yoki shart sifatida qarashimiz mumkin. Turniket misolida, yo’lovchining jeton tashlashi transitionga misol bo’ladi. Demak, FSM bu state va transitionlardan tashkil topgan modeldir. FSMni hayotga tadbiq qilish uchun biznes jarayonni(muammoni) bir necha mantiqiy holatlarga bo’lib olamiz. Foydalanuvchi yoki tizim tomonidan bajarilgan amallar hisobiga holatlarni o’zgartirib boramiz. Ma’lum holatga yetib borganda masalaning yechimi topildi deb qabul qilamiz. Yuqoridagi qurilma misolida, “Qurilma mahsulot taqdim qildi” holatiga yetib borganda muammo hal qilindi deb qabul qilinadi(Mijoz mahsulotlik bo’ldi, qurilmaning egasi pullik).

Zamoniy ilm-fan dunyosida FSMning qo’llanish doirasi nihoyatda keng. Biologiya fanidan tortib kompyuterlar CPUlarigacha FSMning muhim o’rni bor. Quyida shu sohalarning qisqacha ro’yhati berilgan.

  • Svetaforlar.
  • Video o’yinlar.
  • Matnni tahlil qilish algoritmlari.
  • Sun’iy so’zlashuv qurilmalari(dasturiy vositalari).
  • Dasturlash tillarini yaratishda.
  • Expedia.com, Amazon.com, Ebuy.com
  • va hokazo…

FSMlarni grafik ifodalashning bir necha usullari mavjud. Masalan yo’nalishli graf, jadval usullari ko’p ishlatiladiganlaridan. Undan tashqari UML tilida FSMlar uchun alohida bo’lim ajratilgan. Quyidagi rasmda turniket uchun yaratilgan FSM yo’nalishli graf usulida ifodalangan. Kelajakda graflar mavzusiga taalluqli maqolalar seriyasini taqdim qilish niyatimiz bor.

statemachine

Rasmdagi doiralar FSMning state(holat)larini, strelkalar esa transition(o’tish)larini anglatadi. Ko’rib turganingizdek, turniketning yopiq holatdan ochiq holatga o’tishiga “jeton” transtition sababchi. Yana bir boshqa transition bu “ochish” dir. Turniket “ochiq” holatiga o’tgach, yo’lovchi “ochish” transitionini amalga oshiradi va ichkariga kiradi. Shundan so’ng turniket yana ochiqdan yopiqqa o’tadi. Turniket yopiq holatda bo’lganida “ochish” transition bajarilsa FSM o’z holatini o’zgartirmaydi. Natijada biznes jarayonning bir talabi amalga oshiriladi, ya’ni jetonsiz kirish yo’q. Keyingi maqolamizda nazariy qismni amalda qo’llab ko’ramiz.

 

(329 marta o'qilgan, bugun 1 marta o'qildi)

O'xshash maqolalar: