คำสั่งเลือกทำแบบทางเดียว
คำสั่งเลือกทำแบบทางเดียว (if)
การเลือกทำแบบทางเดียวเพื่อจะตรวจสอบว่าชุดคำสั่งที่ตามมาจะทำหรือไม่ ในภาษา C จะใช้คำสั่ง if ในการทำงานของคำสั่ง คอมพิวเตอร์จะตรวจสอบเงื่อนไขก่อน ถ้าเงื่อนไขเป็นจริงจะทำคำสั่งหรือสเตตเมนต์ที่ตามหลัง หรืเป็นสเตตเมนต์รวมที่อยู่ในเครื่องหมายปีกกาเปิดและปีกกาปิด { } แต่ถ้าเงื่อนไขเป็นเท็จคอมพิวเตอร์จะทำตามคำสั่งหรือสเตตเมนต์ต่อไป โดยรูปแบบของคำสั่ง if ในภาษา C เป็นดังต่อไปนี้
if (condition) { action statement}
โดยการตรวจสอบเงื่อนไข จะเป็นการกระทำแบบบูลีน(boolean) ผลลัพธ์ที่ได้จะเป็นจริงหรือเท็จเท่านั้น ถ้าหากมีการใช้ตัวดำเนินการจะใช้ตัวดำเนินการเปรียบเทียบสำหรับการทำงานของคำสั่ง if สามารถเขียนเป็นผังงาน (flow chart) ได้ดังนี้
=เท่ากับ!=ไม่เท่ากับสำหรับการตรวจสอบเงื่อไขจะใช้ตัวดำเนินการเปรียบเทียบ ได้แก่>มากกว่า>=มากกว่าหรือเท่ากับ<น้อยกว่า<=น้อยกว่าหรือเท่ากับ=เท่ากับ!=ไม่เท่ากับสำหรับการตรวจสอบเงื่อไขจะใช้ตัวดำเนินการเปรียบเทียบ ได้แก่
ในการตรวจสอบเงื่อนไขนั้นตัวแปรที่นำมาเปรียบเทียบจะต้องเป็นข้อมูลประเภทเดียวกัน ตัวอย่างเช่น ถ้าให้ ch เป็น char ให้ num และ mark เป็น int การตรวจสอบเงื่อนไขอาจจเป็นได้ดังนี้
if (ch == ‘A’)ถ้า ch เก็บรหัส ASCII ของ A จะเป็นจริงif (num == 8)
ถ้า num มีค่าเท่ากับ 8 จะเป็นจริงif (mark == num)
ถ้า mark มีค่าเท่ากับ num จะเป็นจริง
นอกจากนี้การตรวจสอบเงื่อนไขสามารถใช้ตัวดำเนินการทางตรรกะมาร่วมด้วยได้ อย่างเช่น ถ้าหากตัวแปร score ใช้เก็บคะแนน และต้องการตรวจสอบว่าถ้าคะแนนมากกว่าหรือเท่ากับ 70 และน้อยกว่า 80 ให้ได้เกรด B จะเขียนคำสั่ง if ได้เป็น
ตัวอย่างโปรแกรมต่อไปจะเป็นการใช้คำสั่ง if มาสร้างเป็นโปรแกรมทายตัวเลข โดยในโปรแกรมจะกำหนดตัวเลขไว้ในตัวแปรเป็น 123 และคอมพิวเตอร์จะให้ป้อนตัวเลขเข้าไป ถ้าค่าที่ป้อนเข้าไป มีค่าเท่ากัน คอมพิวเตอร์จะแสดงค่าว่า *** Right *** จากโปรแกรมจะสังเกตเห็นว่านิพจน์หลัง if จะใช้เครื่องหมาย == ซึ่งเป็นการเปรียบเทียบว่าเท่ากันหรือไม่
ตัวอย่าง โปรแกรมต่อไปนี้จะตรวจสอบว่า x มากกว่า y จริงหรือไม่ ถ้าหาก x มากกว่า y จริงโปรแกรมจะทำคำสั่งต่อมา
ตัวอย่าง ถ้าหากการเขียนโปรกรมตรวจสอบว่า x มากกว่า y และน้อยกว่า 10 หรือไม่ ถ้าเป็นจริงให้แสดงตัวเลข x ออกมาจะสามารถเขียน
ตัวอย่าง ถ้าหากตัวแปร mark เก็บคะแนน และต้องการตรวจสอบว่าถ้าคะแนนมากกว่า 80 และน้อยกว่าหรือเท่ากับ 100 ให้ได้เกรด A จะเขียนคำสั่ง if ได้เป็น
ในการตรวจสอบเงื่อนไขนั้นตัวแปรที่นำมาเปรียบเทียบจะต้องเป็นข้อมูลประเภทเดียวกัน ตัวอย่าง เช่น
ถ้าให้ ch เป็น char ให้ num และ mark เป็น int การตรวจสอบเงื่อนไขอาจเขียนได้ดังนี้
ตัวอักขระสองตัวสามารถนำมาเปรียบเทียบกันได้เช่นกัน เนื่องจากภาจาวาจะเก็บตัวอักขระในรูปของรหัสยูนิโค้ด (Unicode) เมื่อมีการเปรียบเทียบภาษาจาวาจะนำเอารหัสยูนิโค้ด ซึ่งอยู่ในรูปของเลขจำนวนเต็มมาเปรียบเทียบกัน อย่างเช่น ตัว A จะมาก่อนตัว B เนื่องจากรหัสของตัว A คือ 65 ส่วนรหัสของตัว B คือ 66 ดังนั้น ถ้าหากเขียนนิพจน์เป็น A<B จะได้ค่าเป็นจริงเสมอ และถ้าหากมีการเขียนสเตตเมนต์
จะทำให้การตรวจสอบเงื่อนไขของ if เป็นจริงเสมอ
ในการใช้คำสั่งตรวจสอบเงื่อนไข ควรระวังดังต่อไปนี้
1.ระวังอย่าใส่เคืร่องหมายเซมิดคลอน ( ; ) หลังการตรวจสอบเงื่อนไขของ if เนื่องจากถ้าคอมไพล์เลอร์พบเครื่องหมายเซมิโคลอนมันจะมองเป็นสเตตเมนต์ว่าง ( null statement ) คือไม่ทำอะไร
2.ถ้าหากสเตตเมนต์ที่ต้องการให้ทำหลัง if เป็นสเตตเมนต์รวม หรือมีการทำหลายๆ คำสั่ง จะต้องใส่เครื่องหมายวงเล็บ เพื่อรวมสเตตเมนต์เป็นบล็อก
จากส่วนของโปรแกรมทางซ้ายมือ สเตตเมนต์รวมที่อยู่ในเครื่องหมายปีกกาจะทำทั้งหมดถ้าหากเงื่อนไขของ if เป็นจริง แต่ส่วนของโปรแกรมทางขวามือ ถ้าหากเงื่อนไขของ if เป็นจริงจะทำ bonus = 500.0สเตตเมนต์เดียวกัน
การเลือกทำแบบทางเดียวเพื่อจะตรวจสอบว่าชุดคำสั่งที่ตามมาจะทำหรือไม่ ในภาษา C จะใช้คำสั่ง if ในการทำงานของคำสั่ง คอมพิวเตอร์จะตรวจสอบเงื่อนไขก่อน ถ้าเงื่อนไขเป็นจริงจะทำคำสั่งหรือสเตตเมนต์ที่ตามหลัง หรืเป็นสเตตเมนต์รวมที่อยู่ในเครื่องหมายปีกกาเปิดและปีกกาปิด { } แต่ถ้าเงื่อนไขเป็นเท็จคอมพิวเตอร์จะทำตามคำสั่งหรือสเตตเมนต์ต่อไป โดยรูปแบบของคำสั่ง if ในภาษา C เป็นดังต่อไปนี้
if (condition) { action statement}
โดยการตรวจสอบเงื่อนไข จะเป็นการกระทำแบบบูลีน(boolean) ผลลัพธ์ที่ได้จะเป็นจริงหรือเท็จเท่านั้น ถ้าหากมีการใช้ตัวดำเนินการจะใช้ตัวดำเนินการเปรียบเทียบสำหรับการทำงานของคำสั่ง if สามารถเขียนเป็นผังงาน (flow chart) ได้ดังนี้
=เท่ากับ!=ไม่เท่ากับสำหรับการตรวจสอบเงื่อไขจะใช้ตัวดำเนินการเปรียบเทียบ ได้แก่>มากกว่า>=มากกว่าหรือเท่ากับ<น้อยกว่า<=น้อยกว่าหรือเท่ากับ=เท่ากับ!=ไม่เท่ากับสำหรับการตรวจสอบเงื่อไขจะใช้ตัวดำเนินการเปรียบเทียบ ได้แก่
ในการตรวจสอบเงื่อนไขนั้นตัวแปรที่นำมาเปรียบเทียบจะต้องเป็นข้อมูลประเภทเดียวกัน ตัวอย่างเช่น ถ้าให้ ch เป็น char ให้ num และ mark เป็น int การตรวจสอบเงื่อนไขอาจจเป็นได้ดังนี้
if (ch == ‘A’)ถ้า ch เก็บรหัส ASCII ของ A จะเป็นจริงif (num == 8)
ถ้า num มีค่าเท่ากับ 8 จะเป็นจริงif (mark == num)
ถ้า mark มีค่าเท่ากับ num จะเป็นจริง
นอกจากนี้การตรวจสอบเงื่อนไขสามารถใช้ตัวดำเนินการทางตรรกะมาร่วมด้วยได้ อย่างเช่น ถ้าหากตัวแปร score ใช้เก็บคะแนน และต้องการตรวจสอบว่าถ้าคะแนนมากกว่าหรือเท่ากับ 70 และน้อยกว่า 80 ให้ได้เกรด B จะเขียนคำสั่ง if ได้เป็น
ตัวอย่างโปรแกรมต่อไปจะเป็นการใช้คำสั่ง if มาสร้างเป็นโปรแกรมทายตัวเลข โดยในโปรแกรมจะกำหนดตัวเลขไว้ในตัวแปรเป็น 123 และคอมพิวเตอร์จะให้ป้อนตัวเลขเข้าไป ถ้าค่าที่ป้อนเข้าไป มีค่าเท่ากัน คอมพิวเตอร์จะแสดงค่าว่า *** Right *** จากโปรแกรมจะสังเกตเห็นว่านิพจน์หลัง if จะใช้เครื่องหมาย == ซึ่งเป็นการเปรียบเทียบว่าเท่ากันหรือไม่
ตัวอย่าง โปรแกรมต่อไปนี้จะตรวจสอบว่า x มากกว่า y จริงหรือไม่ ถ้าหาก x มากกว่า y จริงโปรแกรมจะทำคำสั่งต่อมา
ตัวอย่าง ถ้าหากการเขียนโปรกรมตรวจสอบว่า x มากกว่า y และน้อยกว่า 10 หรือไม่ ถ้าเป็นจริงให้แสดงตัวเลข x ออกมาจะสามารถเขียน
ตัวอย่าง ถ้าหากตัวแปร mark เก็บคะแนน และต้องการตรวจสอบว่าถ้าคะแนนมากกว่า 80 และน้อยกว่าหรือเท่ากับ 100 ให้ได้เกรด A จะเขียนคำสั่ง if ได้เป็น
ในการตรวจสอบเงื่อนไขนั้นตัวแปรที่นำมาเปรียบเทียบจะต้องเป็นข้อมูลประเภทเดียวกัน ตัวอย่าง เช่น
ถ้าให้ ch เป็น char ให้ num และ mark เป็น int การตรวจสอบเงื่อนไขอาจเขียนได้ดังนี้
ตัวอักขระสองตัวสามารถนำมาเปรียบเทียบกันได้เช่นกัน เนื่องจากภาจาวาจะเก็บตัวอักขระในรูปของรหัสยูนิโค้ด (Unicode) เมื่อมีการเปรียบเทียบภาษาจาวาจะนำเอารหัสยูนิโค้ด ซึ่งอยู่ในรูปของเลขจำนวนเต็มมาเปรียบเทียบกัน อย่างเช่น ตัว A จะมาก่อนตัว B เนื่องจากรหัสของตัว A คือ 65 ส่วนรหัสของตัว B คือ 66 ดังนั้น ถ้าหากเขียนนิพจน์เป็น A<B จะได้ค่าเป็นจริงเสมอ และถ้าหากมีการเขียนสเตตเมนต์
จะทำให้การตรวจสอบเงื่อนไขของ if เป็นจริงเสมอ
ในการใช้คำสั่งตรวจสอบเงื่อนไข ควรระวังดังต่อไปนี้
1.ระวังอย่าใส่เคืร่องหมายเซมิดคลอน ( ; ) หลังการตรวจสอบเงื่อนไขของ if เนื่องจากถ้าคอมไพล์เลอร์พบเครื่องหมายเซมิโคลอนมันจะมองเป็นสเตตเมนต์ว่าง ( null statement ) คือไม่ทำอะไร
2.ถ้าหากสเตตเมนต์ที่ต้องการให้ทำหลัง if เป็นสเตตเมนต์รวม หรือมีการทำหลายๆ คำสั่ง จะต้องใส่เครื่องหมายวงเล็บ เพื่อรวมสเตตเมนต์เป็นบล็อก
จากส่วนของโปรแกรมทางซ้ายมือ สเตตเมนต์รวมที่อยู่ในเครื่องหมายปีกกาจะทำทั้งหมดถ้าหากเงื่อนไขของ if เป็นจริง แต่ส่วนของโปรแกรมทางขวามือ ถ้าหากเงื่อนไขของ if เป็นจริงจะทำ bonus = 500.0สเตตเมนต์เดียวกัน