ถ้าเป็นตัวแปรอื่น คำสั่งแบบมีเงื่อนไขหากเป็นอย่างอื่น

งานห้องปฏิบัติการ

ในหัวข้อ: " ผู้ดำเนินการตามเงื่อนไข ถ้า - อื่น "


1. วัตถุประสงค์และไวยากรณ์

ผู้ดำเนินการ เงื่อนไข if-elseทำหน้าที่เลือกทิศทางของโปรแกรมตามเงื่อนไขที่เกิดขึ้น ณ จุดที่กำหนดในโปรแกรม ณ เวลาที่ดำเนินการ

รูปแบบทั่วไปของการเขียนตัวดำเนินการตามเงื่อนไข

ถ้า ( <условие>)

<блок операторов 1>;

<блок операторов 2>;

หากในขณะที่กระทำการนั้น<условие>จริง โปรแกรมจะถ่ายโอนการควบคุม<блоку операторов 1>และต่อจากคำสั่งแรกที่อยู่นอกโครงสร้าง if-else ในเวลาเดียวกัน<блок операторов 2>ไม่ได้ถูกดำเนินการ มิฉะนั้นถ้า<условие>เท็จ ดำเนินการ<блок операторов 2>, ก<блок операторов 1>ข้ามไป แผนภาพบล็อกที่สอดคล้องกัน


เครื่องหมายปีกกาในไวยากรณ์คำสั่ง if-else ใช้เพื่อแยกบล็อก 1 และ 2 ในข้อความ ลองวางเครื่องหมายปีกกาปิดไว้ใต้เครื่องหมายปีกกาเปิดเพื่อให้อ่านง่ายขึ้น รหัสโปรแกรม- เพื่อจุดประสงค์เดียวกันข้อความข้างใน วงเล็บปีกกาต้องเลื่อนไปทางขวาหลายตำแหน่ง

ตามเงื่อนไขใน คำสั่ง if-elseสามารถใช้อะไรก็ได้ การแสดงออกทางตรรกะโดยรับค่า “จริง” หรือ “เท็จ” (จริง – เท็จ) ด้านล่างนี้เป็นตารางที่แสดงการดำเนินการเปรียบเทียบที่ง่ายที่สุดระหว่างจำนวนเต็มและจำนวนจริง

ตัวอย่างที่ 1จำเป็นต้องเขียนโปรแกรมแปลงอุณหภูมิตามระดับเซลเซียส T C (°C) เป็นอุณหภูมิตามระดับเคลวิน T K (K) ผู้ใช้ป้อนค่า T C จากแป้นพิมพ์

สารละลาย. เราใช้สูตรการแปลงที่รู้จักกันดี – T K = T C – T 0 โดยที่ T 0 = –273 °C คืออุณหภูมิเป็นศูนย์สัมบูรณ์ เราจะถือว่า T C ที่ป้อนไม่ถูกต้องหากน้อยกว่า T 0

// – เคลวิน vs เซลเซียส–

#รวม // สำหรับการสตรีม I/O

#รวม // สำหรับคอนโซล I/O (รับ)

#แพรมาอาร์กูซู

ลอยT0 = -273; // ประกาศและเริ่มต้น T0

floatTc, Tk; // ประกาศ Tc และ Tk ที่แท้จริง

ศาล<<» VvediteTc=»; // выводим приглашение

cin>>Tc; // ขอ Tc

ถ้า ( ทีซี < 0) //ตรวจสอบสภาพ Tc

ศาล<<» Tc < T0!»; // условие истинно, выводим на

} // หน้าจอข้อความแสดงข้อผิดพลาด

ทีเค = Tc-T0; // เงื่อนไขเป็นเท็จ โปรดคำนวณ

ศาล<< «Tk =» << Tk; // Tk и выводим на экран

รับ(); // หน่วงเวลาก่อนที่จะกดปุ่ม

กลับ 0; // จบโปรแกรม

พิมพ์โค้ดด้านบน คอมไพล์และรันโปรแกรม ตรวจสอบผลการทำงานที่ค่าต่างๆ ของ T C

2. ตัวเลือกการบันทึกที่สั้นลง

ในการเขียนโปรแกรม เป็นเรื่องปกติที่จะพบว่าจำเป็นต้องมีการดำเนินการบางอย่างเพื่อตอบสนองต่อเงื่อนไขที่มีอยู่ (เช่น หากได้รับข้อมูลที่ป้อนไม่ถูกต้องจากผู้ใช้ ให้แสดงข้อความแสดงข้อผิดพลาดและออกจากโปรแกรม) ในกรณีเช่นนี้ โปรแกรม C++ อาจใช้สัญลักษณ์ชวเลขของคำสั่งแบบมีเงื่อนไขโดยไม่มีบล็อก else อยู่ รูปแบบทั่วไปของบันทึกดังกล่าว

ถ้า ( <условие>)

<блок операторов>;

ในที่นี้ หากเงื่อนไขเป็นจริง การควบคุมจะถูกโอนไปยังบล็อกคำสั่งที่อยู่ในเครื่องหมายปีกกา หากเงื่อนไขเป็นเท็จ บล็อกนี้จะถูกข้ามไป แผนภาพบล็อกที่เกี่ยวข้องนั้นแตกต่างจากแผนภาพก่อนหน้าในกรณีที่ไม่มี "แขน" เดียว


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

ถ้า ( <условие>)

ผู้ปฏิบัติงาน 1;

ผู้ปฏิบัติงาน 2;

ในที่นี้ ตัวดำเนินการ 1 และ 2 ไม่เพียงแต่เป็นการดำเนินการทางคณิตศาสตร์บรรทัดเดียวหรือตัวดำเนินการ I/O ธรรมดาเท่านั้น แต่ยังรวมถึงโครงสร้างหลายบรรทัดที่ซับซ้อนด้วย เช่น ข้อความสั่งแบบมีเงื่อนไข (ซ้อนกัน) หรือตัวดำเนินการวนซ้ำ ซึ่งจะกล่าวถึงด้านล่าง

3. คำสั่งที่ซ้อนกัน

