ความแตกต่างระหว่าง if-else และสวิตช์

ผู้เขียน: Laura McKinney
วันที่สร้าง: 3 เมษายน 2021
วันที่อัปเดต: 5 พฤษภาคม 2024
Anonim
Рефакторинг: switch vs if-else vs enum vs HashMap [Шаблон "Команда"]
วิดีโอ: Рефакторинг: switch vs if-else vs enum vs HashMap [Шаблон "Команда"]

เนื้อหา


“ If-else” และ“ switch” ทั้งคู่เป็นข้อความสั่งการเลือก คำสั่งการเลือกโอนย้ายโฟลว์ของโปรแกรมไปยังบล็อกของข้อความเฉพาะตามเงื่อนไขว่า“ เป็นจริง” หรือ“ เท็จ” ความแตกต่างพื้นฐานระหว่างคำสั่ง if-else และ switch คือคำสั่ง if-else“ เลือกการดำเนินการของข้อความตามการประเมินผลของ expression ใน if statement” คำสั่ง switch“ เลือกการดำเนินการของคำสั่งที่มักขึ้นอยู่กับคำสั่งแป้นพิมพ์”

  1. แผนภูมิเปรียบเทียบ
  2. คำนิยาม
  3. ความแตกต่างที่สำคัญ
  4. ข้อสรุป

แผนภูมิเปรียบเทียบ

พื้นฐานสำหรับการเปรียบเทียบถ้า-อื่นสวิตซ์
ขั้นพื้นฐานคำสั่งใดจะถูกดำเนินการขึ้นอยู่กับเอาต์พุตของนิพจน์ภายในหากคำสั่งคำสั่งใดที่จะถูกดำเนินการถูกตัดสินใจโดยผู้ใช้
การแสดงออกคำสั่ง 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 จากนั้นเคสเริ่มต้นจะถูกดำเนินการ

  1. การแสดงออกภายในถ้าคำสั่งตัดสินใจว่าจะดำเนินการคำสั่งภายในถ้าบล็อกหรือภายใต้บล็อกอื่น ในทางกลับกันการแสดงออกภายในคำสั่งสวิตช์ตัดสินใจว่าจะเรียกใช้เคสใด
  2. คุณสามารถมีหลายคำสั่งถ้าคำสั่งสำหรับหลายทางเลือกของคำสั่ง ในการสลับคุณมีเพียงหนึ่งการแสดงออกสำหรับตัวเลือกหลายตัว
  3. คำสั่ง if-esle ตรวจสอบความเท่าเทียมกันรวมถึงการแสดงออกทางตรรกะ ในทางกลับกันสวิตช์จะตรวจสอบความเท่าเทียมกันเท่านั้น
  4. คำสั่ง if ประเมินค่าจำนวนเต็มอักขระพอยน์เตอร์หรือชนิดอิงดัชนีหรือบูลีน ในทางกลับกันคำสั่ง switch จะประเมินเฉพาะอักขระหรือประเภทข้อมูลจำนวนเต็ม
  5. ลำดับของการดำเนินการเป็นเหมือนคำสั่งอย่างใดอย่างหนึ่งภายใต้ถ้าบล็อกจะดำเนินการหรือคำสั่งภายใต้คำสั่งบล็อกอื่นจะดำเนินการ ในทางกลับกันนิพจน์ในคำสั่ง switch จะตัดสินใจว่าเคสใดที่จะเรียกใช้งานและถ้าคุณไม่ได้ใช้คำสั่ง break หลังจากแต่ละเคสมันจะรันจนกระทั่งสิ้นสุดคำสั่ง Switch
  6. หากการแสดงออกภายในถ้าเลี้ยวลึกหนาบางเป็นเท็จคำสั่งภายในบล็อกอื่นจะถูกดำเนินการ หากการแสดงออกภายในคำสั่งเปลี่ยนเป็นเท็จแล้วคำสั่งเริ่มต้นจะถูกดำเนินการ
  7. เป็นการยากที่จะแก้ไขคำสั่ง if-else เนื่องจากเป็นที่น่าเบื่อในการติดตามเมื่อต้องการแก้ไข ในทางกลับกันมันเป็นเรื่องง่ายที่จะแก้ไขคำสั่งสลับเนื่องจากง่ายต่อการติดตาม

สรุป:

คำสั่ง switch นั้นง่ายต่อการแก้ไขเนื่องจากมันได้สร้างกรณีที่แยกต่างหากสำหรับคำสั่งต่าง ๆ ในขณะที่คำสั่ง if-else ที่ซ้อนกันจะเป็นการยากที่จะระบุคำสั่งที่จะแก้ไข