21.คำสั่ง while loop,คำสั่ง do while loop,คำสั่ง for loop,break, continueและgoto

คำสั่ง while loop

ลูปที่ง่ายและพื้นฐานที่สุดในภาษา C++ นั้นคือ while loop เราใช้คำสั่งลูปสำหรับวนซ้ำให้โปรแกรมสามารถทำงานเดิมซ้ำๆ ได้ ซึ่งมีรูปแบบการใช้งานคือ
while (expression)
{
    statements
}
คำสั่ง while loop ใช้เพื่อทำสั่งโค้ดของโปรแกรมในขณะที่ Expression เป็นจริง true และมันจะสิ้นสุดการทำงานเมื่อ Expression เป็นเท็จ false และออกจาก while loop และทำคำสั่งอื่นต่อไป
การวนลูปการทำงานเมื่อเงื่อนไขเป็นจริงด้วยคำสั่ง while
                            ประโยคคำสั่ง while มีรูปแบบการเขียนดังนี้ คือ
                            
                    รูปแบบ :
                                    while (expression)
                                            {
                                                statement;
                                            }
                    โดยที่ :  expression    หมายถึง    นิพจน์ที่นำมาใช้ตรวจสอบเงื่อนไข
                                 statement     หมายถึง     ประโยคคำสั่งที่งานซ้ำ

                    ลักษณะการทำงานของลูป while

                            1. ชุดคำสั่งภายในลูป while จะทำงานเมื่อเป็นจริง (True)
                            2. การออกจากลูปเมื่อคำสั่งเงื่อนไขเป็นเท็จ (false)
                            3. เงื่อนไขหรือนิพจน์ที่นำมาตรวจสอบ สามารถใช้ตัวดำเนินการเปรียบเทียบ หรือตำดำเนินการทางตรรกะได้ เช่น
                                                while (i = 10)
                                                while (i >=10 && j <= 15)
                                                while (j > 10 && (b < 15 || C < 20))



ตัวอย่างโปรแกรม
#include <iostream>

using namespace std;

int main()
{
    int n = 1;
    while (n <= 10)
    {
        cout << n << ",";
        n++;
    }
    cout << " end loop";
    return 0;
}
ในตัวอย่าง โปรแกรมจะนับจาก 1 ถึง 10 เราได้ประกาศตัวแปร n และกำหนดค่าให้เป็น 1 ก่อนที่มันจะเข้าไปในทำงานใน while loop และคำสั่ง while loop จะทำการตรวจสอบ Expression และเข้าสู่ถ้าเงื่อนไขยังคงเป็นจริง และแสดงค่า n ออกทางจอภาพและเพิ่มค่า n ขึ้น 1 จนกว่า n จะเพิ่มไปถึง 10 ซึ่งจะทำให้ Expression เป็นเท็จ และโปรแกรมจะออกจาก loop และทำสั่งอื่นต่อไป
และนี่เป็นผลลัพธ์เมื่อรันโปรแกรม
1,2,3,4,5,6,7,8,9,10, end loop

สอน C++: การใช้งาน while loop เบื้องต้น

คำสั่ง do while loop
ลูปที่คล้ายกับ while loop คือ do while ลูป มันมีรูปแบบดังนี้
do
{
    statements
}
while (condition);

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

การวนลูปการทำงานอย่างน้อย 1 ครั้ง ด้วยคำสั่ง do...while
                   คำสั่ง do...while เป็นคำสั่งวนซ้ำการทำงานเดิมๆ โดยโปรแกรมจะทำงานชุดคำสั่งภายในลูปก่อน 1 รอบ แล้วจึงตรวจสอบเงื่อนไขที่กำหนด ถ้าเงื่อนไขที่กำหนดเป็นจริงให้กลับไปทำงานชุดคำสั่งภายในลูปอีกครั้ง และตรวจสอบเงื่อนไขที่กำหนดอีกครั้ง ถ้าเงื่อนไขที่กำหนดเป็นเท็จโปรแกรมจะออกจากลูปการทำงานไปทำงานที่คำสั่งถัดไปทันที

                        รูปแบบ :
                                        do
                                            {
                                                statement;
                                            }while ( condition);
                        โดยที่ :
                                        condition    หมายถึง    เงื่อนไขที่กำหนดให้ตรวจสอบหลังทำงานภาย
                                                                           ในลูปทุกครั้ง
                                        statement   หมายถึง    ชุดคำสั่งที่ทำงานก่อนตรวจสอบเงื่อนไข

                    ตัวอย่างโปรแกรม 

