1. วนลูปในชีวิตของเรา

บ่อยครั้งที่ชีวิตของเราต้องการให้เราทำสิ่งเดียวกันหลายครั้ง ตัวอย่างเช่น สมมติว่าฉันต้องการสแกนเอกสารที่ประกอบด้วยหน้าจำนวนมาก ที่เราทำซ้ำขั้นตอนเดิมซ้ำแล้วซ้ำอีก:

  • ใส่หน้าแรกในเครื่องสแกน
  • กดปุ่มสแกน
  • วางหน้าถัดไปบนเครื่องสแกน

นี่เป็นเรื่องยากที่จะทำด้วยตนเอง คงจะดีไม่น้อยหากกระบวนการนี้สามารถทำให้เป็นแบบอัตโนมัติได้

หรือพิจารณาตัวอย่างอื่น: สมมติว่าฉันต้องการทำเครื่องหมายอีเมลที่ยังไม่ได้อ่านทั้งหมดในกล่องจดหมายของฉันว่าเป็นสแปม กาลครั้งหนึ่งฉันต้องเลือกอีเมลทีละฉบับและทำเครื่องหมายว่าเป็นสแปม

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

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


2. whileวนซ้ำ

คำสั่ง if-else ช่วยขยายขีดความสามารถในการเขียนโปรแกรมของเราอย่างมาก ทำให้สามารถเขียนโปรแกรมที่ดำเนินการต่าง ๆ ในสถานการณ์ต่าง ๆ ได้ แต่มีอีกสิ่งหนึ่งที่จะทำให้โปรแกรมของเรามี ประสิทธิภาพมากขึ้นตามลำดับ - ลูป

Java มีลูป 4 ชนิด: while, for, for-eachและdo-while. ตอนนี้เราจะเจาะลึกถึงสิ่งแรกเหล่านี้

การwhileวนซ้ำนั้นง่ายมาก ประกอบด้วยสองส่วนเท่านั้น: condition และ loop body ตัวลูปถูกดำเนินการซ้ำแล้วซ้ำอีกตราบเท่าที่มีtrueเงื่อนไข โดยทั่วไปแล้วwhileลูปจะมีลักษณะดังนี้:

while (condition)
   statement;
สัญกรณ์สำหรับwhileการวนซ้ำด้วยคำสั่งเดียว
while (condition)
{
   block of statements
}
สัญกรณ์สำหรับwhileการวนซ้ำด้วยบล็อกของคำสั่ง

มันง่ายมาก คำสั่งหรือบล็อกของคำสั่ง จะดำเนินการ ซ้ำแล้วซ้ำอีกตราบเท่าที่เงื่อนไขการวนซ้ำเท่ากับtrue

นี่คือวิธีการทำงาน: ขั้นแรกเงื่อนไขจะถูกตรวจสอบ หากเป็นจริงเนื้อความของลูปจะถูกดำเนินการ ( คำสั่งหรือบล็อกของคำสั่ง ) จากนั้นเงื่อนไขจะถูกตรวจสอบอีกครั้งและตัวลูปจะถูกดำเนินการอีกครั้ง ไปเรื่อยๆจนกว่าเงื่อนไขจะเป็นเท็จ

ถ้าเงื่อนไขเป็นจริงเสมอ โปรแกรมจะไม่หยุดทำงาน มันจะติดอยู่ในลูปอย่างถาวร

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


3. ตัวอย่างของลูป

ต่อไปนี้คือตัวอย่างการใช้งานจริงของลูปที่ใช้งานจริง

รหัส คำอธิบาย
int n = 5;
while (n > 0)
{
   System.out.println(n);
   n--;
}
5 บรรทัดจะปรากฏขึ้นบนหน้าจอ:
5
4
3
2
1
รหัส คำอธิบาย
int  n = 0;
while (n < 10)
{
   System.out.println(n);
   n++;
}
10 บรรทัดจะแสดงบนหน้าจอ:
0
1
...
8
9
รหัส คำอธิบาย
Scanner console = new Scanner(System.in);
while(console.hasNextInt())
{
   int x = console.nextInt();
} 
โปรแกรมอ่านตัวเลขจากแป้นพิมพ์ตราบเท่าที่ป้อนตัวเลข
รหัส คำอธิบาย
while (true)
   System.out.println("C");
โปรแกรมจะพิมพ์ตัวอักษรบนหน้าจอไม่รู้จบC
รหัส คำอธิบาย
Scanner console = new Scanner(System.in);
boolean isExit = false;
while (!isExit)
{
   String s = console.nextLine();
   isExit = s.equals("exit");
}
โปรแกรมจะอ่านบรรทัดจากแป้นพิมพ์

จนกว่าexitจะเข้า

ในตัวอย่างก่อนหน้านี้equals()เมธอดนี้ใช้เพื่อเปรียบเทียบสตริง ถ้าสตริงเท่ากัน ฟังก์ชันจะคืนtrueค่า หากสตริงไม่เท่ากันก็จะคืนfalseค่า



4. วนซ้ำภายในลูป

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