คำสั่งแบบมีเงื่อนไขสามารถซ้อนกันภายในกันได้ ตามอัลกอริธึมซอฟต์แวร์ที่คำสั่งเหล่านั้นนำไปใช้ อนุญาตให้ "ทำรัง" ได้ตามอำเภอใจ

หากคำสั่ง if-else คำสั่งหนึ่งซ้อนอยู่ในอีกคำสั่งหนึ่ง คำสั่งแรกจะรวมอยู่ในคำสั่งที่สอง อย่างเต็มที่และไม่ใช่เพียงส่วนใดส่วนหนึ่งของ if หรือ else เท่านั้น การทับซ้อนกันบางส่วนของแต่ละบล็อกเป็นสิ่งที่ยอมรับไม่ได้

ในตัวอย่างข้างต้น ข้อความใดข้อความหนึ่ง (แสดงด้วยตัวหนา) ซ้อนอยู่ในข้อความอื่น รายการ B) ไม่ถูกต้อง เนื่องจากบล็อก else ของคำสั่งแบบมีเงื่อนไขภายในซ้อนทับบางส่วนกับทั้งบล็อก if และ else ของคำสั่งภายนอก

ตัวอย่างที่ 2ผู้ใช้ป้อนจำนวนเต็มสามตัว a, b, c จากแป้นพิมพ์ จำเป็นต้องแสดงตัวเลขที่ใหญ่ที่สุดเหล่านี้

สารละลาย. หนึ่งในอัลกอริธึมที่เป็นไปได้สำหรับการแก้ปัญหานี้จะแสดงอยู่ในบล็อกไดอะแกรมต่อไปนี้


โครงการนี้สามารถนำไปใช้งานทางโปรแกรมได้โดยใช้คำสั่ง if-else ที่ซ้อนกัน

// – การเลือกตัวเลขที่ใหญ่ที่สุดจาก 3 ตัว –

#รวม

#รวม

#แพรมาอาร์กูซู

int หลัก (int argc, ถ่าน * argv)

ลอย a, b, c; // ประกาศตัวแปร 3 ตัว

ศาล<< «Vvedite a –»; // вводимзначения a, b, c

ศาล<< «Vvedite b –»;

ศาล<< «Vvedite c –»;

ถ้า (a>b) // ถ้า a > b

ถ้า (a>c) // ถ้า a > c

ศาล<<» max = «<

อื่น // มิฉะนั้นเช่น ถ้าก<= с

ศาล<<» max = «<

อื่น // มิฉะนั้นเช่น ถ้าก<= b

ถ้า (b>c) // และถ้า b > c

ศาล<<» max = «<

อื่น // มิฉะนั้นเช่น ถ้าข<= а

ศาล<<» max = «<

รับ(); // หน่วงเวลาก่อนที่จะกดปุ่มใด ๆ

วิเคราะห์บล็อกไดอะแกรมของอัลกอริทึมนี้และการใช้งานซอฟต์แวร์ ปรับเปลี่ยนอัลกอริธึมและโค้ดโปรแกรมเพื่อค้นหาตัวเลขที่น้อยที่สุดจากสามจำนวน

4. นิพจน์เชิงตรรกะแบบผสม

เงื่อนไขในคำสั่ง if-else สามารถแสดงได้มากกว่าเพียงการเปรียบเทียบค่าตัวเลขสองค่า ตัวอย่างเช่น เงื่อนไขสองเท่าเป็นเรื่องปกติมาก ซึ่งในทางคณิตศาสตร์จะเขียนว่า "a"< b < c». Запись означает, что значение b лежит в диапазоне между значениями a и c. В программе такие условия должны быть переформулированы с использованием простых операций сравнения и логических операций «И», «ИЛИ», «НЕ»

