แผนภูมิเปรียบเทียบ
พื้นฐานสำหรับการเปรียบเทียบ | ถ้า-อื่น | สวิตซ์ |
---|---|---|
ขั้นพื้นฐาน | คำสั่งใดจะถูกดำเนินการขึ้นอยู่กับเอาต์พุตของนิพจน์ภายในหากคำสั่งนั้น | คำสั่งใดที่จะถูกดำเนินการถูกตัดสินใจโดยผู้ใช้ |
การแสดงออก | คำสั่ง if-else ใช้หลายคำสั่งสำหรับหลายตัวเลือก | งบ switch ใช้การแสดงออกเดียวสำหรับหลายตัวเลือก |
การทดสอบ | คำสั่ง if-else ทดสอบเพื่อความเท่าเทียมเช่นเดียวกับการแสดงออกทางตรรกะ | การทดสอบคำสั่ง switch เพื่อความเท่าเทียมเท่านั้น |
การประเมินผล | ถ้า statement ประเมินค่าจำนวนเต็มอักขระพอยน์เตอร์หรือชนิดอิงดัชนีหรือบูลีน | คำสั่ง switch จะประเมินเฉพาะอักขระหรือค่าจำนวนเต็ม |
ลำดับของการดำเนินการ | ถ้าคำสั่งจะถูกดำเนินการหรือคำสั่งอื่นจะถูกดำเนินการ | คำสั่ง switch ดำเนินการหนึ่งกรณีหลังจากนั้นจนกว่าจะมีคำสั่ง break หรือปรากฏคำสั่งสิ้นสุดของสวิตช์ |
การดำเนินการเริ่มต้น | หากเงื่อนไขภายในถ้าข้อความเป็นเท็จโดยปกติแล้วคำสั่งอื่นจะถูกดำเนินการหากสร้างขึ้น | หากเงื่อนไขภายในคำสั่ง switch ไม่ตรงกับกรณีใด ๆ ตัวอย่างเช่นนั้นคำสั่งเริ่มต้นจะถูกดำเนินการหากสร้างขึ้น |
การตัดต่อ | เป็นการยากที่จะแก้ไขคำสั่ง if-else หากใช้คำสั่ง if-else แบบซ้อน | มันง่ายที่จะแก้ไขกรณีสวิตช์เนื่องจากสามารถจดจำได้ง่าย |
คำจำกัดความของ if-else
คำสั่ง if-else เป็นของคำสั่งการเลือกใน OOP รูปแบบทั่วไปของคำสั่ง if-else มีดังต่อไปนี้
ถ้า (นิพจน์) {คำสั่ง}} อื่น {คำสั่ง}
โดยที่“ ถ้า” และ“ อื่น” เป็นคำหลักและข้อความสามารถเป็นข้อความเดี่ยวหรือบล็อกข้อความได้ นิพจน์ประเมินว่าเป็น "จริง" สำหรับค่าที่ไม่เป็นศูนย์ใด ๆ และค่าที่เป็นศูนย์จะประเมินว่าเป็น "เท็จ"
การแสดงออกในถ้าคำสั่งสามารถมีจำนวนเต็มอักขระตัวชี้จุดลอยตัวหรืออาจเป็นประเภทบูลีน คำสั่ง else เป็นทางเลือกในคำสั่ง if-else หากการแสดงออกกลับมาจริงงบภายในถ้าคำสั่งจะถูกดำเนินการและถ้ามันกลับเท็จคำสั่งภายในคำสั่งอื่นจะถูกดำเนินการและในกรณีที่คำสั่งอื่นไม่ได้สร้างขึ้นไม่มีการดำเนินการจะดำเนินการและการควบคุมของโปรแกรมกระโดดออก ของคำสั่ง if-else
ให้เราเข้าใจด้วยตัวอย่าง
int i = 45, j = 34; ถ้า (i == 45 & j == 34) {ศาล << "ฉัน jyou เลือก choclate มืด"; ทำลาย; กรณีที่ 2: ศาล << "คุณเลือกลูกอม"; ทำลาย; กรณีที่ 3: ศาล << "คุณเลือก lollypop"; ทำลาย; . . ศาลเริ่มต้น << "คุณไม่ได้เลือกอะไร"; }
ในที่นี้ค่าของ“ i” จะตัดสินใจว่าจะพิมพ์เคสใดหากผู้ใช้ให้ค่าเป็น“ i” นอกเหนือจาก 1, 2 หรือ 3 จากนั้นเคสเริ่มต้นจะถูกดำเนินการ
ความแตกต่างที่สำคัญระหว่าง if-else และสวิตช์
- การแสดงออกภายในถ้าคำสั่งตัดสินใจว่าจะดำเนินการคำสั่งภายในถ้าบล็อกหรือภายใต้บล็อกอื่น ในทางกลับกันการแสดงออกภายในคำสั่งสวิตช์ตัดสินใจว่าจะเรียกใช้เคสใด
- คุณสามารถมีหลายคำสั่งถ้าคำสั่งสำหรับหลายทางเลือกของคำสั่ง ในการสลับคุณมีเพียงหนึ่งการแสดงออกสำหรับตัวเลือกหลายตัว
- คำสั่ง if-esle ตรวจสอบความเท่าเทียมกันรวมถึงการแสดงออกทางตรรกะ ในทางกลับกันสวิตช์จะตรวจสอบความเท่าเทียมกันเท่านั้น
- คำสั่ง if ประเมินค่าจำนวนเต็มอักขระพอยน์เตอร์หรือชนิดอิงดัชนีหรือบูลีน ในทางกลับกันคำสั่ง switch จะประเมินเฉพาะอักขระหรือประเภทข้อมูลจำนวนเต็ม
- ลำดับของการดำเนินการเป็นเหมือนคำสั่งอย่างใดอย่างหนึ่งภายใต้ถ้าบล็อกจะดำเนินการหรือคำสั่งภายใต้คำสั่งบล็อกอื่นจะดำเนินการ ในทางกลับกันนิพจน์ในคำสั่ง switch จะตัดสินใจว่าจะเรียกใช้เคสใดและหากคุณไม่ได้ใช้คำสั่ง break หลังจากแต่ละเคสจะรันจนกว่าจะสิ้นสุดคำสั่งสวิตช์
- หากการแสดงออกภายในถ้าเลี้ยวลึกหนาบางเป็นเท็จคำสั่งภายในบล็อกอื่นจะถูกดำเนินการ หากการแสดงออกภายในคำสั่งเปลี่ยนกลายเป็นเท็จแล้วคำสั่งเริ่มต้นจะถูกดำเนินการ
- เป็นการยากที่จะแก้ไขคำสั่ง if-else เนื่องจากเป็นที่น่าเบื่อในการติดตามเมื่อต้องการการแก้ไข ในทางกลับกันมันเป็นเรื่องง่ายที่จะแก้ไขคำสั่ง switch เนื่องจากง่ายต่อการติดตาม
สรุป:
คำสั่ง switch นั้นง่ายต่อการแก้ไขเนื่องจากมันได้สร้างกรณีที่แยกต่างหากสำหรับคำสั่งต่าง ๆ ในขณะที่คำสั่ง if-else ที่ซ้อนกันจะเป็นการยากที่จะระบุคำสั่งที่จะแก้ไข