เขียนคำสั่งทำซ้ำใน C#

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

ขอยกตัวอย่างงานบางอย่างที่จำเป็นต้องเขียน 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 ส่วนดังนี้

  1.     ส่วนแรกเป็นการกำหนดค่าเริ่มต้นให้กับตัวนับ
  2.     ส่วนที่สองคือเงื่อนไขที่จะให้ทำซ้ำ
  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.

download soure code ตัวอย่าง

ความเห็น

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Friends
jirawat.in.th clipdonjai.com janawat.wordpress.com csharp89.blogspot.com 108blog.net

HTML5 Powered with Multimedia