ความแตกต่างระหว่าง if-else และสวิตช์
เนื้อหา
“ If-else” และ“ switch” ทั้งคู่เป็นข้อความสั่งการเลือก คำสั่งการเลือกโอนย้ายโฟลว์ของโปรแกรมไปยังบล็อกของข้อความเฉพาะตามเงื่อนไขว่า“ เป็นจริง” หรือ“ เท็จ” ความแตกต่างพื้นฐานระหว่างคำสั่ง if-else และ switch คือคำสั่ง if-else“ เลือกการดำเนินการของข้อความตามการประเมินผลของ expression ใน if statement” คำสั่ง switch“ เลือกการดำเนินการของคำสั่งที่มักขึ้นอยู่กับคำสั่งแป้นพิมพ์”
- แผนภูมิเปรียบเทียบ
- คำนิยาม
- ความแตกต่างที่สำคัญ
- ข้อสรุป
แผนภูมิเปรียบเทียบ
พื้นฐานสำหรับการเปรียบเทียบ | ถ้า-อื่น | สวิตซ์ |
---|---|---|
ขั้นพื้นฐาน | คำสั่งใดจะถูกดำเนินการขึ้นอยู่กับเอาต์พุตของนิพจน์ภายในหากคำสั่ง | คำสั่งใดที่จะถูกดำเนินการถูกตัดสินใจโดยผู้ใช้ |
การแสดงออก | คำสั่ง if-else ใช้หลายคำสั่งสำหรับหลายตัวเลือก | งบ switch ใช้การแสดงออกเดียวสำหรับหลายตัวเลือก |
การทดสอบ | คำสั่ง if-else ทดสอบเพื่อความเท่าเทียมเช่นเดียวกับการแสดงออกทางตรรกะ | การทดสอบคำสั่ง switch เพื่อความเท่าเทียมเท่านั้น |
การประเมินผล | ถ้า statement ประเมินค่าจำนวนเต็ม, ตัวอักษร, ตัวชี้หรือชนิดอิงดัชนีหรือบูลีน | คำสั่ง switch จะประเมินเฉพาะอักขระหรือค่าจำนวนเต็ม |
ลำดับของการดำเนินการ | ถ้าคำสั่งจะถูกดำเนินการหรือคำสั่งอื่นจะถูกดำเนินการ | คำสั่ง switch ดำเนินการหนึ่งกรณีหลังจากนั้นจนกว่าจะมีคำสั่ง break หรือปรากฏคำสั่งสิ้นสุดของสวิตช์ |
การดำเนินการเริ่มต้น | หากเงื่อนไขภายในถ้าข้อความเป็นเท็จโดยปกติแล้วคำสั่งอื่นจะถูกดำเนินการหากสร้างขึ้น | หากเงื่อนไขภายในข้อความสั่งสวิตช์ไม่ตรงกับกรณีใด ๆ ตัวอย่างเช่นนั้นคำสั่งเริ่มต้นจะถูกดำเนินการหากสร้างขึ้น |
การแก้ไข | เป็นการยากที่จะแก้ไขคำสั่ง 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) {ศาล << "i =" < นิยามของสวิตช์
คำสั่ง switch เป็นคำสั่งการเลือกหลายตัวเลือก รูปแบบทั่วไปของคำสั่ง switch มีดังต่อไปนี้
switch (นิพจน์) {case constant1: statement (s); หยุดพัก; กรณี constant2: คำสั่ง (s); หยุดพัก; กรณีคงที่ 3: คำสั่ง (s); หยุดพัก; . . คำสั่งเริ่มต้น }
ที่นิพจน์ประเมินค่าจำนวนเต็มหรือค่าคงที่ของอักขระ การแสดงออกที่นี่ประเมินเพียงเพื่อความเท่าเทียมกัน การแสดงออกถูกตรวจสอบกับค่าคงที่อยู่ในงบกรณี หากพบการแข่งขันคำสั่งที่เกี่ยวข้องกับกรณีนั้นจะถูกดำเนินการจนกว่าจะมี“ การแตก” เกิดขึ้น เนื่องจากคำสั่ง break เป็นทางเลือกในคำสั่ง case หากคำสั่ง break ไม่แสดงการดำเนินการจะไม่หยุดจนกว่าจะสิ้นสุดคำสั่ง switch
นิพจน์มีเพียงนิพจน์เดียว คำสั่ง switch มักจะใช้คำสั่งคีย์บอร์ดเพื่อเลือกหนึ่งคำสั่งในหลายกรณี
int c; ศาล << "เลือกค่าจาก 1 ถึง 3"; CIN >> ฉัน; สลับ (i) {กรณีที่ 1: ศาล << "คุณเลือก choclate มืด"; หยุดพัก; กรณีที่ 2: ศาล << "คุณเลือกลูกอม"; หยุดพัก; กรณีที่ 3: ศาล << "คุณเลือก lollypop"; หยุดพัก; . . เริ่มต้นศาล << "คุณเลือกอะไร"; }
ในที่นี้ค่าของ“ i” จะตัดสินใจว่าจะดำเนินการกับเคสใดหากผู้ใช้ให้ค่าเป็น“ i” นอกเหนือจาก 1, 2 หรือ 3 จากนั้นเคสเริ่มต้นจะถูกดำเนินการ
- การแสดงออกภายในถ้าคำสั่งตัดสินใจว่าจะดำเนินการคำสั่งภายในถ้าบล็อกหรือภายใต้บล็อกอื่น ในทางกลับกันการแสดงออกภายในคำสั่งสวิตช์ตัดสินใจว่าจะเรียกใช้เคสใด
- คุณสามารถมีหลายคำสั่งถ้าคำสั่งสำหรับหลายทางเลือกของคำสั่ง ในการสลับคุณมีเพียงหนึ่งการแสดงออกสำหรับตัวเลือกหลายตัว
- คำสั่ง if-esle ตรวจสอบความเท่าเทียมกันรวมถึงการแสดงออกทางตรรกะ ในทางกลับกันสวิตช์จะตรวจสอบความเท่าเทียมกันเท่านั้น
- คำสั่ง if ประเมินค่าจำนวนเต็มอักขระพอยน์เตอร์หรือชนิดอิงดัชนีหรือบูลีน ในทางกลับกันคำสั่ง switch จะประเมินเฉพาะอักขระหรือประเภทข้อมูลจำนวนเต็ม
- ลำดับของการดำเนินการเป็นเหมือนคำสั่งอย่างใดอย่างหนึ่งภายใต้ถ้าบล็อกจะดำเนินการหรือคำสั่งภายใต้คำสั่งบล็อกอื่นจะดำเนินการ ในทางกลับกันนิพจน์ในคำสั่ง switch จะตัดสินใจว่าเคสใดที่จะเรียกใช้งานและถ้าคุณไม่ได้ใช้คำสั่ง break หลังจากแต่ละเคสมันจะรันจนกระทั่งสิ้นสุดคำสั่ง Switch
- หากการแสดงออกภายในถ้าเลี้ยวลึกหนาบางเป็นเท็จคำสั่งภายในบล็อกอื่นจะถูกดำเนินการ หากการแสดงออกภายในคำสั่งเปลี่ยนเป็นเท็จแล้วคำสั่งเริ่มต้นจะถูกดำเนินการ
- เป็นการยากที่จะแก้ไขคำสั่ง if-else เนื่องจากเป็นที่น่าเบื่อในการติดตามเมื่อต้องการแก้ไข ในทางกลับกันมันเป็นเรื่องง่ายที่จะแก้ไขคำสั่งสลับเนื่องจากง่ายต่อการติดตาม
สรุป:
คำสั่ง switch นั้นง่ายต่อการแก้ไขเนื่องจากมันได้สร้างกรณีที่แยกต่างหากสำหรับคำสั่งต่าง ๆ ในขณะที่คำสั่ง if-else ที่ซ้อนกันจะเป็นการยากที่จะระบุคำสั่งที่จะแก้ไข