กิจกรรมที่ 4.1 การตัดสินใจ
จุดประสงค์การเรียนรู้ :
1. บอกค่าความจริงของประพจน์และเชื่อมประพจน์ได้
2. เขียนเงื่อนไขจากปัญหาต่างๆ ได้
3. อธิบายโครงสร้างการเขียนโปรแกรมแบบมีเงื่อนไขได้
4. เขียนโปรแกรมแบบมีเงื่อนไข (If…else) ได้
5. เขียนโปรแกรมแบบมีเงื่อนไข (switch…case) ได้
1. ประพจน์และค่าความจริง
1.1. ความหมายของประพจน์
ประพจน์ คือ ข้อความหรือประโยคที่มีค่าความจริงเป็นจริง(T) หรือเท็จ(F) อย่างใดอย่างหนึ่งเท่านั้น
ตัวอย่าง
- จำนวนคู่ได้แก่ 2,4,6 มีค่าความจริงเป็นจริง
- 0 มีค่าน้อยกว่า 8 มีค่าความจริงเป็นจริง
- เลข 1 เป็นจำนวนคู่ มีค่าความจริงเป็นเท็จ
- 3 มีค่ามากกว่า 7 มีค่าความจริงเป็นเท็จ
1.2 การเชื่อมประพจน์
เป็นการนำประพจน์มาเชื่อมกันมากกว่า 1 ประพจน์ ซึ่งสามารถบอกได้ว่าเป็นจริงหรือเป็นเท็จได้ ในการเขียนโปรแกรม
ก็นำเอาตัวเชื่อมประพจน์มาใช้ในเงื่อนไขต่างๆ เช่นกันเพื่อช่วยในการตัดสินใจของโปรแกรม และตัวเชื่อมประพจน์ที่นิยมนำมาใช้ในการเขียนโปรแกรม คือ “และ , หรือ” ซึ่งมีค่าความจริงดังที่แสดงในตาราง
: KRU BinaryIT
2. การกำหนดเงื่อนไข
ในชีวิตประจำวันของมนุษย์มักต้องประสบกับปัญหาต่างๆ มากมาย ปัญหาต่างๆ ที่เกิดขึ้นนี้มีแนวทางในการแก้ปัญหาได้หลาก หลายวิธี ขึ้นอยู่กับเงื่อนไขต่างๆ ของปัญหา การเขียนโปรแกรมก็เช่นเดียวกัน ในการแก้ปัญหาก็จะต้องมีเงื่อนไขต่างๆ เข้ามาเกี่ยวข้อง มีการตัดสินใจเลือกได้ว่าจะทำหรือไม่ทำตามคำสั่งโดยขึ้นอยู่กับเงื่อนไขที่เรากำหนดขึ้นมา
การกำหนดเงื่อนไขสำหรับเขียนโปรแกรม จะต้องอาศัยตัวดำเนินการทางคณิตศาสตร์ (ซึ่งกล่าวไว้แล้วในบทที่ 2) เข้ามาช่วยในการกำหนดเงื่อนไขเพื่อนำไปสร้างเป็นเงื่อนไขในคำสั่งควบคุมทิศทางการทำงานของโปรแกรม เช่น If…else, for, switch…case เป็นต้น
: KRU BinaryIT
3. คำสั่ง if…else
การเขียนโปรแกรมเพื่อให้มีการตัดสินใจสามารถใช้คำสั่ง if…else มาช่วยแก้ปัญหาได้ โดยมีรูปแบบของคำสั่ง 3 รูปแบบ คือ
1. if : ใช้กรณีเงื่อนไขเดียว
2. if…else : ใช้กรณีสองเงื่อนไข
3. if…else if : ใช้กรณีมากกว่าสองเงื่อนไข
3.1 การใช้งานคำสั่ง if : ใช้กรณีเงื่อนไขเดียว
3.2 การใช้งานคำสั่ง if…else : ใช้กรณีสองเงื่อนไข
3.3 การใช้งานคำสั่ง if…else if : ใช้กรณีมากกว่าสองเงื่อนไข
อธิบาย
จากคำสั่งเป็นการตรวจสอบมากกว่า 2 เงื่อนไข คือ
- ตรวจสอบตัวแปร number1 มีค่าเท่ากับ number2 หรือไม่ หาก number1 มีค่าเท่ากับ number2 จริง ให้แสดง
ข้อความที่ textBox3 ว่า number1 เท่ากับ number2 ถ้าเงื่อนไขที่ 1 เป็นเท็จจะตรวจสอบเงื่อนไขถัดไป
- ตรวจสอบเงื่อนไขที่ 2 หากตัวแปร number1 มีค่ามากกว่า number2 จริง ให้แสดงข้อความที่ textBox3 ว่า
number1 มากกว่า number2 ถ้าเงื่อนไขที่ 2 เป็นเท็จอีก จะไปทำงานที่ else
- หากทุกเงื่อนไขเป็นเท็จ จะทำงานใน else โดยแสดงข้อความที่ textBox3 ว่า number1 น้อยกว่า number2
*** เมื่อตรวจสอบเจอเงื่อนไขที่เป็นจริงแล้วจะไม่ตรวจสอบเงื่อนไขถัดไปอีก
ตัวอย่างโปรแกรม
ตัวอย่างการใช้คำสั่ง if…else if กับโปรแกรมตัดเกรด โดยผู้ใช้งานป้อนคะแนน และคลิกปุ่มตัดเกรด โปรแกรมจะแสดงเกรดที่ได้ในคอนโทรล textbox ซึ่งโปรแกรมมีการออกแบบหน้าจอ ดังนี้
: KRU BinaryIT
4. คำสั่ง switch…case
เป็นการเขียนโปรแกรมเกี่ยวกับเงื่อนไขแต่ต่างกับคำสั่ง if else ตรงที่เป็นเงื่อนไขที่มีตัวเลือกให้เลือกมากกว่า 2 ตัวเลือก นั่นคือเป็นคำสั่งที่เหมาะกับเงื่อนไขที่มีตัวเลือกมาก หรืออาจจะพิจารณาดูจากโจทย์ปัญหาที่มีลักษณะการเขียนโปรแกรมเป็นแบบเมนูให้เลือก
อธิบาย
จากคำสั่งเป็นการตรวจสอบตัวแปร x ที่มีตัวเลือกจำนวน 4 ตัวเลือก ดังนี้
- ตรวจสอบตัวแปร x มีค่าเท่ากับ 1 หรือไม่ หาก x มีค่าเท่ากับ 1 จริง ให้เปิดภาพ one.gif ใน pictureBox1 แต่ถ้าเป็น
เท็จให้ตรวจสอบ case ถัดไป
- ตรวจสอบตัวแปร x มีค่าเท่ากับ 2 หรือไม่ หาก x มีค่าเท่ากับ 2 จริง ให้เปิดภาพ two.gif ใน pictureBox1 แต่ถ้าเป็น
เท็จให้ตรวจสอบ case ถัดไป
- ตรวจสอบตัวแปร x มีค่าเท่ากับ 3 หรือไม่ หาก x มีค่าเท่ากับ 3 จริง ให้เปิดภาพ three.gif ใน pictureBox1 แต่ถ้าเป็น
เท็จให้ตรวจสอบ case ถัดไป
- ตรวจสอบตัวแปร x มีค่าเท่ากับ 4 หรือไม่ หาก x มีค่าเท่ากับ 4 จริง ให้เปิดภาพ four.gif ใน pictureBox1 แต่ถ้าเป็น
เท็จให้ตรวจสอบ case ถัดไป
- เมื่อตรวจสอบตัวแปร x แล้วไม่ตรงกับ case ใดเลย ให้แสดงข้อความ “ป้อนตัวเลขไม่ถูกต้อง” ใน textBox1
ตัวอย่างโปรแกรม
ตัวอย่างการใช้คำสั่ง switch…case กับโปรแกรมอย่างง่ายสีบอกนิสัย โดยใช้คอนโทรล ListBox แสดงสีต่างๆ แล้วผู้ใช้งานคลิกเลือกสีที่ชอบ และคลิกปุ่มดูผลทำนาย มีการออกแบบหน้าจอ ดังนี้