โดยเฉพาะสำนวน “ก< b < c» сформулируем как «a меньше b, и b меньше c». На С++ это будет записано как (a

ถ้า((ก

ตัวอย่างที่ 3บนกระดานหมากรุกที่ว่างเปล่า มีหมากสีขาวอยู่ในตำแหน่ง (n, m) และบิชอปสีดำอยู่ในตำแหน่ง (k, l) พิกัดแรกคือหมายเลขคอลัมน์ของกระดานหมากรุก ส่วนพิกัดที่สองคือหมายเลขแถว (ทั้งคู่ต่างกันในช่วงตั้งแต่ 1 ถึง 8) ประเมินสถานการณ์ปัจจุบันตามสามทางเลือก

จำนำอยู่ภายใต้การโจมตี

ช้างถูกโจมตี

อธิการและโรงรับจำนำ "ปลอดภัย"

สารละลาย. ลองคำนึงว่าเบี้ยสามารถโจมตีสองตำแหน่งที่ใกล้ที่สุดในแนวทแยงไปข้างหน้า และบิชอปโจมตีทั้งสองตำแหน่งในแนวทแยงอย่างสมบูรณ์ จากที่นี่สามารถกำหนดเงื่อนไขได้

· “((k = n+1) OR (k = n-1)) AND (l = m+1)” – จำนำโจมตีอธิการ

· “(k+l = n+m) หรือ (k-l = n-m)” – บิชอปโจมตีจำนำ

· มิฉะนั้นชิ้นส่วนจะปลอดภัย

// – องค์ประกอบหมากรุก –

#รวม

#รวม

int หลัก (int argc, ถ่าน * argv)

ศาล<<«Koordinaty beloi peshki:«<

ศาล<<» vvedite n –»;

ศาล<<» vvedite m –»;

ศาล<<«Koordinaty chernogo slona:«<

ศาล<<» vvedite k –»;

ศาล<<» vvedite l –»;

if(((k==n+1)||(k==n‑1))&&(l==m+1)) // บิชอปโจมตี

ศาล<

if((k+l==n+m)||(k-l==n-m)) // จำนำถูกโจมตี

ศาล<

อย่างอื่น // ไม่มีการโจมตี

ศาล<

ความสามารถในการควบคุมโฟลว์ของโปรแกรมช่วยให้สามารถดำเนินการเลือกส่วนต่างๆ ของโค้ดได้ และนี่คือคุณลักษณะที่มีค่ามากของการเขียนโปรแกรม คำสั่ง if อนุญาตให้เราดำเนินการหรือไม่ดำเนินการบางส่วนของโค้ด ขึ้นอยู่กับว่าเงื่อนไขของคำสั่งเป็นจริงหรือเท็จ วัตถุประสงค์ที่สำคัญที่สุดประการหนึ่งของคำสั่ง if คืออนุญาตให้โปรแกรมดำเนินการตามสิ่งที่ผู้ใช้ป้อน ตัวอย่างเล็กๆ น้อยๆ ของการใช้ if คือการตรวจสอบรหัสผ่านที่ผู้ใช้ป้อน หากรหัสผ่านถูกต้อง โปรแกรมจะอนุญาตให้ผู้ใช้ดำเนินการบางอย่าง หากป้อนรหัสผ่านไม่ถูกต้อง โปรแกรมจะไม่อนุญาตให้ผู้ใช้เข้าถึงทรัพยากรที่จำกัด .

หากไม่มีคำสั่งแบบมีเงื่อนไข โปรแกรมจะดำเนินการในลักษณะเดียวกันซ้ำแล้วซ้ำอีก ไม่ว่าผู้ใช้จะป้อนข้อมูลใดก็ตาม หากคุณใช้ตัวดำเนินการเลือก ผลลัพธ์ของโปรแกรมจะน่าสนใจยิ่งขึ้น เนื่องจากจะขึ้นอยู่กับข้อมูลอินพุตของผู้ใช้โดยตรง

ก่อนที่คุณจะเริ่มเข้าใจโครงสร้างของคำสั่ง if คุณควรให้ความสนใจกับความหมาย TRUE และ FALSE ในบริบทของการเขียนโปรแกรมและคำศัพท์ทางคอมพิวเตอร์

ค่าจริง (TRUE) มีค่าอื่นที่ไม่ใช่ศูนย์ FALSE เทียบเท่ากับศูนย์ เมื่อใช้ตัวดำเนินการเปรียบเทียบ ตัวดำเนินการจะส่งกลับค่าหนึ่งหากนิพจน์การเปรียบเทียบเป็นจริง หรือ - 0 หากนิพจน์เงื่อนไขเป็นเท็จ ตัวอย่างเช่น นิพจน์ 3 == 2 จะส่งกลับค่า 0 เนื่องจากสามไม่เท่ากับสอง นิพจน์ 5 == 5 ประเมินค่าเป็นจริงและจะส่งคืนค่า 1 หากคุณมีปัญหาในการทำความเข้าใจ ให้ลองพิมพ์นิพจน์เหล่านี้ลงบนหน้าจอ เช่น printf("%d", 7 == 0);

ในระหว่างขั้นตอนการเขียนโปรแกรม คุณมักจะต้องเปรียบเทียบตัวแปรบางตัวกับตัวแปรอื่นๆ และควบคุมโฟลว์ของโปรแกรมตามการเปรียบเทียบเหล่านี้ มีรายการโอเปอเรเตอร์ทั้งหมดที่ให้คุณทำการเปรียบเทียบได้ ดังนี้:

คุณอาจคุ้นเคยกับตัวดำเนินการเปรียบเทียบเหล่านี้ แต่เผื่อไว้ ฉันได้แสดงไว้ในตารางด้านบนแล้ว สิ่งเหล่านี้ไม่ควรยากสำหรับคุณที่จะเข้าใจ ตัวดำเนินการเหล่านี้ส่วนใหญ่ที่คุณเรียนรู้ในโรงเรียนในบทเรียนคณิตศาสตร์ ตอนนี้คุณเข้าใจแล้วว่า TRUE และ FALSE คืออะไร ก็ถึงเวลาทดสอบคำสั่ง if select ถ้าโครงสร้าง:

If (นิพจน์แบบมีเงื่อนไข) // นี่คือคำสั่งหนึ่งที่จะถูกดำเนินการหากนิพจน์แบบมีเงื่อนไขเป็นจริง

นี่คือตัวอย่างง่ายๆ ของการใช้คำสั่ง if:

ถ้า (7 > 6) printf("เจ็ดมากกว่าหก");

ในตัวอย่างนี้ โปรแกรมจะประเมินนิพจน์เงื่อนไข - “คือเจ็ดมากกว่าหก?” หากต้องการดูผลลัพธ์ของโค้ดนี้ เพียงวางลงในฟังก์ชัน main() และอย่าลืมใส่ส่วนหัว stdio.h รันโปรแกรมและดูผลลัพธ์ - true การสร้างตัวดำเนินการเลือกหากมีเครื่องหมายปีกกา:

ถ้า (TRUE) ( /* รหัสทั้งหมดที่อยู่ในวงเล็บจะถูกดำเนินการ */ )

หากคุณไม่ได้ใช้วงเล็บปีกกา คำสั่งแรกจะมีเพียงคำสั่งเดียวเท่านั้นที่จะสัมพันธ์กับเนื้อหาของคำสั่ง if หากคุณต้องการควบคุมโอเปอเรเตอร์หลายตัว คุณต้องใส่โอเปอเรเตอร์เหล่านั้นไว้ในวงเล็บปีกกา ฉันแนะนำให้ใส่วงเล็บไว้หลังการประกาศ if เสมอ นี่เป็นแนวทางปฏิบัติในการเขียนโปรแกรมที่ดีและคุณจะไม่สับสนในโค้ดของคุณ เนื่องจากการประกาศดังกล่าวเป็นสิ่งที่เข้าใจได้มากที่สุด

ตัวดำเนินการอื่น

บางครั้ง เมื่อนิพจน์เงื่อนไขเป็น FALSE จะสะดวกกว่าที่จะมีการเรียกใช้โค้ดบางตัวที่แตกต่างจากโค้ดที่ถูกดำเนินการเมื่อมีเงื่อนไขเป็น TRUE วิธีนี้ทำอย่างไร?
นี่คือตัวอย่างการใช้คำสั่ง if else:

ถ้า (TRUE) ( /* รันโค้ดนี้ถ้าเงื่อนไขเป็นจริง */ ) else ( /* รันโค้ดนี้ถ้าเงื่อนไขเป็นเท็จ */ )

อย่างอื่นถ้าสร้าง

โดยทั่วไป มิฉะนั้น หากมีการใช้คำสั่งเมื่อจำเป็นต้องเลือกหลายรายการ เช่น มีการกำหนดเงื่อนไขหลายประการที่สามารถเป็นจริงได้ในเวลาเดียวกัน แต่เราต้องการเพียงนิพจน์เงื่อนไขจริงเพียงรายการเดียวเท่านั้น คุณสามารถใช้คำสั่ง if else ได้ทันทีหลังคำสั่ง if หลังเนื้อหา ในกรณีเช่นนี้ หากเงื่อนไขของคำสั่ง select แรกเป็น TRUE ดังนั้นคำสั่ง else if จะถูกละเว้น มิฉะนั้น หากเงื่อนไขของคำสั่ง select แรกเป็น FALSE การเช็คอินคำสั่ง else if จะเริ่มเป็น ดำเนินการ นั่นคือ ถ้าเงื่อนไขของคำสั่ง if เป็นจริง รายการอื่นๆ จะไม่ถูกตรวจสอบ ตอนนี้ เพื่อที่จะรวมทั้งหมดนี้ไว้ในหัวของเราอย่างมั่นคงและเข้าใจมัน มาดูตัวอย่างง่ายๆ โดยใช้โครงสร้างตัวดำเนินการเลือก

#รวม #รวม int main() ( int age; // ไม่มีทางหากไม่มีตัวแปร... printf("How old are you?"); // ถามผู้ใช้เกี่ยวกับอายุของเขา scanf("%d", &age); // user ป้อนจำนวนปีถ้า (อายุ< 100) { // если введенный возраст меньше 100 printf ("Вы очень молоды!\n"); // просто показываем что программа сработала верно... } else if (age == 100) { // используем else для примера printf("Молодость уже позади\n"); // \n - символ перевода на новую строку. } else { printf("Столько не живут\n"); // если ни одно из выше-перечисленных условий не подошло, то программа покажет этот вариант ответа } return 0; }

มาดูนิพจน์เงื่อนไขที่น่าสนใจโดยใช้ตัวดำเนินการเชิงตรรกะกัน

ตัวดำเนินการเชิงตรรกะช่วยให้คุณสร้างนิพจน์เงื่อนไขที่ซับซ้อนมากขึ้นได้ ตัวอย่างเช่น หากคุณต้องการตรวจสอบว่าตัวแปรของคุณมากกว่า 0 แต่น้อยกว่า 10 หรือไม่ คุณเพียงแค่ต้องใช้ตัวดำเนินการเชิงตรรกะ - AND นี่คือวิธีการ - var > 0 และ var< 10 . В языке СИ есть точно такой же же оператор, только обозначается он иначе — && .
เมื่อใช้คำสั่ง if คุณมักจะต้องทดสอบเงื่อนไขต่างๆ มากมาย ดังนั้นจึงเป็นเรื่องสำคัญที่จะต้องเข้าใจตัวดำเนินการเชิงตรรกะ OR, NOT และ AND ตัวดำเนินการเชิงตรรกะทำงานเหมือนกับตัวดำเนินการเปรียบเทียบทุกประการ โดยจะส่งคืนค่า 0 หากนิพจน์บูลีนเป็นเท็จ หรือ 1 หากนิพจน์บูลีนเป็นจริง
คุณสามารถอ่านเพิ่มเติมเกี่ยวกับการดำเนินการเชิงตรรกะได้ใน

อัปเดตครั้งล่าสุด: 07/30/2016

โครงสร้างแบบมีเงื่อนไขเป็นหนึ่งในองค์ประกอบพื้นฐานของภาษาการเขียนโปรแกรมหลายภาษา ซึ่งสั่งให้โปรแกรมทำงานไปตามเส้นทางใดเส้นทางหนึ่งโดยขึ้นอยู่กับเงื่อนไขบางประการ

โครงสร้างแบบมีเงื่อนไขต่อไปนี้ถูกใช้ในภาษา C#: if..else และ switch..case

ถ้า / อื่นสร้าง

โครงสร้าง if/else จะตรวจสอบความจริงของเงื่อนไขบางอย่าง และรันโค้ดบางอย่าง ขึ้นอยู่กับผลลัพธ์ของการตรวจสอบ:

จำนวน 1 = 8; int num2 = 6; if(num1 > num2) ( Console.WriteLine($"Number (num1) มีค่ามากกว่าตัวเลข (num2)"); )

คีย์เวิร์ด if ตามด้วยเงื่อนไข และหากตรงตามเงื่อนไขนี้ โค้ดที่ถูกวางไว้เพิ่มเติมในบล็อก if หลังจากที่เครื่องหมายปีกกาถูกทริกเกอร์ การดำเนินการเปรียบเทียบที่กล่าวถึงก่อนหน้านี้ทำหน้าที่เป็นเงื่อนไข

ในกรณีนี้ จำนวนแรกมากกว่าจำนวนที่สอง ดังนั้นนิพจน์ num1 > num2 จึงเป็นจริงและส่งกลับค่าจริง ดังนั้น การควบคุมจะส่งผ่านไปยังบรรทัด Console.WriteLine("ตัวเลข (num1) มากกว่าตัวเลข (num2) ");

แต่จะเกิดอะไรขึ้นถ้าเราต้องการให้ดำเนินการบางอย่างหากไม่ตรงตามเงื่อนไข? ในกรณีนี้เราสามารถเพิ่มบล็อกอื่นได้:

จำนวน 1 = 8; int num2 = 6; if(num1 > num2) ( Console.WriteLine($"ตัวเลข (num1) มีค่ามากกว่าตัวเลข (num2)"); ) else ( Console.WriteLine($"ตัวเลข (num1) น้อยกว่าตัวเลข (num2) )"); )

จำนวน 1 = 8; int num2 = 6; if(num1 > num2) ( Console.WriteLine($"The number (num1) is more than the number (num2)"); ) else if (num1)< num2) { Console.WriteLine($"Число {num1} меньше числа {num2}"); } else { Console.WriteLine("Число num1 равно числу num2"); }

นอกจากนี้เรายังสามารถเชื่อมต่อหลายเงื่อนไขพร้อมกันได้โดยใช้ตัวดำเนินการเชิงตรรกะ:

จำนวน 1 = 8; int num2 = 6; if(num1 > num2 && num1==8) ( Console.WriteLine($"Number (num1) มีค่ามากกว่าตัวเลข (num2)"); )

ในกรณีนี้ บล็อก if จะถูกดำเนินการหาก num1 > num2 เป็นจริง และ num1==8 เป็นจริง

โครงสร้างสวิตช์

โครงสร้างสวิตช์/เคสจะคล้ายกับโครงสร้าง if/else เนื่องจากช่วยให้คุณสามารถประมวลผลเงื่อนไขต่างๆ ได้พร้อมกัน:

Console.WriteLine("กด Y หรือ N"); การเลือกสตริง = Console.ReadLine(); สวิตช์ (การเลือก) ( case "Y": Console.WriteLine("คุณกดตัวอักษร Y"); break; case "N": Console.WriteLine("คุณกดตัวอักษร N"); break; default: Console.WriteLine (" คุณกดจดหมายที่ไม่รู้จัก");

หลังจากคีย์เวิร์ด switch นิพจน์ที่จะเปรียบเทียบจะอยู่ในวงเล็บ ค่าของนิพจน์นี้จะถูกเปรียบเทียบตามลำดับกับค่าที่อยู่หลังตัวดำเนินการกรณี และหากพบรายการที่ตรงกัน ระบบจะดำเนินการบล็อกกรณีเฉพาะ

ที่ส่วนท้ายของแต่ละบล็อกตัวพิมพ์ จะต้องวางตัวดำเนินการการเปลี่ยนแปลงตัวใดตัวหนึ่ง: break , goto case , return หรือ Throw โดยปกติแล้ว จะใช้คำสั่งแบ่ง เมื่อถูกใช้ จะไม่มีการดำเนินการบล็อกเคสอื่นๆ

อย่างไรก็ตาม ในทางกลับกัน หากเราต้องการ หลังจากที่ case block ปัจจุบันถูกดำเนินการแล้ว ก็จะมีการดำเนินการ case block อื่น จากนั้นเราสามารถใช้คำสั่ง goto case แทนการ break:

จำนวน Int = 1; สวิตช์ (หมายเลข) ( กรณีที่ 1: Console.WriteLine("case 1"); ไปที่กรณีที่ 5; // ไปที่กรณีที่ 5 กรณีที่ 3: Console.WriteLine("case 3"); break; กรณีที่ 5: Console.WriteLine( "กรณีที่ 5"); ค่าเริ่มต้น: Console.WriteLine("default");

หากเราต้องการจัดการสถานการณ์ที่ไม่พบรายการที่ตรงกัน เราสามารถเพิ่มบล็อกเริ่มต้นได้ ดังตัวอย่างด้านบน

การใช้คำสั่ง return จะทำให้คุณสามารถออกได้ไม่เพียงแต่ case block เท่านั้น แต่ยังรวมถึงวิธีการโทรด้วย นั่นคือหากในเมธอด Main หลังจากการสร้าง switch..case ซึ่งใช้คำสั่ง return มีตัวดำเนินการและนิพจน์ใดๆ ก็จะไม่ถูกดำเนินการ และวิธีการ Main จะทำงานให้เสร็จสมบูรณ์

ตัวดำเนินการโยนใช้เพื่อส่งข้อผิดพลาด และจะมีการหารือในหัวข้อใดหัวข้อหนึ่งต่อไปนี้

การดำเนินการแบบไตรภาค

ตัวดำเนินการแบบไตรภาคมีไวยากรณ์ต่อไปนี้: [ตัวถูกดำเนินการตัวแรก - เงื่อนไข] ? [ตัวถูกดำเนินการที่สอง] : [ตัวถูกดำเนินการที่สาม] มีตัวถูกดำเนินการสามตัวที่นี่ ตัวดำเนินการที่ประกอบด้วยสามจะส่งคืนตัวถูกดำเนินการตัวที่สองหรือตัวที่สาม ขึ้นอยู่กับเงื่อนไข: หากเงื่อนไขเป็นจริง ตัวถูกดำเนินการตัวที่สองจะถูกส่งคืน หากเงื่อนไขเป็นเท็จ แสดงว่าเงื่อนไขที่สาม ตัวอย่างเช่น:

อินท์x=3; อินท์ y=2; Console.WriteLine("กด + หรือ -"); การเลือกสตริง = Console.ReadLine(); int z = การเลือก = = "+"? (x+y) : (x-y); คอนโซล WriteLine (z);

ผลลัพธ์ของการดำเนินการแบบไตรภาคคือตัวแปร z หากเราป้อน “+” ด้านบน แล้ว z จะเท่ากับตัวถูกดำเนินการที่สอง - (x+y) มิฉะนั้น z จะเท่ากับตัวถูกดำเนินการตัวที่สาม

ในชีวิตประจำวันมักจำเป็นต้องตัดสินใจบางอย่างขึ้นอยู่กับเงื่อนไขบางประการ เช่น ถ้าวันหยุดสุดสัปดาห์อากาศอบอุ่นเราก็จะไปเที่ยวทะเล ไม่อย่างนั้น ถ้ามีเมฆมากเราก็จะนั่งอยู่ที่บ้าน

สิ่งนี้เกิดขึ้นบ่อยมากในการเขียนโปรแกรม สำหรับสิ่งนี้ก็มี คำสั่งแบบมีเงื่อนไขสองคำสั่งคือ if-else และ switch-case- ในบทความนี้ ฉันจะบอกคุณเกี่ยวกับตัวดำเนินการ if-else และในบทความถัดไปเกี่ยวกับ switch-case

ไวยากรณ์ของคำสั่งเงื่อนไข if-elseต่อไป:


หากเงื่อนไขเป็นจริง โค้ดจากบล็อก if จะถูกดำเนินการ มิฉะนั้น หากเงื่อนไขเป็นเท็จ โค้ดจากบล็อก else จะถูกดำเนินการ

เพื่อความเข้าใจที่ดีขึ้น ลองใช้ตัวอย่างง่ายๆ เรามีเงินจำนวนหนึ่งและเราต้องการซื้อรถยนต์ และนี่คือเงื่อนไขต่อไปนี้เกิดขึ้นทันที: หากเรามีเงินเพียงพอ เราก็สามารถซื้อรถคันนี้ได้ ไม่เช่นนั้นเรา ไม่สามารถ

เงินวาร์ = 35,000; // สมมติว่าเรามีเงิน 35,000 ยูโร // รถที่เราต้องการซื้อราคา 50,000 ยูโร และเงื่อนไขต่อไปนี้จะเกิดขึ้น if(money > 50000)( document.write("We can buy a car"); )else( document.write("เงินไม่พอซื้อรถยนต์"); )

เราบันทึกเอกสาร เปิดในเบราว์เซอร์ และพบว่ามีข้อความต่อไปนี้ปรากฏบนหน้า: “มีเงินไม่เพียงพอที่จะซื้อรถยนต์” หากเรามีเงินมากกว่า 50,000 ยูโร โค้ดจากบล็อก if จะถูกดำเนินการ ถ้าเรามีเงิน 50,000 ยูโรพอดี เราก็จะซื้อรถไม่ได้เหมือนกัน เพราะ 50,000 ไม่เกิน 50,000 เพื่อให้เงื่อนไขในกรณีนี้เป็นจริง เราต้องเขียนเครื่องหมายมากกว่าหรือเท่ากับ (>=) .

แสดงความคิดเห็น! การดำเนินการเชิงตรรกะเท่ากับจะถูกเขียนด้วยเครื่องหมายเท่ากับสองตัว (==)- นอกจากนี้ยังมีการดำเนินการเชิงตรรกะที่น้อยกว่าหรือเท่ากับ (

โดยใช้วงเล็บปีกกา

หากมีตัวดำเนินการเพียงตัวเดียว ก็ไม่จำเป็นต้องใช้เครื่องหมายปีกกา หากมีตัวดำเนินการมากกว่าหนึ่งตัวในบล็อก ก็จำเป็นต้องใช้เครื่องหมายปีกกา

ตัวอย่างข้างต้นจะทำงานได้อย่างสมบูรณ์แบบโดยไม่ต้องใช้เครื่องหมายปีกกา เนื่องจากทั้งสองบล็อกมีเพียงคำสั่งเดียวเท่านั้น

คุณสามารถเขียนการดำเนินการเชิงตรรกะใดๆ ภายใน if ได้ไม่ว่าจะเรียบง่ายหรือซับซ้อนก็ตาม คุณยังสามารถใช้ตัวดำเนินการ AND (&&) และ OR (||) ได้อีกด้วย

แสดงความคิดเห็น! การมีอยู่ของบล็อก else เป็นทางเลือก.

ตัวอย่างเช่น หาก a เท่ากับ b และ c เท่ากับ d เราจะแสดงข้อความที่เกี่ยวข้อง มิฉะนั้น หากไม่มีบล็อกอื่น เราก็เพียงไปยังบรรทัดถัดไป

วาร์ ก = 4, ข = 4, ค = 8, ง = 8; if((a == b) && (c == d)) document.write("a เท่ากับ b และ c เท่ากับ d"); document.write("โค้ดบรรทัดถัดไป");

คำสั่ง if - else if - else

หลังจากบล็อก if อาจมีบล็อก else if อย่างน้อยหนึ่งบล็อก และในตอนท้ายจะมีบล็อก else สิ่งนี้มีประโยชน์เมื่อคุณต้องการใช้เงื่อนไขมากกว่าหนึ่งเงื่อนไข


เพื่อความเข้าใจที่ดีขึ้น เรามายกตัวอย่างจากชีวิตประจำวันกันดีกว่า ตัวอย่างเช่น เรามีซ็อกเก็ตจำนวนหนึ่ง หากในห้องเรามีปลั๊กไฟเพียงตัวเดียวเราก็สามารถเชื่อมต่ออุปกรณ์ได้เพียงเครื่องเดียว ถ้ามีปลั๊กไฟ 2 ตัวเราก็สามารถเชื่อมต่ออุปกรณ์ได้ 2 เครื่อง และหากมีมากกว่านั้นเราก็สามารถเชื่อมต่ออุปกรณ์ทั้งหมดจากบ้านเข้ากับเครือข่ายไฟฟ้าได้ .

ตอนนี้เรามาดูการเขียนโปรแกรมกันดีกว่า

ซ็อกเก็ตวาร์ = 2; // จำนวนเต้ารับในบ้าน if(socket == 1)  document.write("

เราเชื่อมต่อได้เพียงอุปกรณ์เดียวเท่านั้น

"); อย่างอื่นถ้า(socket == 2)( document.write("

เราสามารถเชื่อมต่ออุปกรณ์ได้เพียงสองเครื่องเท่านั้น

"); document.write("

เช่น ทีวีและแล็ปท็อป

"); )else( document.write("

เราสามารถเชื่อมต่ออุปกรณ์ทั้งหมดจากบ้านเข้ากับเครือข่ายไฟฟ้าได้

"); }

ขึ้นอยู่กับค่าของตัวแปรซ็อกเก็ต บล็อกโค้ดหนึ่งหรือบล็อกอื่นจะทำงานได้ ดังที่คุณคงเข้าใจแล้วว่าหากซ็อกเก็ตเท่ากับ 1 โค้ดบล็อกแรกก็จะใช้งานได้ หากซ็อกเก็ตเท่ากับ 2 โค้ดบล็อกที่สองจะทำงานได้ และหากซ็อกเก็ตมีค่าอื่นใด (แม้จะเป็นจำนวนลบ) โค้ดบล็อกที่สามจะทำงานได้

ชวเลขสำหรับถ้าอย่างอื่น

สัญกรณ์ชวเลขสามารถใช้ได้เมื่อตัวแปรสามารถรับค่าหนึ่งหรือค่าอื่นได้ ขึ้นอยู่กับเงื่อนไขบางประการ


ตัวอย่างเช่น ถ้าค่าของตัวแปร a มากกว่าค่าของตัวแปร b ดังนั้นในตัวแปร x เราจะเขียนข้อความต่อไปนี้ “ตัวแปร a มากกว่าตัวแปร b” มิฉะนั้นเราจะเขียนว่า “ตัวแปร a คือ น้อยกว่าตัวแปร b”

วาร์ ก = 50, ข = 100, x; x = (ก > ข) ? -

ตัวแปร มากกว่าตัวแปร ข

" : "

ตัวแปร น้อยตัวแปร ข

"; //ส่งออกผลลัพธ์ที่ได้ document.write(x);

นั่นคือทั้งหมดที่ฉันต้องการจะบอกคุณในบทความนี้ คำสั่ง if-else แบบมีเงื่อนไขถูกใช้ในสคริปต์มากกว่าหนึ่งตัว ดังนั้นการรู้และทำความเข้าใจจึงเป็นสิ่งสำคัญมาก ในบทความถัดไป ฉันจะบอกคุณเกี่ยวกับกรณีสวิตช์ตัวดำเนินการแบบมีเงื่อนไขอื่น


สิ่งสำคัญในการดำเนินการของตัวดำเนินการนี้คือเงื่อนไข ถ้าแปลจากภาษาอังกฤษแปลว่า ถ้า- เงื่อนไขได้รับการยอมรับว่าเป็นอาร์กิวเมนต์ (สิ่งที่อยู่ในวงเล็บ) เงื่อนไขอาจเป็นนิพจน์เชิงตรรกะหรือตัวแปรเชิงตรรกะก็ได้ ถ้าจะให้พูดง่ายๆ ความหมายของสำนวนก็คือ:

ถ้า (เงื่อนไข)(
ตรงตามเงื่อนไข ให้ทำดังนี้
}
อื่น
{
ไม่ตรงตามเงื่อนไข ให้ทำอย่างอื่น
}
ฉันหวังว่าตรรกะของการดำเนินการตามเงื่อนไขจะชัดเจน ตอนนี้เรามาดูตัวอย่างกัน

$a = 5;
$ข = 25;

//สนใจตอนนี้! เงื่อนไข: ถ้า $b มากกว่า $a
// สัญญาณ > และ< , как и в математике, обозначают больше и меньше
ถ้า($b > $a)
{
// หากตรงตามเงื่อนไข ให้ดำเนินการนี้
echo "$b มากกว่า $a";
}
อื่น
{
// หากไม่ได้ดำเนินการก็จะเป็นเช่นนี้
echo "$a มากกว่าหรือเท่ากับ $b";
}
?>
สาธิต ดาวน์โหลดแหล่งที่มา
เป็นผลให้สคริปต์จะส่งออก 25 มากกว่า 5- ตัวอย่างค่อนข้างง่าย ฉันหวังว่าทุกอย่างชัดเจน ตอนนี้ฉันเสนอให้พิจารณาสถานการณ์ที่ซับซ้อนกว่านี้ซึ่งต้องปฏิบัติตามเงื่อนไขหลายประการ แต่ละเงื่อนไขใหม่จะมีอยู่หลังเงื่อนไขหลัก ถ้า()- ตัวช่วยซึ่งเขียนเป็น อย่างอื่นถ้า()- สุดท้ายก็จะเป็นเหมือนเดิม อื่น.

งาน:การทดสอบดำเนินการที่โรงเรียน สคริปต์จำเป็นต้องคำนวณคะแนน โดยรู้เงื่อนไขในการได้รับแต่ละเกรดและคะแนนของนักเรียนเอง มาดูวิธีการเขียนกัน และอย่าลืมอ่านความเห็นด้วย

$ทดสอบ = 82; // สมมติว่านักเรียนเขียนข้อสอบได้ 82 คะแนน

// เขียนเงื่อนไขแรกสำหรับห้า
ถ้า($ทดสอบ > 90)
{
// หากตรงตามเงื่อนไข ให้ดำเนินการนี้
echo "เรตติ้ง 5";
}
// เครื่องหมาย && หมายถึง "และสหภาพ" ซึ่งตรงตามเงื่อนไขหากทั้งสองเป็นจริง
// คือคะแนนน้อยกว่า 91 และเกิน 80 แล้ว 4 มิฉะนั้นเงื่อนไขจะอ่านต่อ
อย่างอื่นถ้า ($test< 91 && $test > 80)
{
echo "เรตติ้ง 4";
}
อย่างอื่นถ้า ($test< 81 && $test > 70)
{
echo "เรตติ้ง 3";
}
อื่น
{
echo "เราควรเขียนแบบทดสอบอีกครั้ง...";
}
?>
สาธิต ดาวน์โหลดแหล่งที่มา
นักเรียนของเราที่มีเวลาทั้งพักผ่อนและเขียนข้อสอบปกติได้ คะแนน 4- ฉันหวังว่าหลักการทำงานจะชัดเจน

นอกจากนี้ยังสามารถบันทึกการทำงานของการดำเนินการตามเงื่อนไขโดยย่อได้ เมื่อคุณต้องการดำเนินการเฉพาะเมื่อตรงตามเงื่อนไขเท่านั้น

$ อายุ = 19; //แปรผันตามอายุ

ถ้า ($อายุ > 17)(
echo "แค่นั้นแหละ! ฉันจะทำอะไรก็ได้ที่ฉันต้องการ! ฉันอายุ $age แล้ว!";
}
เป็นตัวอย่างที่ดีทีเดียว หมายเหตุสั้น ๆการดำเนินการตามเงื่อนไข อื่นไม่จำเป็นต้องเขียน

ตัวดำเนินการเปรียบเทียบใน PHP

หลักการดำเนินการของการดำเนินการแบบมีเงื่อนไขนั้นชัดเจน แต่อย่างที่คุณเข้าใจมีวิธีเปรียบเทียบอีกมากมาย ลองดูตารางด้านล่างพร้อมตัวดำเนินการเปรียบเทียบ

ตัวอย่างผลลัพธ์ชื่อ
$a == $b เท่ากับ True ถ้า $a เท่ากับ $b
$a === $b เหมือนกับ True ถ้า $a เท่ากับ $b และตัวแปรทั้งสองเป็นประเภทเดียวกัน
$a != $b จะไม่เท่ากับ True ถ้า $a ไม่เท่ากับ $b
$a === $b ไม่เหมือนกับ True หาก $a ไม่เท่ากับ $b และทั้งสองประเภทไม่เหมือนกัน
$a > $b มากกว่า True ถ้า $a มากกว่า $b
$ก< $b Меньше чем True, если $a меньше, чем $b
$a >= $b มากกว่าหรือเท่ากับ True ถ้า $a มากกว่าหรือเท่ากับ $b
$ก<= $b Меньше или равно True, если $a меньше или равно $b
ทีนี้มาดูตัวดำเนินการกัน พร้อมตัวอย่าง:

// ตรงกันข้ามกับนิสัย = หมายถึงการกำหนดค่าให้กับตัวแปร และ == เท่ากับ
ถ้า ($a == 5)(
echo "$a คือ 5"; // จะพิมพ์ "5 เท่ากับ 5"
) อื่น (
echo "$a ไม่เท่ากับ 5";
}

ถ้า ($a != 6)(
echo "$a ไม่เท่ากับ 6"; // จะพิมพ์ "5 ไม่เท่ากับ 6" จำเป็นในกรณีที่ถูกปฏิเสธ
) อื่น (
echo "$a เท่ากับ 6";
}

//มีมากขึ้นเรื่อยๆ ผมว่าทุกอย่างชัดเจนครับ ดังนั้นตัวอย่างจึงซับซ้อนกว่า
ถ้า ($a<= 6){
echo "$a น้อยกว่าหรือเท่ากับ 6"; // จะพิมพ์ "5 น้อยกว่าหรือเท่ากับ 6"
) อื่น (
echo "$a มากกว่า 6";
}

ตัวดำเนินการเชิงตรรกะ PHP

มีหลายครั้งที่คุณจำเป็นต้องเปรียบเทียบไม่ใช่ตัวแปรตัวเดียว แต่ต้องเปรียบเทียบสองตัวขึ้นไปในคราวเดียวในเงื่อนไขเดียว สำหรับสิ่งนี้ก็มี ตัวดำเนินการเชิงตรรกะ.

ตัวอย่างผลลัพธ์ชื่อ
$a และ $b ตรรกะ "และ" TRUE ถ้าทั้ง $a และ $b เป็น TRUE
$a หรือ $b ตรรกะ "หรือ" TRUE ถ้า $a หรือ $b เป็นจริง
$a xor $b Exclusive "หรือ" TRUE ถ้า $a หรือ $b เป็นจริง แต่ไม่ใช่ทั้งสองอย่าง
- $a การปฏิเสธ TRUE ถ้า $a ไม่เป็น TRUE
$a && $b ตรรกะ "และ" TRUE ถ้าทั้ง $a และ $b เป็นจริง
$a || $b Boolean "หรือ" TRUE ถ้า $a หรือ $b เป็นจริง
เราได้สังเกตเห็นแล้วว่าสำหรับการดำเนินงาน และและ หรือมีโอเปอเรเตอร์เพิ่มเติมไหม? ซึ่งทำเพื่อจัดลำดับความสำคัญของการดำเนินการเปรียบเทียบที่ซับซ้อน ในตาราง ตัวดำเนินการเชิงตรรกะจะแสดงรายการตามลำดับความสำคัญ: จากน้อยไปหามาก เช่น || มีลำดับความสำคัญสูงกว่าหรือ

เดินหน้าต่อไป ถึงตัวอย่าง

$a = 5;
$ข = 6;
$ซี = 7;

// เงื่อนไข: ถ้า 5 ไม่เท่ากับ 6 (TRUE) และ 6 ไม่เท่ากับ 7 (TRUE)
ถ้า ($a< 6 && $b != $c){
echo "จริงด้วย!"; // จะพิมพ์ว่า "จริงด้วย!" เพราะ เงื่อนไขทั้งสองเป็นจริง
) อื่น (
echo "เงื่อนไขข้อหนึ่งไม่เป็นความจริง";
}

// เงื่อนไข: ถ้า 6 ไม่เท่ากับ 6 (FALSE) หรือ 6 ไม่เท่ากับ 7 (TRUE)
ถ้า ($b != 6 || $b != $c)(
echo "แค่นั้นแหละ!"; // จะแสดงคำว่า "นั่นแหละ!" เพราะ อย่างน้อยหนึ่งเงื่อนไขจะเป็น TRUE
) อื่น (
echo "เงื่อนไขทั้งสองเป็นเท็จ";
}

ตัวดำเนินการแบบไตรภาค

ฉันขอแนะนำให้คุณกลับไปที่ปัญหาของโค้ดที่ประกอบไปด้วยในภายหลัง ฉันอดไม่ได้ที่จะพูดถึงมัน เนื่องจากมันเป็นการออกแบบที่สำคัญซึ่งจะช่วยลดขนาดโค้ดลงอย่างมาก ฉันขอแนะนำให้คุณดูรหัสทันที

ส่วนสำคัญของรหัส:(เงื่อนไข) ? ค่าของถ้าเป็นจริง: ค่าของถ้าเป็นเท็จ

ดังนั้นเราจึงย่อคำสั่ง if ให้สั้นลง อย่างไรก็ตาม การดำเนินการนี้จะใช้ได้เฉพาะเมื่อกำหนดค่าให้กับตัวแปรเท่านั้น ตอนนี้เรามาดูตัวอย่างที่เสร็จแล้ว

// ตัวอย่างการใช้ตัวดำเนินการแบบไตรภาค
$settings = (empty($_POST["settings"])) ? "ค่าเริ่มต้น" : $_POST["การตั้งค่า"];

// โค้ดด้านบนคล้ายกับบล็อกต่อไปนี้โดยใช้ if/else
ถ้า (ว่าง($_POST["การตั้งค่า"])) (
$settings = "ค่าเริ่มต้น"; // หากไม่มีการโอนใดๆ ให้ปล่อยไว้เป็น "ค่าเริ่มต้น"
) อื่น (
$settings = $_POST["การตั้งค่า"]; // หากผ่าน $settings จะถูกกำหนดค่าที่ส่งผ่าน
}
?>
อ่านความคิดเห็นต่อโค้ดและทุกอย่างควรมีความชัดเจน

ขอบคุณสำหรับความสนใจของคุณ!