คุณสามารถทำสิ่งเดียวกันกับลูป ในการเขียนลูปภายในลูป คุณต้องเขียนลูปที่สองภายในเนื้อหาของลูปแรก มันจะมีลักษณะดังนี้:

while (condition for outer loop)
{
   while (condition for inner loop)
   {
     block of statements
   }
}
whileวนซ้ำ (พร้อมกลุ่มคำสั่ง ) ภายในwhileวง อื่น

ลองดูสามงาน

ภารกิจที่ 1 . สมมติว่าเราต้องการเขียนโปรแกรมแสดงคำMomบนหน้าจอ 4 ครั้ง ลูปคือสิ่งที่เราต้องการ และรหัสของเราจะมีลักษณะดังนี้:

รหัส คำอธิบาย
int  n = 0;
while (n < 4)
{
   System.out.println("Mom");
   n++;
}
4 บรรทัดจะแสดงบนหน้าจอ:
Mom
Mom
Mom
Mom

ภารกิจที่ 2 . เราต้องการเขียนโปรแกรมที่แสดงตัวอักษรAs 5 ตัวในบรรทัดเดียว ในการทำเช่นนี้เราต้องวนซ้ำอีกครั้ง นี่คือลักษณะของรหัส:

รหัส คำอธิบาย
int n = 0;
while (n < 5)
{
   System.out.print("A");
   n++;
}
แทนprintln()เราจะใช้print(). มิฉะนั้น ตัวอักษรแต่ละตัวA จะลงท้ายด้วยบรรทัดที่แยกจากกัน

เอาต์พุตหน้าจอจะเป็น:
AAAAA

ภารกิจที่ 3 . เราต้องการแสดงรูปสี่เหลี่ยมผืนผ้าที่ประกอบด้วยตัวอักษรAs สี่เหลี่ยมผืนผ้าควรประกอบด้วย 4 แถว 5 คอลัมน์ เพื่อให้บรรลุผล ตอนนี้เราต้องการการวนซ้ำที่ซ้อนกัน เราจะใช้ตัวอย่างแรกของเรา (ตัวอย่างที่เราส่งออก 4 บรรทัด) และแทนที่รหัสสำหรับการส่งออกหนึ่งบรรทัดด้วยรหัสจากตัวอย่างที่สอง

รหัส คำอธิบาย
int n = 0;

while (n < 4) { int m = 0;
while (m < 5) { System.out.print("A"); m++; }
System.out.println(); n++; }
 
วงนอกเป็นสีม่วง ใช้nตัวแปรเพื่อนับจำนวนการวนซ้ำของลูป

วงในเป็นสีเขียว ใช้mตัวแปรเพื่อนับจำนวนการวนซ้ำ

เราต้องย้ายเคอร์เซอร์ไปที่บรรทัดถัดไปอย่างชัดเจนหลังจากวงในเสร็จสิ้น มิฉะนั้นตัวอักษรทั้งหมดที่โปรแกรมพิมพ์จะจบลงในบรรทัดเดียว

เอาต์พุตหน้าจอจะเป็น:
AAAAA
AAAAA
AAAAA
AAAAA

ลูปชั้นนอกและลูปในต้องใช้ตัวแปรที่แตกต่างกันในการนับจำนวนการวนซ้ำ เราต้องเพิ่มSystem.out.println()คำสั่งหลังจากวงใน เนื่องจากวงนั้นแสดงตัวอักษรAs ในบรรทัดเดียวกัน เมื่อตัวอักษรบนบรรทัดปรากฏขึ้น บางคนต้องเลื่อนเคอร์เซอร์ไปที่บรรทัดใหม่



5. การเปรียบเทียบลูป Java กับ Pascal

พวกคุณหลายคนเรียนภาษาปาสคาลในโรงเรียนมัธยม เพื่อให้คุณเข้าใจเนื้อหาที่นี่ได้ง่ายขึ้น ลองดูการเปรียบเทียบwhileลูปที่เขียนด้วยภาษา Pascal และ Java หากคุณไม่รู้จักภาษาปาสคาล ให้ข้ามส่วนนี้ไป

ปาสคาล ชวา
i := 3;
While i >= 0 Do
   Begin
      WriteLn(i);
      i := i - 1;
   End;
int i = 3;
while (i >= 0)
{
   System.out.println(i);
   i--;
}
i := 0;
While i < 3 Do
   Begin
      WriteLn(i);
      i := i + 1;
   End;
int i = 0;
while (i < 3)
{
   System.out.println(i);
   i++;
}
IsExit := False;
While Not isExit Do
   Begin
      ReadLn(s);
      isExit :=  (s = 'exit');
   End;
boolean isExit = false;
while (!isExit)
{
   String s = console.nextLine();
   isExit = s.equals("exit");
}
While True Do
   WriteLn('C');
while (true)
   System.out.println("C");
While True Do
   Begin
     ReadLn(s);
     If s = 'exit' Then
       Break;
   End;
while (true)
{
   String s = console.nextLine();
   if (s.equals("exit"))
     break;
}