วันพุธที่ 21 สิงหาคม พ.ศ. 2556

ใบความรู้ที่ 4.3 โครงสร้าง for ลูป

ใบความรู้ที่ 4.3
โครงสร้าง for ลูป

           ในใบความรู้ก่อนหน้านี้เราได้เห็นโครงสร้างของโปรแกรมแบบวนซ้ำที่ใช้คำสั่ง while และ
do..while เมื่อพิจารณาการใช้คำสั่งเหล่านี้ในการเขียนลูปแบบวนนับ (counting loop) เราจะพบว่า
โครงสร้างของลูปมักจะมีส่วนประกอบเหล่านี้เสมอ

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

   • ส่วนคำสั่งที่ถูกทำซ้ำ – ส่วนหลักของลูปที่ประกอบด้วยคำสั่งที่ถูกเรียกทำงานในแต่ละรอบการวน
     ซ้ำ

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

   • ส่วนปรับค่าตัวนับ – มักเป็นเพียงคำสั่งสั้น ๆ เพื่อเพิ่มหรือลดค่าตัวแปรที่นำมาใช้เป็นตัวนับ

         ตัวอย่างโปรแกรมต่อไปนี้แสดงให้เห็นส่วนประกอบต่าง ๆ ทั้งสี่ส่วน (แต่ละส่วนกำกับไว้ด้วยคอม
เมนต์ท้ายบรรทัด)

using System;
class CountDown {
  static void Main() {
    int i;
    i = 10;                  // (1) ส่วนกำหนดค่าเริ่มต้นให้ตัวนับ
    while (i >= 0) {         // (3) ส่วนเงื่อนไข
      Console.WriteLine(i);  // (2) ส่วนคำสั่งที่ถูกทำซ้ำ
      i--;                   // (4) ส่วนปรับค่าตัวนับ
    }
  }
}

            เนื่องจากลูปแบบวนนับมีการใช้งานบ่อยครั้งในโปรแกรมทั่ว ๆ ไป ภาษา C# (รวมถึงภาษา
โปรแกรมอื่น ๆ ด้วย) จึงได้เตรียมโครงสร้างพิเศษเพื่อใช้จัดการลูปประเภทนี้ได้โดยสะดวกยิ่งขึ้น
โครงสร้างนี้คือโครงสร้าง for ซึ่งมีรูปแบบการใช้งานดังนี้

for (init_stmt; condition; update_stmt) {
  statement1;
  statement2;
  :
  statementN;
}

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



ตัวอย่างที่ 4.5 โปรแกรมต่อไปนี้จะแสดงตัวเลข 1,2,3,...,20 บนหน้าจอ

using System;
class Counting {
  static void Main() {
    int i;
    for (i = 1; i <= 20; i++)
      Console.WriteLine(i);
  }
}

ตัวอย่างที่ 4.6 โปรแกรมต่อไปนี้รับตัวเลขอินพุท N จากผู้ใช้และแสดงตัวเลขทั้งหมดที่เป็นตัวประกอบของ N (นำไปหาร N แล้วลงตัว)

using System;
class Divisors {
  static void Main() {
    int i, N;
    Console.Write("Enter N: ");
    N = int.Parse(Console.ReadLine());
    for (i = 1; i <= N; i++) {
      if (N%i == 0) Console.WriteLine(i);
    }
  }
}

ตัวอย่างผลการทำงาน

Enter N: 100
1
2
4
5
10
20
25
50
100



ไม่มีความคิดเห็น:

แสดงความคิดเห็น