พื้นฐานการโปรแกรม ต้องทราบการใช้คำสั่ง การควบคุม 4. Statement พื้นฐานการโปรแกรม ต้องทราบการใช้คำสั่ง การควบคุม C# Programming with Visual C# 2010 Express
เป้าหมายการเรียนรู้ คำสั่งใช้เพื่อการตัดสินใจ If..else ?: switch คำสั่งเพื่อนการทำงานวนซ้ำ while do while for, foreach คำสั่งทำงานเฉพาะจุด go to, break, continue return C# Programming with Visual C# 2010 Express
ชนิดของสเตทเมนต์ คำสั่งเลือก (selection statement) เช่น คำสั่ง if ถ้า เงื่อนไข (จริงหรือเท็จ) แล้ว จะทำอะไร เป็นคำสั่งที่ใช้ บ่อยที่สุด คำสั่งทางเลือกอีกแบบคือ switch เป็นทางเลือกที่ มีหลายทางเลือก คำสั่งวนซ้ำ (iteration statement) มีหลายตัว เช่น while, do, for เป็นคำสั่งที่พบเหมือนกับภาษาโปรแกรม อื่นๆ สำหรับดอดเน็ตมีคำสั่งที่ช่วยให้เขียนได้ง่ายขึ้นด้วย คำสั่ง foreach ซึ่งนิยมใช้กับ คลาสประเภ่ท collection คำสั่งกระโดด (jump statement) ใช้คำสั่ง goto, break, continue เป็นคำสั่งที่ให้กระโดด หยุด และทำต่อไป ไป ยังจุดต่างๆ แม้จะไม่แนะนำให้ใช้ แต่หลายภาษาในเชิง วัตถุก็มีคำสั่งนี้ให้ใช้อยู่ C# Programming with Visual C# 2010 Express
การใช้ code snippet ทุกสเตทเมนต์สามารถใช้ โค้ดลัด (code snippet) ได้ เช่น การใช้คำสั่ง เช่น if เป็นคำสั่งเริ่มต้น ให้พิมพ์ if และตามด้วยกด Tab 2 ครั้ง visual C# 2010 จะสร้างโค้ด อัตโนมัติ C# Programming with Visual C# 2010 Express
การใช้เงื่อนไข if If เป็นคำสั่งการตัดสินใจพื้นฐาน และมีทางเลือกอื่นได้ด้วย การต่อด้วย else ดังแสดงเป็น if (Boolean-expression) else … หรือแปลตรงตัวว่า ถ้า...แล้ว... ตัวอย่างการใช้ เช่น ถ้าตัวแปรชื่อ number % 2 == แล้ว ให้พิมพ์ว่าเลขคู่ if ([condition]) { [code to execute if condition is true] } else [code to execute if condition is false] C# Programming with Visual C# 2010 Express
การทำลำดับชั้นของ if .. else if if ([condition1]) { [code to execute if condition1 is true] } else if ([condition2]) [code to execute if condition is false and condition2 is true] else [code to execute if condition1 and condition2 are both false] C# Programming with Visual C# 2010 Express
ตัวอย่างการคำเกรด ด้วย if…else if if (score > 79) { Console.WriteLine("Get A"); } else if (score > 69) Console.WriteLine("Get B"); else if (score > 59) Console.WriteLine("Get C"); else if (score > 49) Console.WriteLine("Get D"); C# Programming with Visual C# 2010 Express
การใช้เงื่อนไข Ether…or Ether…or หมายถึง ถ้าไม่อย่างใดก็อีกอย่างหนึ่ง ซึ่ง เหมือนเงื่อนไข If…else นั้นเอง ในเงื่อนไข Ether…or ภาษาซีชาร์ปมีตัวดำเนินการอย่างย่อคือ ?: ดังเคยอธิบาย มาบ้างแล้ว DataType result = [condition] ? [true expression] : [false expression] int age = 12; Console.WriteLine((age > 15) ? "You are adult." : "You are boy."); C# Programming with Visual C# 2010 Express
การใช้เงื่อนไขหลายทางเลือก switch ในกรณีที่เงื่อนไข มีความซับซ้อนมาก การใช้ if .. else อย่างเดียวจะทำให้โค้ดอ่านยาก มีอีกวิธีหนึ่งการใช้ switch … case ภายใต้เงื่อนไข switch ([expression to check)] จะ ตรวจสอบเงื่อนไข และนำผลไปเปรียบเทียบกับ แต่ละบล็อก คำสั่ง case[ ] แต่คำสั่งสุดท้ายของแต่ละบล็อกต้อง ต่อด้วย คำสั่ง break; switch ([expression to check]) { case [test1]: ... [exit case statement] case [test2]: default: } C# Programming with Visual C# 2010 Express
การจัดกลุ่มใน switch ในกรณีที่ หลาย case ให้ทำงานเหมือนกันก็สามารถ รวมกลุ่ม case ได้ ดังตัวอย่างต่อไปนี้ enum MonthName { January, February,March,April,May, June,July, August,September,October, November,December } MonthName current = MonthName.June; int monthDays; switch (current) { case MonthName.February : monthDays = 28; break; case MonthName.April : case MonthName.June : case MonthName.September : case MonthName.November : monthDays = 30; default : monthDays = 31; } C# Programming with Visual C# 2010 Express
การใช้ goto ใน switch C#ใช้ คำสั่ง goto ไปยังป้ายชื่อ (label) case และ default ไปยังปลายทางของ case และ default ของ switch ได้ ตัวอย่างข้อต่อไปนี้ ใช้ได้กับซีชาร์ป switch (number % 10) { case 1: if (number / 10 == 1) { Console.WriteLine("case1"); break; } goto case 2; case 2: if (number / 10 == 2) { Console.WriteLine("case2"); break; goto default; default: Console.WriteLine("default"); break; C# Programming with Visual C# 2010 Express
คำสั่งวนซ้ำ While คำสั่งทำงานวนซ้ำ (loop) ของ While เป็นคำสั่งอย่างง่ายที่สุด และนิยมใช้กันมาก การทำงานซ้ำจะทำจนกว่าเงื่อนไขจะเป็น เท็จ การตรวจสอบเงื่อนไขต้องเป็นการตรวจสอบที่เป็น Boolean หรือ จิรง/เท็จ while ([condition]) { // Code to loop. } int i = 0; while (i < 10) { Console.WrileLine(i++); } C# Programming with Visual C# 2010 Express
ข้อควรระวังในการใช้ while ควรเขียนให้อ่านง่ายขึ้นไปอีกแยกคำสั่งใหม่ ในการเพิ่มค่า int i = 0; while (i < 10) { Console.WrileLine(i++); } while (i < 10) { Console.WrileLine(i); i++; } C# Programming with Visual C# 2010 Express
คำสั่งวนซ้ำ do … while คำสั่ง do คล้ายกับคำสั่ง while เพียงแต่ do จะทำงานใน บล็อกคำสสั่งก่อน แล้วตรวจสอบบูลีนที่หลัง คำสั่งวนซ้ำ ของ while จะทำงานในบล็อกคำสั่งวนอย่างน้อย 0 ครั้ง ขึ้นไป แต่ คำสั่งวนซ้ำของ do จะทำคำสั่งในบล็อกอย่าง น้อย 1 ครั้งขึ้นไป do { // Code to loop. } while ([condition]); do { Console.WriteLine( i ); i++; }while ( i < 10); C# Programming with Visual C# 2010 Express
การใช้คำสั่งวนซ้ำ for เมื่อใช้ลูบที่ผ่านมา เช่น while ผู้ใช้มักจะลืมการปรังปรุงข้อมูล ซึ่งอาจทำให้ลูบวนไม่รู้จบได้ง่ายๆ การใช้ for จะช่วยลดความผิดพลาดได้ง่ายเพราะ for มีการ บังคับการปรับปรุงข้อมูลมูลรวมอยู่ในเงื่อนไขแล้ว รูปแบบการ ใช้ for จะทำงานวนซ้ำ เริ่มจากค่าเริ่มต้น (initialize) แล้ว ทำงานตามเงื่อนไข (condition) ถ้าเป็นจริงจะทำงานภายในลูป( { …// code-statement .. } สุดท้าย จะทำการปรับปรุงข้อ มูลค่าเริ่มต้น (update) การทำงานในรอบต่อไปจะทดสอบ เงื่อนไข เมื่อเป็นจริงจะทำงานต่อไป จนกว่าเงื่อนไขจะเป็น เท็จจึงจะออกจากลูบ for ( initializer ; condition ; update ) { //code - statement } C# Programming with Visual C# 2010 Express
การใช้คำสั่งวนซ้ำ foreach การใช้คำสั่ง foreach เหมะสมกับการ กลุ่มข้อมูลหรือชุดข้อมูล การใช้มักต้อง ใช้ร่วมกับเนมสเปส System.Collection เป็น คลาสของชุดข้อมูล เช่น arrayList, listBox ซึ่งง่ายกว่าการ ใช้คำสั่ง for เพราะการใช้คำสั่ง for จะต้องนับจำนวนสมาชิก ในการวนซ้ำให้แน่ชัดก่อน และปรับปรุงค่าต่อไปในการทำงาน วนซ้ำ จึงจะสั่งให้วนซ้ำตามจำนวนสมาชิก แต่สำหรับ การ ใช้ foreach ไม่ต้องนับจำนวนสมาชิกก่อน สามารถทำงานวน ซ้ำได้ทันที ArrayList al = new ArrayList(); al.Add("one"); al.Add("two"); al.Add("three"); al.Add("four"); foreach (var item in al) { Console.WriteLine(item); } C# Programming with Visual C# 2010 Express
คำสั่งทำงานเฉพาะจุด goto การใช้คำสั่งนี้ เคยได้เห็นกันบ้างแล้ว กับคำสั่ง switch ที่ให้ทำงานต่อไปยังป้ายชื่อของ case ต่างๆ หรือ ป้าย ชื่อ default ของ switch การใช้ goto ยังคงทำงาน เหมือนกับใช้กับ switch คือให้กระโดดเพื่อให้ออกจาก บล็อกไปยังป้ายชื่อเป้าหมาย C# Programming with Visual C# 2010 Express
คำสั่งทำงานเฉพาะจุด break, continue คำสั่ง break ใช้สำหรับการหยุดการทำงาน ของสเตทเมนต์ switch, while, do , for, foreach และคำสั่ง continue ใช้สำหรับ การทำงานต่อไป โดยทำงานเริ่มต้นใหม่ของลูบ คือใช้กับ while, do, for, foreach เท่านั้น โดยการให้หยุดหรือทำงานต่อ จะมีความหมายเฉพาะในส่วนในสุดของของบล็อกเท่านั้น int i = 0; while (true) { Console.WriteLine(i); i++; if (i < 5) continue; else break; } C# Programming with Visual C# 2010 Express
การตรวจสอบ ค่าที่ปรับปรุง ใน while จากตัวอย่างการ ใช้ break และ continue ที่ผ่าน มา แสดงการ หยุด และการ ทำงาน ของ บล็อก while {…} ไม่ใช่ ในส่วน บล็อก if ผลลัพธ์ โปรแกรมจะพิมพ์ 0 ถึง 4 C# Programming with Visual C# 2010 Express
คำสั่งทำงานเฉพาะจุด return คำสั่ง return ใช้สำหรับให้ออกสเตทเมนต์ switch หรือ ออกจากเมทธอด เช่น เมทธอดที่พบบ่อย เมทธอด Main( ) เมทธอดคืออะไรจะอธิบายในรายละเอียดมากขึ้น ในบทต่อๆ ไป C# Programming with Visual C# 2010 Express
คำถามทบทวน คำสั่งต่อไปนี้ผิดพลาดอะไร และควรแก้ไขอย่างไร if num – 2 ==0 { …} if (num < 0) || (num > 100) { … } if (num == 60); num = 0; switch (num){ case 1,2 : num = 2; case 3: num = 3; default: num= 0; } for (int i = 0, I < 5, i++) Console.WriteLine(i); C# Programming with Visual C# 2010 Express
คำถามทบทวน คำสั่งต่อไปนี้ผิดพลาดอะไร และควรแก้ไขอย่างไร int i = 0; while (i < 10) Console.WriteLine(i); do { string r = Console.ReadLine( ); test = int.Parse(r); } While ( 0 != test) int i = 0; while (true){ Console.WriteLine(i); i++; if (i < 5) continue; else{ break;} i++; } C# Programming with Visual C# 2010 Express
คำถามทบทวน คำสั่งวนซ้ำใด ที่เหมาะสมกับการขึ้นข้อความรับการ ตอบสนองจากผู้ใช้งาน คำสั่ง do {…}while( ) และคำสั่ง while{ … } มีการวนซ้ำ อย่างน้อยกี่ครั้ง คำสั่ง goto ควรใช้ในสถานการณ์ใด อะไรคือความแตกต่างระหว่างคำสั่ง break กับ continue C# Programming with Visual C# 2010 Express