ประโยคเงื่อนไข (Condition statement) สำหรับประโยคเงื่อนไขนะครับ หลายคนอาจจะสงสัยว่า จะต้องใช้เมื่อไหร่ และจะใช้อย่างไร ก็คงจะตอบได้ว่า ประโยคเงื่อนไขนั้นเราจะใช้เมื่อเราต้องการจะตัดสินใจอะไรบางอย่างเช่นคำพูดที่เราพูดกันเรื่อยๆว่า ถ้าเป็นอย่างนี้แล้วให้เป็นอย่างนั้น ถ้า คำพูดของเขาเป็นความจริง แล้ว ฉันก็จะไปกับเขา ไม่เช่นนั้น ฉันก็จะไม่ไป จากประโยคที่ให้มานี้ เราจะพบว่าเงื่อนไขที่จะบอกว่า ฉันจะไปกับเขา หรือไม่ไปนั้น มันขึ้นกับว่า คำพูดของเขา จริงหรือเท็จ นั่นเอง ดังนัเน เงื่อนไขของข้อความนี้ก็คือ คำพูดของเขาเป็นความจริง ถ้าลองเขียนเป็นรูปแบบภาษาซีที่เกี่ยวข้องกับการตัดสินใจ ก็จะเขียนได้ว่า if (คำพูดของเขาเป็นความจริง){ ฉันก็จะไปกับเขา }else{ ฉันก็จะไม่ไป } เราลองมาดูอีกตัวอย่างให้ชัดๆไปเลย เช่น ถ้าเรามีเงินมากกว่า 100 บาท เราจะซื้อของขวัญ A แต่ถ้าน้อยกว่าเราก็จะซื้อของขวัญ B เราสามารถเขียนให้อยู่ในรูปภาษาซีได้ดังนี้ if ( เงินที่มี > 100 ){ ซื้อของขวัญ A }else{ ซื้อของขวัญ B } ดังนั้นจะขอสรุปเกี่ยวกับโครงสร้าง if-then-else ได้ดังนี้นะครับ โครงสร้างที่ 1 if-then มีรูปแบบดังต่อไปนี้ if( เงื่อนไขเป็นจริง ){ statement; } นั่นคือถ้าเงื่อนไขเป็นจริง ก็จะมาทำคำสั่งที่ statement; ถ้าเงื่อนไขนั้นไม่จริง ก็ไม่ต้องทำอะไร โครงสร้างที่ 2 if-then-else มีรูปแบบดังต่อไปนี้ if( เงื่อนไขเป็นจริง ){ statement1; }else{ statement2; } นั่นคือถ้าเงื่อนไขเป็นจริง ก็จะมาทำคำสั่งที่ statement1; ถ้าเงื่อนไขนั้นไม่จริง ก็จะมาทำ statement2; โครงสร้างที่ 3 if-then-elseif- มีรูปแบบดังต่อไปนี้ if( เงื่อนไขที่หนึ่งเป็นจริง){ statement1; }elseif( เงื่อนไขที่สองเป็นจริง ){ statement2; }else{ statement3; } นั่นคือถ้าเงื่อนไขที่หนึ่งเป็นจริง ก็จะมาทำคำสั่งที่ statement; แต่ถ้าไม่จริงให้มาตรวจสอบเงื่อนไขที่สอง ถ้าเงื่อนไขที่สองเป็นจริงให้ทำคำสั่ง statement2 แต่ถ้าไม่จริงให้หลุดมาทำ statement 3 ลองมาดูตัวอย่างกันสักหน่อย หากเราตรวจการดูค่าตัวแปร x ว่า ถ้า x มีค่าน้อยกว่า 100 ให้พิมพ์คำว่า Less than 100 ถ้า x ไม่น้อยกว่า 100 ให้พิมพ์คำว่า Not less than 100 เราสามารถเขียนโปรแกรมได้ดังนี้ #include main(){ int x=50; if (x<100){ printf("Less than 100 n"); }else{ printf("Not less than 100 n"); } } จากโค้ดข้างต้นนี้ เรากำหนดให้ x เป็นจำนวนเต็มมีค่าเท่ากับ 50 จากนั้นเรานำค่า x มาตรวจสอบเงื่อนไขว่า ถ้า x<100 ซึ่งเป็นความจริงเพราะ 50<100 ดังนั้นเงื่อนไขนี้เป็นจริง จึงมาทำคำสั่ง printf("Less than 100n"); แต่หากเรากำหนดให้ x=200 แทนที่จะเป็น 50 เราก็จะพบว่า เงื่อนไข x<100 นั้นไม่เป็นจริง โปรแกรมจึงข้ามมาทำที่ขั้นตอนถัดไปคือ ไปที่ else และที่ else นี้ไม่มีเงื่อนไขใดๆในการตรวจสอบจึง พิมพ์ข้อความ Not less than 100 ออกทางหน้าจอ จากข้างต้นเราได้ข้อสังเกตว่า ถ้าเงื่อนไขแรกเป็นจริงแล้ว โปรแกรมจะทำข้อความที่อยู่ในเครื่องหมายปีกกาที่ติดกับเงื่อนไขนั้น และก็จะหลุดออกจาก โครงสร้าง if นั้นไปทันที เช่น #include main(){ int x=100; if(x>50){ printf("More than 50n"); }elseif(x>80){ printf("More than 80n"); }else{ printf("More than 50 and 80n"); } } จากโปรแกรมนี้ผลที่ได้ปรากฎว่ามันจะพิมพ์เพียงข้อความเดียวคือ More than 50 ทั้งนี้เนื่องจากเมื่อเรากำหนดเงื่อนไขว่า x=100 และพอโปรแกรมตรวจสอบในเงื่อนไขแรกคือ x>50 ซึ่งเป็นจริง โปรแกรมจะมาทำข้อความภายในเครื่องหมาย {} ที่ติดกับเงื่อนไขเท่านั้น และจากนั้นจะหลุดออกจากโครงสร้าง if ไปเลย แต่ถ้าลองมาดูโปรแกรมอีกโปรแกรมดังต่อไปนี้ #include main(){ int x=100; if(x<70){ printf("Less than 70n"); }elseif(x<110){ printf("Less than 110n"); }else{ printf("More than 110"); } } ซึ่งเมื่อรันโปรแกรมข้างต้น เรากำหนดค่า 100 ให้กับตัวแปร x จากนั้นโปรแกรมจะทำการตรวจสอบในเงื่อนไขแรกตามลำดับ พบว่า x<70 นั้นไม่จริง โปรแกรมจึงเข้ามาตรวจที่เงื่อนไขที่สองคือ x<110 ปรากฎว่าเงื่อนไขนี้เป็นจริงนั้นคือ 100<110 ทำให้โปรแกรมมาทำ statement ที่อยู่ในเครื่องหมายปีกกากับเงื่อนไขที่มันเป็นจริง นั่นคือ โปรแกรมจะพิมพ์คำว่า Less than 110 จากนั้นโปรแกรมก็จะหลุดออกจาก โครงสร้าง if ทันที อีกตัวอย่างที่น่าติดตามก็คือ การตรวจสอบว่าค่าที่กำหนดให้มีค่าอยู่ระหว่างค่าที่เรากำหนดหรือไม่ เช่น การตรวจสอบว่า x ที่เรากำหนดนั้นมีค่าอยู่ระหว่าง 50 ถึง 100 หรือไม่ การเขียนเงื่อนไขในการตรวจสอบสามารถทำได้ดังนี้ #include main(){ int x=70; if( x>50 && x<100 ){ printf("TRUEn"); }else{ printf("FALSEn"); } } จากโปรแกรมนี้เรากำหนดค่า x=70 จากที่เราทราบแล้วว่า ถ้าเงื่อนไขใน if (..................) เป็นจริงเท่านั้นจึงจะทำคำสั่งที่อยู่ติดกับเงื่อนไขนั้น ในที่นี้เราพบว่าเงื่อนไขเรามีอยู่สองเงื่อนไขนั้นคือ x>50 และ x<100 โดยเราทำการเชื่อมเงื่อนไขทั้งสองด้วย && (and) นั่นหมายความว่า เงื่อนไข x>50 ต้องจริง และ เงื่อนไข x<100 ก็ต้องจริง เท่านั้นจึงจะทำ statement printf("TRUEn"); แต่ถ้าเราเชื่อมเงื่อนไขสองเงื่อนไขด้วย || (หรือ) นั่นหมายความว่าเมื่อมีสองเงื่อนไข เงื่อนไขหนึ่งในสองเงื่อนไขนั้นเป็นจริง ประโยคเงื่อยไขนั้นก็จะเป็นจริง เช่น #include main(){ int x=100; if(x>50 || x>150){ printf("TRUEn"); }else{ printf("FALSEn"); } } จากโปรแกรมนี้เรากำหนดค่า x=100 ให้กับตัวแปร x และเงื่อนไขในโครงสร้าง if มี สองเงื่อนไขคือ x>50 หรือ x>150 นั่นหมายความว่า ถ้าเงื่อนไขใดเงื่อนไขหนึ่งเป็นจริงก็จะถือว่าเงื่อนไขทั้งหมดเป็นจริง ในโปรแกรมนี้ 100>50 นั่นหมายความว่าเงื่อนไขแรกเป็นจริง แต่เงื่อนไขที่สองคือ 100>150 อันนี้ไม่จริง แต่เนื่องจากเราเชื่อมสองเงื่อนไขด้วยสัญลักษณ์ || (หรือ) จึงทำให้เงื่อนไขทั้งหมดเป็นจริง โปรแกรมนี้จึงพิมพ์คำว่า TRUE ตัวอย่างสุดท้าย ปิดท้ายโครงสร้าง if นี้คือโปรแกรมตัดเกรด โปรแกรมยอดนิยมในการเขียนโครงสร้าง if นั่นคือ หากเรากำหนดกฎเกณฑ์ในการตัดเกรดดังนี้คือ คะแนน | เกรด | 80-100 | A | 70-79 | B | 60-69 | C | 50-59 | D | น้อยกว่า 50 | F | นั่นหมายความว่าถ้าคะแนนของเราตกลงในช่วงคะแนนใด เราก็จะได้เกรดนั้น หากเรากำหนดให้ตัวแปร x เป็นคะแนนที่เราได้ โปรแกรมจะสามารถเขียนได้ดังนี้ #include main(){ int x=74; if(x>=80 && x<=100){ printf("Grade is An"); }elseif(x>=70 && x<=79){ printf("Grade is Bn"); }elseif(x>=60 && x<=69){ printf("Grade is Cn"); }elseif(x>=50 && x<=59){ printf("Grade is Dn"); }else{ printf("Grade is Fn"); } } จากโปรแกรมข้างต้นนั้นเรากำหนดค่า 74ให้กับตัวแปร x สมมติเป็นคะแนนที่เราได้ จากนั้นโปรแกรมจะทำการตรวจสอบเงื่อนไขทีละเงื่อนไขจากบนลงล่างนั่นคือ x >=80 && x<=100 หมายความว่า x มีค่าตั้งแต่ 80 ถึง 100 จริงหรือไม่ ซึ่งปรากฎว่าไม่จริง จึงมาตรวจสอบเงื่อนไขที่สองคือ x >= 70 && x<=79 หมายความว่า x มีค่าตั้งแต่ 70 ถึง 79 จริงหรือไม่ ปรากฎว่าจริง เพราะ 74>=70 และ 74<=79 จริงทั้งสองเงื่อนไขทำให้เงื่อนไขนี้เป็นจริง ดังนั้นโปรแกรมจึงพิมพ์ค่า Grade is B ออกมาทางหน้าจอนั่นเอง จากโปรแกรมนี้เราสังเกตได้ว่าหากเราพิมพ์ค่าอื่นๆที่นอกเหนือจาก 50 ถึง 100 โปรแกรมจะให้เกรด F ในทันที นั่นหมายความว่าหากเราพิมพ์คะแนนเป็น 101 ก็จะไม่ได้เกรด A แต่จะเป็นเกรด F แทนนั่นเองครับ |