#include <iostream>
using namespace std;
int main()
{
    char ch;
    do
    {
        cout << "Enter 'n' to exit loop: ";
        cin >> ch;
    }
    while (ch != 'n');
    cout << "Exit from the loop.";
    return 0;
}
โปรแกรมข้างบนต้องการรับค่าจากผู้ใช้ expression ของมันต้องการตัวอักษร 'n' เพื่อออกจากลูป นี่คือผลลัพธ์ของโปรแกรมเมื่อได้ทดสอบ คุณสามารถลองดูได้เช่นกัน
Enter 'n' to exit loop: a
Enter 'n' to exit loop: b
Enter 'n' to exit loop: c
Enter 'n' to exit loop: n
Exit from the loop.

คำสั่ง for loop

for loop เป็นลูปที่มีการวนรอบเป็นจำนวนที่แน่นอน รูปแบบของมันคือ

for (initialize; condition; increase)
{
    statements
}
ลักษณะการทำงานของคำสั่ง  for  สามารถเขียนเป็นแผนผังได้ดังนี้
Picture
  ผังงานแสดงลักษณะการทำงานของคำสั่ง  for  ที่มา : สมชาย  รัตนเลิศนุสรณ์, 2545 : 78.
for loop เป็นลูปที่สามารถวนรอบตามตัวเลขที่กำหนดได้ มันทำงานเหมือน while loop มันจะวนซ้ำจนกว่า expression จะเป็นเท็จ นอกจากนั้น เรายังสามารถประกาศตัวแปรเริ่มต้น สร้าง expression เพิ่มและลดค่าก่อนที่ลูปจะเริ่ม
ตัวอย่างการนับตัวเลขโดยการใช้ for loop
#include <iostream>

using namespace std;

int main()
{
    for (int n = 1; n <= 10; n++)
    {
        cout << n << ",";
    }
    cout << " end loop";
    return 0;
}
และนี่เป็นผลลัพธ์เมื่อเรารันโปรแกรม ซึ่งมันเป็นโปรแกรมเดียวกันกับตัวอย่างของ while loop ก่อนหน้า
1,2,3,4,5,6,7,8,9,10, end loop

การใช้งาน for loop เบื้องต้น  


คำสั่ง break

คำสั่ง break ใช้สำหรับเพื่อจบการทำงานของลูปในทันที และมันไม่สนใจว่า expression จะเป็นจริงหรือไม่ เมื่อพบกับคำสั่ง break โปรแกรมจะออกนอกลูปและทำงานบรรทัดต่อไปหลังจากลูปทันที เรามักจะใช้คำสั่งนี้สำหรับการออกจากลูปโดยเงือนไขพิเศษ

#include <iostream>

using namespace std;

int main()
{
    for (int n = 1; n <= 10; n++)
    {
        if (n == 5)
            break;
        cout << n << ",";
    }
    cout << " end loop";
    return 0;
}

จากตัวอย่างข้างบน เป็นโปรแกรมในการแสดงตัวเลข 1 ถึง 10 แต่ในตอนนี้ โปรแกรมจะออกจากลูปเมื่อ n มีค่าเท่ากับ 5 เพราะว่าเราได้สร้างเงื่อนไขเมื่อ n มีค่าเท่ากับ 5 ให้คำสั่ง break ทำงาน คำสั่ง break สามารถใช้กับลูป เช่น for, while, do while, switch และอื่นๆ และผลลัพธ์การทำงานจะเป็นดังนี้
1,2,3,4, end loop

คำสั่ง continue

ไม่เหมือนคำสั่ง break คำสั่ง continue ถูกใช้เพื่อข้ามการทำงานในรอบปัจจุบัน ซึ่งจะไม่ทำคำสั่งหลังจากมันและไปเริ่มรอบถัดไปในทันที มาดูตัวอย่างการใช้งาน continue ในภาษา C++
#include <iostream>

using namespace std;

int main()
{
    for (int n = 1; n <= 10; n++)
    {
        if (n % 2 == 0)
            continue;
        cout << n << ",";
    }
    cout << " end loop";
    return 0;
}
ในตัวอย่าง เราได้เขียนโปรแกรมในการแสดงตัวเลขจาก 1 ถึง 10 เช่นเดิม แต่โปรแกรมจะข้ามลูปถ้า n เป็นตัวเลขคู่ เราได้ใช้คำสั่ง If ในการสร้างเงื่อนไขว่าถ้าหากเป็นเลขคู่นั้นให้ทำงานคำสั่ง continue ทำให้คำสั่ง cout ที่อยู่หลังคำสั่ง continue ถูกข้ามการทำงานไป และโปรแกรมแสดงผลเพียงเลขคี่

1, 3, 5, 7, 9, end loop
ตัวอย่างการใช้งานคำสั่งวนซ้ำในภาษา C++

หลังจากคุณได้เรียนรู้และทราบการทำงานของคำสั่งวนซ้ำประเภทต่างๆ แล้ว ต่อไปจะเป็นตัวอย่างการใช้งานคำสั่งต่างๆ รวมกัน เราจะเขียนโปรแกรมช่วยการทอนเงินของผู้ขาย โดยที่จะทอนเหรียญที่มีค่ามากที่สุดก่อน นี่เป็นโค้ดของโปรแกรม

#include <iostream>

using namespace std;

int main()
{
    const int SIZE = 8;
    int coin[SIZE] = {1000, 500, 100, 50, 20, 10, 5, 1};
    int count[SIZE] = {0, 0, 0, 0, 0, 0, 0, 0};

    int money;
    cout << "Enter money: ";
    cin >> money;

    for (int i = 0; i < SIZE; i++)
    {
        count[i] = money / coin[i];
        money %= coin[i];
    }

    cout << "Your change" << endl;

    for (int i = 0; i < SIZE; i++)
    {
        if (count[i] == 0)
        {
            continue;
        }
        cout << coin[i] << " => " << count[i] << endl;
    }

    return 0;
}
ในตัวอย่าง เป็นโปรแกรมในการทอนเงินจากการซื้อของ โดยโปรแกรมจะให้กรอกจำนวนเงินที่ต้องการจะทอนและบอกว่าต้องทอนเงินเหรียญและธนบัตรขนาดต่างๆ อย่างละเท่าไร ในส่วนแรกของโปรแกรมเราได้กำหนดประเภทของเหรียญและธนบัตรในตัวแปรอาเรย์ coin และตัวแปรอาเรย์ count สำหรับนับเหรียญและธนบัตรแต่ละประเภท และโปรแกรมของเราเริ่มทำงานจากการรับจำนวนเงินทอนเก็บในตัวแปร money

for (int i = 0; i < SIZE; i++)
{
    count[i] = money / coin[i];
    money %= coin[i];
}
ต่อมาเราได้ใช้คำสั่ง for loop ในการวนรอบอาเรย์ coin โดยวนจากประเภทที่มากที่สุดก่อน และเพื่อหาจำนวนเงินที่ต้องทอนของแต่ละประเภทว่าต้องทอนเท่าไหร่ โดยจะนำจำนวนเงินทั้งหมดหารด้วยประเภทของเงินและเก็บไว้ในตัวแปร count หลังจากนั้นเราลบจำนวนเงินนั้นออกไปโดยการใช้ดำเนินการ mod

for (int i = 0; i < SIZE; i++)
{
    if (count[i] == 0)
    {
        continue;
    }
    cout << coin[i] << " => " << count[i] << endl;
}
หลังจากการหาจำนวนเงินแต่ละประเภทที่ต้องทอนเสร็จสิ้นแล้ว เราใช้คำสั่ง for loop ในการวนเพื่อแสดงผลว่าจะต้องทอนเงินแต่ละประเภทเท่าไหร่ และเราใช้คำสั่ง continue ในการข้ามการแสดงผลประเภทของเงินที่ไม่มีการทอนไป
Enter money: 465
Your change
100 => 4
50 => 1
10 => 1
5 => 1
นี่เป็นผลลัพธ์การทำงานของโปรแกรม เมื่อเรากรอกจำนวนเงินเป็น 465 โปรแกรมจะบอกว่าต้องทอนธนบัตรประเภท 100 จำนวน 4 ใบและ 50 จำนวน 1 ใบ และทอนเหรียญ 10 และเหรียญ 5 อย่างละ 1
ในบทนี้ เราได้ครอบคลุมเนื้อหาพื้นฐานของคำสั่งควบคุมโปรแกรม ซึ่งเป็นเครื่องมีที่มีประโยชน์เพื่อช่วยให้เราควบคุมโปรแกรมให้เป็นไปตามที่ต้องการได้ และคุณได้เห็นตัวอย่างการนำไปประยุกต์ใช้ในการเขียนโปรแกรมกับการแก้ปัญหาจริง ซึ่งคุณสามารถสร้างโปรแกรมอะไรก็ได้เพื่อมาช่วยให้คุณสามารถทำงานได้ง่ายขึ้น

