สวัสดีครับ วันนี้เราจะมาแสดงตัวอย่างโปรแกรมจำลองอัลกอลิทึม non-preemptive priority ของคอมพิวเตอร์ โดยใช้ visual basic กันนะครับ ก่อนอื่นเลย เราต้องมาทำความรู้จักกับอัลกอลิทึม non-preemptive priority กันก่อน
non-preemptive priority คือหนึ่งในการจัดลำดับการทำงานของคอมพิวเตอร์ โดยจะจัดลำดับจากค่า priority(ความสำคัญ) ว่าความสำคัญของงานไหนมีมากกว่าก็จะทำงานนั้นก่อน แต่จะไม่มีการแทรกกันระหว่างทำงาน เช่น ยังทำงาน A ไม่เสร็จ ก็จะยังไม่ไปทำงาน B ต่อให้งาน B มีความสำคัญมากกว่าก็ตาม แล้วถ้าในกรณีค่าความสำคัญเท่ากันหละจะทำยังไง สำหรับในกรณีนี้นั้น เราจะดูที่ค่า arrival time หรือเวลาในการรอ พูดง่ายๆ ก็คือ ใครมาก่อนได้ทำงานก่อนถ้าลำดับความสำคัญเท่ากัน
ต่อไปจะเป็นเราจะมาดูหน้าตาและการทำงานคร่าวของโปรแกรมกันนะครับ
จากรูปจะเห็นได้ว่ามีส่วนใหญ่ๆ อยู่ 2 ส่วน คือ ส่วนที่แสดงค่าที่ใส่เข้ามาและส่วนที่แสดงผลการทำงาน
เมื่อโปรแกรมทำงานแล้ว
-ในวงกลมสีเขียว คือ ช่องที่ให้เราใส่ตัวเลขเพื่อกำหนดค่าขนาดของข้อมูลที่จะนำเข้ามา
-ในวงกลมสีแดง คือ ค่าของข้อมูลที่ถูกส่งเข้ามาเป็นตารางเพื่อใช้ในการคำนวนในที่นี้ ใช้เป็นไฟล์ excel
-ในวงกลมสีฟ้า คือ ลำดับการทำงานที่จัดเรียงแล้วว่าอันไหนทำงานก่อนหลัง แต่จะเห็นได้ว่าในช่องแรก ที่มี priority 3 ทำไมได้ทำงานก่อน เนื่องจากว่า ค่า Arrival time เป็น 0 หรือก็คือ กำลังทำงานอยู่จึงได้ถูกจัดอยู่ในอันดับแรก เพราะ non-preemptive priority จะไม่มีการแทรกการทำงานของโปรแกรมที่ทำงานอยู่ก่อนแล้วนั่นเอง
ส่วนต่อมาเป็นอีกหนึ่งผลที่แสดงออกมาในรูปแบบของกราฟเพื่อให้ง่ายต่อการทำความเข้าใจ โดยจะแสดงถึงเวลาในและลำดับของการทำงาน
รูปที่เห็นข้างต้นนี้เป็น Flowchart แสดงการทำงานคร่าวๆ ของโปรแกรม
ต่อมานะครับเราจะมาดูในส่วนของ code กัน
ส่วนแรกนี้คือส่วนของการค้นหาไฟล์มาเปิด
ส่วนที่สองนี้คือส่วนที่ใช้เปิดไฟล์ excel
ส่วนนี้คือการสร้างฐานข้อมูลเพื่อดึงข้อมูลจาก excel มาใส่
ส่วนนี้คือส่วนที่ใช้ในการเรียงข้อมูลใส่ในตารางที่สองเพื่อแสดงผล โดยจะเห็นได้ว่า มีส่วนของการดึงข้อมูลช่องแรก หรือข้อมูลที่ Arrival time เป็น 0 หรือคือตัวที่ทำงานอยู่มาใส่ในตารางก่อน แล้วจำนำค่าข้อมูลที่เหลือมาเรียงใส่ในตาราง
ส่วนนี้คือส่วนที่ใช้ในการเคลียค่าข้อมูลเพื่อที่จะนำค่าที่ได้ไปวาดกราฟ
ส่วนนี้เป็นฟังก์ชันในการใช้วาดกราฟ
คลิปอธิบายการทำงานของตัวโปรแกรม
โดยตัวโปรแกรมนี้นั้นเราสามารถนำไปประยุกต์ใช้ได้หลายอย่าง เช่น การจัดคิวเข้างานที่มีการแบ่งราคาของบัตร หรือ ใช้กับการจัดการคิวของคนไข้ในโรงพยาบาลโดยให้คนที่อาการหนักกว่าได้รับการรักษาก่อน เป็นต้น
สุดท้ายนี้ก็หวังว่าข้อมูลที่นำเสนอมาจะเป็นประโยชน์ไม่มากก็น้อย ขอบคุณครับ
link Source Code
https://drive.google.com/drive/folders/1NION_c4CeUQD788LvG_XiaChgJU6nGtC?usp=sharing