Loops

จีราวัฒน์ ศิรยศลักษณ์ 650710534

LOOPS

  • การ LOOP คือการวนซ้ำของระบบหรือสั่งให้ทำงานวนตามจำนวนครั้งที่ต้องการ โดยที่เงื่อนไขส่วนใหญ่ในคำสั่งควรเป็นจริงเพื่อสั่งให้ทำงานวนซ้ำภายใน loop

ลูปส่วนใหญ่แบ่งออกเป็น 2 ประเภท

Entry Controlled Loops (ลูปที่ตรวจสอบเงื่อนไขก่อนเข้า)

  • เป็นลูปประเภทที่จะตรวจสอบเงื่อนไขก่อนที่จะทำคำสั่งภายในลูป เช่น หากเงื่อนไขไม่ตรงตามที่กำหนดตั้งแต่ต้น ลูปข้างในก็จะไม่ทำงานเลย เช่น For loop และ While loop

ตัวอย่างลูป for

// for loop 
for (int i = 1; i < 5; i++) {
    Console.WriteLine("Apple " + i);
}

/* output
Apple 1
Apple 2
Apple 3
Apple 4
*/
FLOW CHART ของลูป for

ตัวอย่างลูป while

While loop
int i = 1;
while (i < 5) {
    Console.WriteLine("Banana number " + i);
    i++;
}

/* output
Banana number 1
Banana number 2
Banana number 3
Banana number 4
*/
🌊 FLOW CHART ของลูป While

Exit Controlled Loops (ลูปที่ตรวจสอบเงื่อนไขหลังออก)

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

ตัวอย่างลูป do-while

// do-while
int i = 0;
do {
    Console.WriteLine("I don't like this");
    i++;
} while (i < 5);

/* output
I don't like this
I don't like this
I don't like this
I don't like this
I don't like this
*/
FLOW CHART ของลูป do-while

Infinite loop

  • ลูปนี้เป็นลูปที่ไม่รู้จบ จะทำคำสั่งซ้ำไปเรื่อยๆ ไม่ว่าเงื่อนไขจะเป็นเท็จหรือจริง จบกว่าจะมีแรงจากภายนอกเพื่อยุติกันทำงาน

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

ตัวอย่างลูปอนันต์

// Infinite loop
while (true)
{
   Console.WriteLine("I am infinity");	
}

/* output
I am infinity
I am infinity
I am infinity
...
*/

Nested loops

  • หมายถึงลูปที่มีลูปข้างในอีกที เราจึงเรียกว่า nested loops

ตัวอย่างลูปซ้อน

// Nested loop
int outerLoop = 0, innerLoop = 0;
for (int i=1; i<=5; i++){
	outerLoop ++;
	for (int j=1; j<=5; j++)
	{
		innerLoop++;
	}
}
Console.WriteLine("Outer Loop runs {0} times", outerLoop);
Console.WriteLine("Inner Loop runs {0} times", innerLoop);
/*
Outer Loop runs 5 times
Inner Loop runs 25 times
*/

การซ่อนไม่จำเป็นต้องใช้ตัววนเดียวกันก็ได้ เราสามารถใส่ for loop ไว้ข้างใน while loop หรือ do-while loop ไว้ข้างใน for loop ก็ได้ ตามตัวอย่างข้างล่าง

int i=1;
while (i<=5)
{
	for (int j=1; j<=i; j++)
        {
                Console.Write(i + " ");
        }
        
	Console.WriteLine();
	i++;
}

/* output
1
2 2
3 3 3
4 4 4 4
5 5 5 5 5
*/


Compare with other language C / JAVA / PYTHON

For loops

for (int i = 0; i < 5; i++) 
{
    Console.WriteLine("i = " + i);
}
  • ใน C มีการเปลี่ยนตรงส่วนของการแสดงผลโดยใช้ printf() เพื่อแสดงผล

  • ใน Java รูปแบบคล้ายกับ C แต่ใช้ System.out.println() สำหรับแสดงผล

  • ส่วนใน Python จะใช้ฟังก์ชัน range() สำหรับการสร้างลำดับตัวเลข และใช้ print() สำหรับการแสดงผล และไม่มีเครื่องหมายปีกกา ( {} ) ใช้การเว้นเยื้อง (indentation) แทน

While loops

int i = 0;
while (i < 5) {
    Console.WriteLine("i = " + i);
    i++;
}
  • ทั้ง 3 ภาษา C# C java มีความคล้ายกัน

  • ส่วน Python ใช้การเยื้องบรรทัดและใช้ตัวดำเนินการ+= แทนi++เนื่องจาก Python ไม่มีรูปแบบ ++ หรือ--

do-while loops

int i = 0;
do {
    Console.WriteLine("i = " + i);
    i++;
} while (i < 5);
  • Python ไม่มี do-while loop โดยตรง แต่สามารถจำลองได้ด้วย while และใช้คำสั่ง break..


Summary of Comparing

  • ภาษา C : เป็นโครงสร้างพื้นฐานมากที่สุด ใช้ for, while, และ do-while โดยต้องจัดการตัวแปรและลำดับการเพิ่มค่าเอง

  • ภาษา Java : คล้ายกับ C แต่มีความสามารถเพิ่มขึ้น เช่น for-each loop (เนื้อหาถัดไป)

  • ภาษา Python : ใช้งานง่ายสุด มีการจัดการตัวแปรภายในโครงสร้าง loop และมี for ที่สามารถใช้งานกับลิสต์หรือคอลเลกชันอื่น ๆ ได้ โดยไม่ต้องระบุลำดับขั้นตอนไปเอง


video presentation

Slide presentation


Source แหล่งที่มา

C#

C

Java

Python

Last updated