คำสั่ง goto

คำสั่ง goto ให้การกระโดดอย่างไม่มีเงื่อนไขจาก goto ไปยังคำสั่งที่มีป้ายกำกับในฟังก์ชันเดียวกัน
หมายเหตุ - ไม่แนะนำให้ใช้คำสั่ง goto เป็นอย่างมากเนื่องจากทำให้ยากต่อการติดตามขั้นตอนการควบคุมของโปรแกรมทำให้โปรแกรมเข้าใจยากและแก้ไขได้ยาก โปรแกรมใด ๆ ที่ใช้ goto สามารถเขียนใหม่ได้เพื่อที่จะไม่ต้องใช้ goto
รูปแบบการใช้ goto
goto label;
..
.
label: statement;
 
ไวยากรณ์ของคำสั่ง goto ใน C ++ คือ
โดยที่ label คือตัวระบุที่ระบุคำสั่งที่มีป้ายกำกับ คำสั่งที่มีป้ายกำกับคือคำสั่งใด ๆ ที่นำหน้าด้วยตัวระบุตามด้วยเครื่องหมายจุดคู่ (:)
ผังงาน(Flowchart)
C++ goto statement
ตัวอย่างโปรแกรม
#include <iostream>
using namespace std;
int main () {
   int a = 10;//Local variable declaration:
   //do loop execution
   LOOP:do {
      if( a == 15) {
  //skip the iteration.
         a = a + 1;
         goto LOOP;
      }
      cout << "value of a:" << a << endl;
      a = a + 1;
   }
   while( a < 20 );
   return 0;
}

เมื่อโค้ดด้านบนถูกคอมไพล์และเรียกใช้งานจะให้ผลลัพธ์ดังต่อไปนี้
value of a: 10
value of a: 11
value of a: 12
value of a: 13
value of a: 14
value of a: 16
value of a: 17
value of a: 18
value of a: 19
การใช้ goto ที่ดีอย่างหนึ่งคือการออกจากกิจวัตรที่ซ้อนกันอยู่ลึก ๆ ตัวอย่างเช่นพิจารณาส่วนของรหัสต่อไปนี้
for(...) {
   for(...) {
      while(...) {
         if(...) goto stop;
         .
         .
         .
      }
   }
}
stop:
cout << "Error in program.\n";
goto จะบังคับให้ต้องทำการทดสอบเพิ่มเติม คำสั่ง break แบบธรรมดาจะใช้ไม่ได้ที่นี่เพราะจะทำให้โปรแกรมออกจากวงในสุดเท่านั้น




C++ Programming Tutorial 40 - Break and Continue



*********************************************************************************************************************

goto statement in C++ with example

The goto statement is used for transferring the control of a program to a given label. The syntax of goto statement looks like this:
goto label_name;
Program structure:
label1:
...
...
goto label2;
...
..
label2:
...
In a program we have any number of goto and label statements, the goto statement is followed by a label name, whenever goto statement is encountered, the control of the program jumps to the label specified in the goto statement.
goto statements are almost never used in any development as they are complex and makes your program much less readable and more error prone. In place of goto, you can use continue and break statement.

Example of goto statement in C++

#include <iostream>
using namespace std;
int main(){
   int num; cout<<"Enter a number: "; cin>>num;
   if (num % 2==0){
      goto print;
   }
   else {
      cout<<"Odd Number";
   }

   print:
   cout<<"Even Number";
   return 0;
}
Output:
Enter a number: 42
Even Number