Үзэгдлээр хөтлөгдөх програмчлал
Event driven programming
Аливаа програм гэдэг гаднаас орж ирэх өгөгдөл дээр үйлдэл хийгээд үр дүнг гадагш дамжуулдаг байх ёстой. Гаднаас ямар нэгэн мэдээлэл орж ирэхэд програмын дотоод төлөв байдалд өөрчлөлт орох бөгөөд програм ямар төлөв байдалд байгаагаас хамаарч гаднаас яг ижилхэн мэдээлэл орж ирэхэд өөр өөр үйлдэл хийж болно. Програмыг ямар нэг үйлдэл хийхэд хүргэж байгаа гаднаас болон дотроос ирэх мэдээллийг үзэгдэл гэнэ. Ингээд үзэгдлээр хөтлөгдөх програмчлалын тулгын чулуунууд болох үзэгдэл, үйлдэл, төлөв гурвыг тодорхойлчихлоо.
Анх TCL(Tool Common Language) дээр утсаар холбогдсон хэрэглэгчтэй харилцдаг IVR(Interactive Voice Response) програм хийж үзэгдлээр хөтлөгдөх програмчлалтай танилцаж байсан юм. Хэрэглэгч системтэй утсан дээрх товчоороо харилцана, систем хариу үйлдлээ дуу хоолойгоор хэлнэ. Товч тайлбарлавал :
1. Хэрэглэгч утсаар холбогдмогц зааварыг ямар хэл дээр авахыг асууна. 2. Тэгээд хэлээ сонгохоор нь нууц кодоо оруулаарай гэж хэлээд хүлээнэ. 3. Хэрэглэгчийн оруулсан код зөв бол дансных нь үлдэгдлийг хэлж өгөөд ярих дугаараа оруулахыг хүснэ. 4. Хэрэглэгч аль орон руу залгаж байгаагаас хамааруулж ярих хугацааных нь хязгаарыг хэлж өгөөд хэрэглэгчийг залгасан дугаартай нь холбож өгнө.
Ерөнхийдөө нэг иймэрхүү энгийн програм байсан боловч програмчлалын хэл нь ч шинэ, програмчлах хэлбэр нь ч шинэ байснаас жаахан хүндрэлтэй асуудлууд гарч байж билээ.
Энэ хэлбэрийн програмыг үзэгдэл үүсэхэд харгалзах үйлдлийг хийгээд дараагийн төлөвт шилжинэ гэсэн өгүүлбэрээр томъёлж болно. Системийн оршин байж болох төлөв байдлууд болон үүсэж болох үзэгдлүүдийг бүрэн тодорхойлох хэрэгтэй бөгөөд ингэсний дараа дурын төлөв байдалд дурын үзэгдэл үүсэхэд ямар үйлдэл хийгээд дараа нь ямар төлөв байдалд шилжихийг тодорхойлох хэрэгтэй. Ингэхээр Үзэгдлийн тоо Х Төлөв байдлын тоо гэсэн харьцаатай хүснэгт болох юм. Хүснэгтийн нүд болгонд хийх үйлдэл болон дараачийн төлөв агуулагдаж байх ёстой. Ийм хүснэгтийг төлөв байдлын хүснэгт, англиар бол state matrix гэдэг. Жишээ болгож зургийн апратны ажиллагааны төлөвийн хүснэгтийг хийе. Энгийн байлгах үүднээс цөөхөн товчтой байхаар тооцлоо.
Үзэгдэл\Төлөв | Зураг авах төлөвт | Зураг үзэх төлөвт | Унтраалттай төлөвт |
---|---|---|---|
Дуранг онгойлгох товч дарагдах | Юу ч хийхгүй, төлөв өөрчлөгдөхгүй | Дуранг сунгаад, зураг авах төлөвт шилжинэ | Асаагаад, дуранг сунгаад, зураг авах төлөвт шилжинэ |
Зураг үзэх товч дарагдах | Дуранг эвхээд, зураг үзэх төлөвт шилжинэ | Юу ч хиихгүй, төлөв өөрчлөгдөхгүй | Дэлгэцэнд сүүлчийн авсан зургыг харуулаад, зураг үзэх төлөвт шилжинэ |
Унтааж асаах товч дарагдах | Дуранг эвхээд унтарна, унтраалттай төлөвт шилжинэ | Дэлгэцийг унтраагаад, унтраалттай төлөвт шилжинэ | Асаагаад, зураг үзэх төлөвт шилжинэ |
Жижигрүүлэх товч дарагдах | Дуранг богиносгож холоос харна, төлөв өөрчлөгдөхгүй | Зургыг жижигрүүлж харна, төлөв өөрчлөгдөхгүй | Юу ч хийхгүй, төлөв өөрчлөгдөхгүй |
Томруулах товч дарагдах | Дуранг сунгаж татаж харуулна, төлөв өөрчлөгдөхгүй | Зургыг томруулж харна, төлөв өөрчлөгдөхгүй | Юу ч хийхгүй, төлөв өөрчлөгдөхгүй |
Дээрх хүснэгтийг бодит байдал арай дөхүүлье гэвэл батерэй дуусах, санах ой дүүрэх, зураг устгах зэрэг үйлдлүүдийг оруулж өгөх хэрэгтэй. Жинхэнэ зургийн апаратны хувьд USB холболт болон төрөл бүрийн тохиргоо хийдэг үйлдлүүдийг оруулахаар хэдэн мянган төлөв байдал үзэгдлүүдийг тооцох болох нь дамжиггүй. Ийм олон төлөв байдал болон үзэгдлийг нэг хүснэгтээр харуулах нь тохиромжгүй байдаг тул дэд хэсэг болгоноор нь хүснэгт хийдэг.
Ингэж төлөвийн хүснэгтээр тодорхойлогдсон системийн програмын үндсэн урсгалыг хийхэд ерөөсөө л нилээд олон салаатай switch юмуу if else хэрэглэсэн функц бичихэд хангалттай. Үйлдлүүдыг тус тусад нь функц болгож бичээд үндсэн хэсэгтээ үзэгдэл төлөв байдал хоёрыг шалгаад л харгалзах функцыг дуудахад болчихно. Ингэж төлөвийн хүснэгт үүсгэн үзэгдлээр програмчлах нь системийн ажиллагааг ойлгох, шалгах, шинэ үйлдэл ба шинэ үзэгдэл нэмэхэд хялбар байдгаараа давуу талтай. Мөн онолын түвшинд програмынхаа зөв эсэхийг батлах боломж ч байдаг.
Гэхдээ програм маань ажиллахын тулд бид гадаа ямар нэг үзэгдэл боллоо гэдгийг мэдэх хэрэгтэй. Гадаа ямар нэг юм болж байгаа эсэхийг сонсож байдаг чих бидэнд хэрэгтэй гэсэн үг. Тэгэхээр чихийг бас бид нар програмчилж өгнө гэдгийг мартаж болохгүй. Жишээ нь сүлжээгээр мэдээлэл орж ирэхийг сонсох, ямар нэг тодорхой хугацаа өнгөрөхөд дугардаг сэрүүлэг тавих гэх мэт. Эдгээрийн ажиллагаа үндсэн хэсгийн ажиллагаанаас тусдаа тул үндсэн хүснэгтэд тусгахгүй байх нь зүйтэй.
Үзэгдлээр хөтлөгдөх програмчлалыг нэг үзэгдэл үүсэхэд гарах үр дүн нь өөр үзэгдэлд хийх хариу үйлдэлд нөлөөлдөг тохиолдолд ашиглахад их хөдөлмөр хэмнэдэг. Жишээлбэл олон товчтой дэлгэц хийх, дээр дурдсан шиг интерактив систем гэх мэт.
Үзэгдлээр хөтлөгдөх програмчлалын талаар холбоосууд: