คำสั่งวนซ้ำ

ในบทนี้ คุณจะได้เรียนรู้เกี่ยวกับการใช้คำสั่งวนซ้ำเพื่อควบคุมโปรแกรม เช่น คำสั่ง while loop, do-while loop, for loop และ foreach loop

คำสั่งวนซ้ำ (loop statements) ถูกใช้เพื่อควบคุมโปรแกรมเพื่อให้โปรแกรมทำบางส่วนของโค้ดซ้ำๆ มีลูปหลายประเภทที่เราสามารถใช้ได้ในภาษา C# และคุณจะได้เรียนรู้มันทั้งหมด เราจะเริ่มต้นกับลูปที่ง่ายที่สุดคือ while loop

คำสั่ง While loop

คำสั่ง while loop นั้นเป็นคำสั่งวนซ้ำที่ง่ายที่สุดในภาษา C# โดยมีรูปแบบการใช้งานดังนี้

while (expression) {
statements
}

while loop นั้นจะใช้ในการทำซ้ำส่วนของโปรแกรมในขณะที่ expression เป็น true จนกว่า expression เป็น false โปรแกรมจะออกจาก while loop และทำงานต่อไปหลังจากลูป

ตัวอย่างการใช้ while loop ในภาษา C#

using System;

class WhileLoop
{
static void Main(string[] args)
{
int n = 1;
while (n <= 10)
{
Console.WriteLine("Loop " + n);
n++;
}
Console.WriteLine("Loop ended");
}
}

ในตัวอย่าง เป็นตัวอย่างในการใช้ while loop เพื่อนับเลข โดยโปรแกรมจะนับเริ่มจาก 1 ถึง 10 เราได้กำหนดค่าเริ่มต้นให้กับตัวนับเป็น 1 และ expression ของเราคือ n <= 10 นั่นหมายความว่าโปรแกรมจะทำงานในลูปของ while ตราบใดที่ค่าของตัวแปร n ยังน้อยกว่าหรือเท่ากับ 10 หลังจากนั้นมันจะออกจากลูป และแสดงข้อความ "Loop ended" บรรทัดสุดท้าย ในลูปก็จะแสดงค่าของ n และเพิ่มค่าขึ้นในแต่ละรอบโดยคำสั่ง n++ เพื่อไม่ให้โปรแกรมอยู่ในลูปตลอดไป

Loop 1
Loop 2
Loop 3
Loop 4
Loop 5
Loop 6
Loop 7
Loop 8
Loop 9
Loop 10
Loop ended

และนี่เป็นผลลัพธ์จากตัวอย่างการใช้ while loop เพื่อนับตัวเลข

คำสั่ง Do-while loop

do-while loop นั้นคล้ายกับ while loop ซึ่งมันสามารถใช้ทดแทนกันได้ โดยมีรูปแบบการใช้งานดังนี้

do {
statements
} while (expression) ;

สิ่งที่แตกต่างของ do-while loop คือการตรวจสอบ expression หลังจากการทำงานรอบแรกเสร็จสิ้น นั่นหมายความว่า do-while loop จะต้องทำงานอย่างน้อย 1 รอบ สังเกตุว่า expression จะอยู่ที่ตอน้ทายของลูป มาดูตัวอย่าง

using System;

class DoWhileLoop
{
static void Main(string[] args)
{
int n;

Console.WriteLine("Enter 0 to exit the loop");
do
{
Console.Write("Your number: ");
int.TryParse(Console.ReadLine(), out n);
Console.WriteLine("Number you entered is " + n);
} while (n != 0);

Console.WriteLine("Loop ended");
}
}

ในตัวอย่าง เป็นการใช้ do-while loop เพื่อถามให้ผู้ใช้ป้อนตัวเลข (0) เพื่อออกจากลูป ถ้าตัวเลขที่ใส่เข้ามานั้นไม่ใช่ศูนย์ โปรแกรมก็จะถามให้ใส่ใหม่เรื่อยไป และเมื่อใส่เลขศูนย์ มันทำให้ expression ของเราเป็น false และทำให้โปรแกรมออกจากลูป

Enter 0 to exit the loop
Your number: 2
Number you entered is 2
Your number: 3
Number you entered is 3
Your number: 5
Number you entered is 5
Your number: 10
Number you entered is 10
Your number: 0
Number you entered is 0
Loop ended

นี่เป็นผลลัพธ์ของตัวอย่างการใช้ do while loop เมื่อทดสอบรันโปรแกรมและป้อนตัวเลข

คำสั่ง For loop

