หน่วยที่ 4 การเขียนโปรแกรมแบบมีการตัดสินใจ

ในหน่วยนี้จะศึกษาเกี่ยวกับการเขียนโปรแกรมที่มีการตัดสินใจการทางานของโปรแกรม ซึ่งใน การพัฒนาโปรแกรม จะหลีกเลี่ยงการเขียนโปรแกรมในลักษณะเช่นนี้ไปไม่ได้

4.1หลักการเขียนโปรแกรมแบบมีการตัดสินใจ

41.1 การเขียนโปรแกรมตัดสินใจ IF…End IF

การเขียนโปรแกรมแบบมีการตัดสินใจ เป็นการเขียนโปรแกรมเพื่อให้โปรแกรมเลือกตัดสินใจจะประมวลผลหรือไม่ประมวลผลสิ่งใดสิ่งหนึ่ง ซึ่งรูปแบบที่เข้าใจง่ายที่สุดคือการเขียนแบบ IE…. End IF โดย การเขียนประโยค IF…End IF จะมีการเขียนเงื่อนไขเพื่อให้ประมวลผลสําหรับการตัดสินใจหลักคําสั่ง IF

ดังตัวอย่าง Ex. 1



จาก Ex. 1 ข้างต้นจะพบกว่าการเขียน IF...End IF จะมีการเขียนเงื่อนไขซึ่งอยู่หลัง IF เป็น เงื่อนไขที่ใช้ในการตัดสินใจว่าจะประมวลผลคําสั่งหลัง Then หรือไม่ หากเงื่อนไขเป็นจริง (animal = “แมว") คําสั่งที่อยู่หลัง Then จะทําการประมวลผล (MsgBox("เหมียว เหมียว...")) แต่หากเงื่อนไขไม่เป็น จริง คําสั่งหลัง Then จะไม่เกิดการประมวลผลใด ๆ

4.1.2 การเขียนโปรแกรมตัดสินใจ IF .. Else End IF

เบื้องต้นให้ผู้ศึกษาทําความเข้าใจก่อนว่าการเขียน IF - Else คือ การเลือกที่จะตัดสินจะ กระทําการประมวลผลที่ IF หรือ Else โดยที่มีการกําหนดเงื่อนไขในการตัดสินใจให้แก่ IF ให้ผู้ศึกษาดู ไวยากรณ์ดังนี้ประกอบ




จากตัวอย่าง Ex.2 ให้ผู้เรียนดูบรรทัดที่มีการประกาศตัวแปร num ซึ่งมีการเก็บค่า 20 ไว้กับตัวแปร (num = 20) จากนั้นบรรทัดต่อมา มีการเขียนประโยค IE เพื่อทําการตรวจสอบค่า num มิคาเท่ากับ 20 หรือไม่ โดยการเขียนเงื่อนไขนี้ไว้ภายในเครื่องหมายวงเล็บหลัง IF (num = 20) ถ้าเงื่อนไขนี้เป็นจริง โปรแกรมจะประมวลผลคําสั่งหลัง Then นั้นก็คือการแสดงหน้าจอแจ้งเตือนที่มีข้อความว่า “เท่ากับค่า 20" แต่ถ้าเงื่อนไขนี้ไม่เป็นจริง ประโยค IF นี้จะประมวลผลหลัง Else นั้นคือแสดงหน้าจอแจ้งเตือนแสดงข้อความว่า “ไม่เท่ากับ 20"

จากการอธิบายข้างต้น แสดงเป็นแผนผังแสดงลําดับการตัดสินใจของการเขียนในแบบ IF ได้ดังนี้


รูปที่ 4.1 การตัดสินใจในเเบบ IF...Else...End IF


4.1.3 การเขียนโปรแกรมตัดสินใจ IF… ElseIF… Else… End IF

การเขียน ElseIF เป็นการตัดสินใจต่อเนื่องมาจากการตัดสินใจในขั้นของ IF หมายความว่า กที่เงื่อนไขหลัง IF ไม่เป็นจริง โปรแกรมจะทําการพิจารณาเงื่อนไขที่อยู่กับ ElseIF อีกครั้ง หากทาง IF ไม่เป็นจริงเลย โปรแกรมจึงจะไปประมวลผลที่ Else ซึ่งอยู่ท้ายสุด ตัวอย่าง ดังนี้



จากใน Ex.3 ในบรรทัดแรก ซึ่งเป็นการประกาศตัวแปร num เก็บค่า 45 ไว้ในตัวแปร จากนั้น ในบรรทัดต่อมา IF เป็นการตรวจสอบค่าตัวแปร num ว่ามีค่าเท่ากับ 20 หรือไม่ (num = 20) หากเท่ากับ 20 โปรแกรมจะทําการประมวลผลคําสั่งที่อยู่หลัง Then ในบรรทัดเดียวกับ IF นั่นคือ แสดงหน้าจอแจ้งเตือน ออกมาพร้อมกับแสดงข้อความว่า “เท่ากับค่า 20"

หากเงื่อนไขหลัง IF ตามที่ได้อธิบายผ่านมาไม่เท่ากับ 20 โปรแกรมจะทําการตรวจสอบต่อไป ยังบรรทัด ElseIF โดยดูที่เงื่อนไขหลัง ElseIF ว่าตัวแปร num มีค่าเท่ากับ 45 หรือไม่ หากมีค่าเท่ากับ 45 (num = 45) โปรแกรมจะทําการประมวลผลคําสั่งที่อยู่หลัง Then ในบรรทัด ElseIF นั่นคือ แสดงหน้าจอ แจ้งเตือนออกมาพร้อมกับแสดงข้อความว่า “เท่ากับค่า 45"

แต่ถ้าหากเงื่อนไขที่อยู่ทั้งข้างหลังของ IF และ ElseIF ไม่เป็นจริงเลย หรือในที่นี้ คือ ถ้า num ไม่เท่ากับ 20 และไม่เท่ากับ 45 โปรแกรมจึงจะมาทําการประมวลผลที่คําสั่งหลัง Else คือ แสดงหน้าจอแจ้ง เตือนออกมาพร้อมกับแสดงข้อความว่า “ไม่เท่ากับ 20 และ 45"

จากการอธิบายข้างต้น ผู้เขียนจะแสดงเป็นแผนผังแสดงลําดับการตัดสินใจของการเขียนในแบบ IF... Elself... Else ... EndIF ได้ดังนี้

การเขียนโปรแกรมตัดสินใจในรูปแบบ IF. ElseIF .. Else ... End IF นี้สามารถเขียนการตัดสินใจ โดยใช้ ElseIF ได้มากกว่า 1 ครั้ง หากเงื่อนไขในการตัดสินใจมีมากกว่า 1

เครื่องหมายที่ใช้ในการเปรียบเทียบค่า

จากการศึกษาเรื่องการเขียนโปรแกรมแบบมีการตัดสินใจโดยใช้ IF . ElseIF ... Else ... End IF จะ พบว่า มีการใช้งานเครื่องหมายในการเปรียบเทียบค่าข้อมูล 2 ฝั่ง ว่ามีค่าเท่ากันหรือไม่ โดยการใช้ เครื่องหมายเท่ากับ ( = ) แต่เนื่องจากในการตัดสินใจทางความเป็นจริงแล้ว ไม่เพียงแต่จะมีเฉพาะการ ตัดสินใจในรูปแบบเท่ากับเท่านั้น ยังมีการเปรียบเทียบค่าข้อมูลเพื่อการตัดสินใจอื่น ๆ อีก ดังแสดงใน ตารางที่ 4.1 ดังนี้


ตารางที่ 4.1 เครื่องหมายสำหรับการเปรียบเทียบค่า


การเชื่อมประโยคเงื่อนไขที่มากกว่า 1 เงื่อนไข

ในการเขียนเงื่อนไขการตัดสินใจ ในบางครั้งการตัดสินใจต้องมีการใช้เงื่อนไขที่มากกว่า 1 เงื่อนไขใน 1 กรณี เช่น เงื่อนไขในการรับรางวัลจากห้างสรรพสินค้าแห่งหนึ่งกําหนดว่า ผู้ที่ได้รับรางวัลต้องมีบัตร ประจําตัวประชาชนและมีอายุมากกว่า 20 ปีขึ้นไป นั่นแสดงว่าเงื่อนไขนี้มี 2 เงื่อนไขจึงสามารถตัดสินได้ว่า จะได้รางวัลหรือไม่ได้รางวัล เงื่อนไขคือ 1. ต้องมีบัตรประจําตัวประชาชน (และ) 2. ต้องอายุ 20 ปีขึ้นไป การเขียนเงื่อนไขในลักษณะนี้ จําเป็นต้องอาศัย keyword มาใช้เป็นเครื่องช่วยในการเชื่อมเงื่อนไขทั้งสอง เข้าด้วยกัน ดังนี้

ตารางที่ 4.2 keyword การเชื่อมเงื่อนไขการตัดสินใจ

ตารางที่ 4.3 ผลของเงื่อนไขในแบบ AND และ OR


4. 1.4 การเขียนเงื่อนไขการตัดสินใจที่มากกว่า 1 เงื่อนไขใน 1 กรณี

การเขียนโปรแกรมที่มีการตัดสินใจที่มากกว่า 1 เงื่อนไขใน 1 กรณี ซึ่งเงื่อนไขจะเป็นจริง หรือไม่ขึ้นอยู่กับการใช้ Keyword ในการเชื่อมเสือนไชเข้าด้วยกัน ดังตารางที่ 42 ที่ได้อธิบาย ตัวอย่างการ เขียนแบบมีเงื่อนไขมากกว่า 1 เช่น

ในการเขียนระบบสําหรับการรับค่า Username และ Password ซึ่งต้องมีการตรวจสอบ 5 เงื่อนไข คือ Username และ Password ต้องเท่ากับค่า Username และ Password ที่มีอยู่ในระบบเก็บไว้ ผู้เรียนพึงสังเกติเงื่อนไขในตัวอย่าง Ex.4 จะใช้คำว่า และ ดังนั้น ในกรณีนี้จะใช้ Keyword คือ And ในการเชื่อมเงื่อนไข 2 เงื่อนไขเข้าด้วยกัน ดังนี้




4.1.5 การเขียนโปรแกรมตัดสินใจ Select.... Case

การเขียนโปรแกรมแบบมีการตัดสินใจนอกจากการใช้ IF ต่าง ๆ ที่ได้กล่าวมาแล้ว ยังมีการ เขียนโปรแกรมเพื่อการตัดสินใจอีกรูปแบบหนึ่งที่ VB สามารถเขียนได้ คือ การใช้ Select Case ซึ่งการใช้ งาน Select Case จะมีความคล้ายกับการใช้งาน IF...Then ... ElseIF... Then... End IF ตามที่ได้เรียนรู้ไปแล้ว ดังนี้

จากตัวอย่าง Ex.5 ในบรรทัดแรกจะพบการประกาศตัวแปรที่ชื่อว่า การค่า animal เก็บค่าเป็น Stringโดยค่าที่เก็บคือ cat จากนั้นในบรรทัดต่อมา จากนั้นในบรรทัดต่อมา เป็นการเขียนโปรแกรมแบบมีการตัดสินใจ โดย การ ซึ่งในบรรทัดนี้มีการส่งตัวแปร animal ไปให้แก่ Select Case เพื่อทําการตรวจสอบค่า

การตรวจสอบค่าของตัวแปร animal กับ Select Case เริ่มจากบรรทัดที่เขียนว่า “Case dog”เป็นการตรวจสอบว่าตัวแปร animal ที่ส่งมานั้นมีค่าเท่ากับ dog หรือไม่ (Case "dog') หากถูกต้องให้ องหน้าจอแจ้งเตือนที่มีข้อความว่า "สุนัข โฮ่งโฮ่ง...” หากไม่ใช่หรือไม่ถูกต้อง โปรแกรมจะทําการตรวจสอบต่อไปใน Case ถัดไป นั่นก็คือการตรวจสอบว่า animal มีค่าเท่ากับ cat หรือไม่ (Case "cat) หากถูกต้องให้แสดงหน้าจอแจ้งเตือนที่มีข้อความว่า “แมว เหมียว เหมียว” หากไม่ใช่หรือไม่ถูกต้องกับการ ตรวจสอบในทุก Case ที่ผ่านมา โปรแกรมจะทําการประมวลผลในบรรทัดคําสั่งหลัง Case Else ในที่นี้คือ แสดงหน้าจอแจ้งเตือนที่มีข้อความว่า “ตัวอะไรก็ไม่รู้ ?") ออกมา



จากตัวอย่าง Ex.6 เป็นการใช้งาน Select Case เพื่อการตัดสินใจประมวลผลอีกรูปแบบหนึ่ง โดยมีการใช้เครื่องหมายในทางการเปรียบเทียบค่าข้อมูล เช่น เครื่องหมายมากกว่า ( )หรือ น้อยกว่า ( 4 ) เข้ามาร่วมใช้งาน ซึ่งเมื่อนําเครื่องหมายดังกล่าวมาใช้งานแล้ว การเขียน Case จะต้องมี Is ตามมาด้วย เสมอ ดังในตัวอย่าง

สําหรับตัวอย่าง EX.6 เป็นการคํานวณหาส่วนลดเมื่อค่าของ total คำนวณหาส่วนลดเมื่อค่าของtotal มีค่ามากกว่า 5000 หรือ มากกว่า 2000 โดยที ถ้ามากกว่า 5000 (>5000 หรือก็คือ 5001 ขึ้นไป) จะได้รับส่วนลด 15% หลา มากกว่า 2000 (-2000 หรือก็คือ 2001-5000) จะได้ส่วนลด 10% หาก total น้อยกว่าหรือเท่ากับ 2000 จะ จะรับส่วนลดเป็น 0% หรือไม่ได้รับส่วนลด เป็นต้น

การเขียนโปรแกรมแบบมีการตัดสินใจโดยใช้ Select Case เป็นอีกรูปแบบหนึ่งที่ควร เห กามสนใจศึกษา แต่ทั้งนี้การเลือกใช้ประโยคการตัดสินใจไม่ว่ารปแบบ IF หรือ Select Case สามารถใช้ ทดแทนกันได้ ขึ้นอยู่กับความถนัดของผู้เรียนในการเลือกใช้งาน