มีบางสถานการณ์ที่เราจำเป็นต้องเขียนโปรแกรมให้ทำงานซ้ำ ตามเงื่อนไขที่กำหนดขึ้นมา เพื่อให้โปรแกรมทำงานหรือแสดงผลลัพธ์ได้ถูกต้อง
ขอยกตัวอย่างงานบางอย่างที่จำเป็นต้องเขียน program เพื่อให้ทำงานซ้ำ เช่น
การเปิดใช้งานโปรแกรม MSN Messenger หลังจากที่ผู้ใช้ กรอก username และ password โปรแกรมก็จะตรวจสอบว่า username และ password ที่ให้มาถูกต้องไหม หากไม่ถูกต้องก็จะแสดงผลลัพธ์ให้ผู้ใช้ทำการกรอกข้อมูลใหม่อีกครั้ง เป็นการกลับมาทำงานซ้ำอีกรอบ ซึ่งการที่เราจะทำให้โปรแกรมกลับมาทำงานซ้ำได้ เราก็จำเป็นต้องเขียนคำสั่งเจาะจงลงไปให้ในโปรแกรม
ซึ่งก็คือ iterate statment หรือประโยคคำสั่งทำซ้ำ
โดยคำสั่งที่ให้โปรแกรมทำงานซ้ำในภาษา C# มีดังนี้
while
รูปแบบคำสั่ง while
while(เงื่อนไขที่จะให้ทำซ้ำ)
ประโยคคำสั่ง (statement) ที่จะให้โปรแกรมทำ
ถ้าต้องการให้ทำซ้ำหลายอย่างก็ใส่ปีกกาปีกกาครอบคำสั่งเหล่านั้น
while(เงื่อนไขที่จะให้ทำซ้ำ)
{
ประโยคคำสั่ง (statement) ที่จะให้โปรแกรมทำ 1
ประโยคคำสั่ง (statement) ที่จะให้โปรแกรมทำ 2
ประโยคคำสั่ง (statement) ที่จะให้โปรแกรมทำ 3
}
การทำงานของ while จะเริ่มจากการตรวจค่าเงื่อนไขที่อยู่ในวงเล็บหลังตัวมัน ว่าเป็นจริงหรือไม่ ถ้าจริง คำสั่งต่างๆ ที่อยู่ในเครื่องหมายปีกกาก็จะถูกเรียกใช้งาน หนึ่งครั้ง และก็จะวนกลับมาดูเงื่อนไขใหม่ว่าเป็นจริงไม่ ถ้าจริงอีกคำสั่งต่างก็จะถูกเรียกใช้อีกรอบ while จะทำซ้ำเช่นนี้ไปเรื่อยๆ จนกว่าเงื่อนไขเป็นเท็จจริงหยุดการทำซ้ำและคำสั่งในปีกกาก็จะไม่ถูกเรียกใช้งาน
ตัวอย่างการใช้งาน while
int i =1;
while(i <= 10)
{
Console.WriteLine(“{0}”, i);
i++;
}
ผลลัพธ์
1
2
3
4
5
6
7
8
9
10
do...while
คำสั่ง do..while มีลักษณะการทำงานทีคล้ายกับ while แต่ก็มีจุดที่ต่างกันดังนี้
while เงื่อนไขจะถูกตรวจสอบก่อน ถ้าเป็นจริงคำสั่งในปีกการหลัง while ก็จะถูกเรียกใช้งาน
do...while คำสั่งที่อยู่ในปีกกาจะทำงานก่อน 1 ครั่ง แล้วค่อยดูเงื่อนไขว่าเป็นจริงหรือไม่ หากจริงก็จะกลับมาทำซ้ำ
คำสั่งที่อยู่ในปีกกาของ while หรือ block ของ while อาจไม่ได้ทำงานเลยสักครั้งก็ได้ หากเงื่อนไขเป็นเท็จตั้งแต่เริ่ม
แต่คำสั่งใน block do...while จะทำงานอย่างน้อย 1 ครั้งแน่นอน
รูปแบบคำสั่ง do... while
do{
ประโยคคำสั่ง (statement) ที่จะให้โปรแกรมทำ 1
ประโยคคำสั่ง (statement) ที่จะให้โปรแกรมทำ 2
ประโยคคำสั่ง (statement) ที่จะให้โปรแกรมทำ 3
}while(เงื่อนไขที่จะให้ทำซ้ำ);
ตัวอย่าง
int i = 1;
do{
Console.WriteLine(“{0}”, i);
i++;
}while(i <= 10);
ผลลัพธ์
1
2
3
4
5
6
7
8
9
10
for
คำสั่ง for จะใช้ในกรณีที่เรารู้จำนวนครั้งที่แน่นอนของการทำซ้ำ โดยการกำหนดค่าเริ่มต้น และเงื่อนไขที่จะทำซ้ำลงไป
รูปแบบของคำสั่ง for
for(ตัวนับ=ค่าเริ่มต้น ; เงื่อนไขที่จะให้ทำซ้ำ; เปลี่ยนค่าตัวนับ)
{
คำสั่งที่จะให้ทำซ้ำ
}
วงเล็บที่อยู่หลัง for จะถูกแบ่งเป็น 3 ส่วนดังนี้
ลักษณะการทำงานของ for มีการทำงานที่เหมือนกับ while แต่จะรวมทุกอย่างไว้ที่บรรทัดเดียว
ตัวอย่าง
for(int i = 1; i <= 10; i++)
{
Console.WriteLine(“{0}”, i);
}
ผลลัพธ์
1
2
3
4
5
6
7
8
9
10
Jump Statement
ในระหว่างที่ program ทำงานซ้ำ เราสามารถที่จะเพิ่มคำสั่งเหล่านี้เข้าไปเพื่อให้ program ทำงานแตกต่างไปจากเดิมด้วยการเพิ่มคำสั่ง Jump Statement เข้าไป
Jump Statement จึงเป็นประโยคคำสั่งให้โปรแกรมข้ามกระโดดไปทำคำสั่งอื่น แทนคำสั่งที่ทำงานตามปกติ
คำสั่งที่ใช้ใน Jump Statement ได้แก่ break, continue, default, goto, return, yield
break
ใช้หยุดการทำซ้ำของคำสั่ง while, do...while หรือ for ตัวอย่าง
int i =1;
while(i <= 10)
{
if(i == 5)
{
break;
}
Console.WriteLine(“{0}”, i);
i++;
}
ผลลัพธ์
1
2
3
4
continue
เป็นคำสั่งกลับไปเริ่มวนซ้ำใหม่เลย โดยคำสั่งที่ตามหลัง continue จะถูกข้ามไป ไม่ได้ทำงาน
ตัวอย่าง
for(int i = 1; i <= 10; i++)
{
if(i == 5)
{
continue;
}
Console.WriteLine(“{0}”, i);
}
ผลลัพธ์
1
2
3
4
6
7
8
9
10
goto
เป็นคำสั่งให้โปรแกรมกระโดดไปทำยังจุดที่เราได้กำหนดไว้
คำสั่ง goto ไม่ควรนำมาใช้งานเพระจะทำให้โปรแกรมมีความซับซ้อนเนื่องจาก คำสั่งจะกระโดดข้ามไปมา หากมีคำสั่ง goto หลายจุดจะทำให้อ่านการทำงานโปรแกรมได้ยากขึ้นและมีโอกาสที่โปรแกรมจะทำงานไม่ตรงตามต้องการ
การใช้งาน goto ต้องกำหนดชื่อให้กับจุดที่จะให้ goto กระโดดมาทำงานเรียกว่า labelName
รูปแบบการใช้งาน goto
goto lableName;
รูปแบบการกำหนด label
labelName;
ตัวอย่างการใช้งาน
int number = 10;
goto myLabel;
number += 20;
myLabel:
Console.WriteLine("number = {0}", number);
ผลลัพธ์
number = 10
ตัวอย่างการใช้งาน goto ใน switch case
Console.WriteLine("Coffee sizes: 1=Small 2=Medium 3=Large");
Console.Write("Please enter your selection: ");
string s = Console.ReadLine();
int n = int.Parse(s);
int cost = 0;
switch (n)
{
case 1:
cost += 25;
break;
case 2:
cost += 25;
goto case 1;
case 3:
cost += 50;
goto case 1;
default:
Console.WriteLine("Invalid selection.");
break;
}
if (cost != 0)
{
Console.WriteLine("Please insert {0} cents.", cost);
}
Console.WriteLine("Thank you for your business.");
// Keep the console open in debug mode.
Console.WriteLine("Press any key to exit.");
Console.ReadKey();
ผลลัพธ์
Coffee sizes: 1=Small 2=Medium 3=Large
Please enter your selection: 1
Please insert 25 cents.
Thank you for your business.