for loop นั้นเป็นลูปที่ใช้ทำซ้ำคำสั่งหรือชุดของคำสั่งเป็นจำนวนรอบที่แน่นอน โดยมันมีรูปแบบในการใช้งานดังนี้

for (initialize; condition; iterator) {
statements
}

ในการใช้ for loop เราสามารถกำหนดค่าเริ่มต้น สร้างเงื่อนไข (expression) และทำการกำหนดการเพิ่มค่าหรือลดค่าของตัวทำซ้ำได้ก่อนที่ลูปจะเริ่มทำงาน มันจะมีประโยชน์ที่จะให้สะดวกเมื่อเรารู้จำนวนรอบที่แน่นอนในการวนซ้ำของโปรแกรม

using System;

class ForLoop
{
static void Main(string[] args)
{
for (int i = 1; i <= 10; i++)
{
Console.WriteLine(i);
}
}
}

ในตัวอย่างเป็นการใช้ for loop เพื่อแสดงตัวเลข 1 ถึง 10 เช่นกัน สังเกตุว่าการกำหนดค่าเริ่มต้น การสร้างเงื่อนไขและการเพิ่มค่าจะถูกใส่ไว้ที่ส่วนหัวของโปรแกรมที่เดียว อย่างไรก็ตาม มันก็เป็นแค่ทางเลือก และเราสามารถนำไปใส่ที่ใหม่ได้ถ้าหากต้องการ เหมือนตัวอย่างข้างล่างนี้

using System;

class ForLoop
{
static void Main(string[] args)
{
int i = 1;
for (; i <= 10; )
{
Console.WriteLine(i);
i++;
}
}
}

และข้างล่างนี่เป็นผลลัพธ์ของโปรแกรมทั้งสองที่ใช้ for loop จะเห็นว่ามันได้ผลลัพธ์เหมือน while loop ซึ่งลูปทั้งสองประเภทนี้ก็สามารถใช้ทดแทนกันได้เช่นกัน แต่อาจจะเขียนแตกต่างกันเล็กน้อย

1
2
3
4
5
6
7
8
9
10

คำสั่ง foreach loop

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

using System;

class ForeachLoop
{
static void Main(string[] args)
{
int[] numbers = { 2, 4, -1, 5, 0, 8, 9 };
foreach (int i in numbers)
{
Console.WriteLine(i);
}
}
}

ในตัวอย่างเราได้สร้างอาเรย์ของตัวเลขแบบ integer ซึ่งมีสมาชิกทั้งหมด 8 ตัว ในการวนซ้ำแต่ละรอบ ค่าะเก็บไว้ที่ตัวแปร i แล้วก็แสดงผลออกทาง console

2
4
-1
5
0
8
9

และนี่เป็นตัวอย่างผลลัพธ์ของการใช้ foreach loop

คำสั่ง break

คำสั่ง break เพื่อบังคับให้ลูปสิ้นสุดการทำงานในทันที การหยุดการทำงานของลูปโดยการใช้คำสั่ง break มักจะสร้างให้กับเงื่อนไขบางอย่าง condition เพื่อทำให้โปรแกรมออกจากลูป มันสามารถใช้ได้กับลูปทุกประเภททั้ง while, do-while, for และ foreach loop

มาดูตัวอย่างการใช้คำสั่ง break

using System;

class ForLoop
{
static void Main(string[] args)
{
for (int i = 1; i <= 10; i++)
{
Console.WriteLine(i);
if (i == 5) break;
}
}
}

ในตัวอย่างโปรแกรมจะออกจากลูปเมื่อ i มีค่าเท่ากับ 5 มันไม่สำคัญว่าเงื่อนไขในลูปที่ i <= 10 จะเป็นจริงหรือไม่

1
2
3
4
5

และข้างบนเป็นผลลัพธ์ของตัวอย่างการใช้คำสัง break

คำสั่ง continue

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

using System;

namespace ContinueStatement
{
class Program
{
static void Main(string[] args)
{
for (int i = 1; i <= 10; i++)
{
if (i % 2 == 0) continue;
Console.WriteLine(i);
}
}
}
}

ในตัวอย่างเราได้ใช้คำสั่ง continue เพื่อข้ามการแสดงผลของตัวเลขคู่ โดยคำสั่งจะทำงานเมื่อ i % 2 == 0 นั่นหมายความว่า i จะข้ามการแสดงผลไป

1
3
5
7
9

นี่เป็นฟลลัพธ์ตัวอย่างการใช้คำสั่ง continue

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