1. ใบความรูที่ 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;
}
78 สถาบันสงเสริมการสอนวิทยาศาสตรและเทคโนโลยี
2. ผังงานดานลางแสดงขั้นตอนการทํางานของ 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);
}
}
สถาบันสงเสริมการสอนวิทยาศาสตรและเทคโนโลยี 79
3. ตัวอยางที่ 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
80 สถาบันสงเสริมการสอนวิทยาศาสตรและเทคโนโลยี