หน้าหลัก
แนะนำรายวิชา
แบบทดสอบวัดผลสัมฤทธิ์ก่อนเรียน
บทที่ 1 ภาษาคอมพิวเตอร์
บทที่ 2 แนวคิดการโปรแกรม
บทที่ 3 ผังงาน
บทที่ 4 รหัสเทียม
บทที่ 5 โครงสร้างภาษาซี
บทที่ 6 ติดตั้งโปรแกรม Dev-c++
บทที่ 7 ตัวแปรภาษาซี
บทที่ 8 ตัวดำเนินการภาษาซี
บทที่ 9 การแสดงผล
บทที่10 การรับข้อมูล
บทที่ 11 การเลือกทำตามเงื่อนไข
บทที่ 12 คำสั่งวนซ้ำ
แบบทดสอบผลสัมฤทธิ์หลังเรียน
แหล่งศึกษาเพิ่มเติม

 

    

                การวนซ้ำ (Loop) ในภาษาคอมพิวเตอร์หมายถึงการทำคำสั่งหรือชุดคำสั่งนั้น ซ้ำ ๆ กันหลาย ๆ ครั้ง เช่น

การแสดงผลตัวเลข 1-10 ทางหน้าจอคอมพิวเตอร์ หรือแสดงผลตัวเลขคู่ ของตัวเลข 1-200 เป็นต้น

 

การวนซ้ำด้วยจำนวนรอบที่แน่นอนด้วยคำสั่ง for

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

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

ทำงานที่คำสั่งถัดไปทันที

รูปแบบคำสั่ง for สามารถเขียนเป็นผังงานได้ดังนี้

ตัวอย่าง  แสดงตัวเลขที่น้อยกว่า 10 บนหน้าจอ

** หลัง for จะไม่มีเครื่องหมาย เซมิโคลอน (;) ถ้ามีโปรแกรมจะแสดงค่าสุดท้ายค่าเดียว

1. เมื่อโปรแกรมเริ่มทำงาน i = 1

2. เช็คว่า i < 10 จริงไหม

- จริง จะเข้าไปทำใน loop คือ print i ออกมา คือ 1

3. จบ Loop แรก

4. เมื่อจบ Loop มันก็ไปทำงาน i++ ที่เรากำหนดไว้ว่าหลังจบ Loop ให้ i++

5. i มีค่าเท่ากับ 1

6. เช็คตรงเงื่อนไขก็เข้า Loop อีกครั้งว่า i < 10 จริงหรือไม่

- จริง print i คือ 2

** ค่าที่กำหนดค่าเริ่มต้นไม่ได้ใช้แล้ว การกำหนดค่าเริ่มต้น i = 1 ถูกใช้แค่เพียงครั้งเดียวจะทำซ้ำใน Loop ครั้งแรกเท่านั้น

7. i++ อีกครั้ง i ก็จะเป็น 2

- แล้วก็จะไปทำการเช็คเงื่อนไข เป็นอย่างนี้ไปเรื่อยๆ จน i = 9 จบ Loop

8. ลูปสุดท้าย การเพิ่มขึ้นของ i จากที่กำหนดให้ i++ ได้ i = 10 เช็คเงื่อนไข i < 10

- ไม่จริง ออกจาก Loop ซึ่งทำให้ผลการรันของโปรแกรมนี้คือ

ผลลัพธ์

ตัวดำเนินการเพิ่มค่าและลดค่า
ตัวดำเนินการเพิ่มค่า (Increment Operator) ใช้เครื่องหมาย ++
ตัวดำเนินการลดค่า (Decrement Operator) ใช้เครื่องหมาย –

ตัวดำเนินการ
นิพจน์
ตัวอย่าง

 

ความหมาย

 

++ (Prefix)
++ i
++1

 

เพิ่มค่าให้กับ i หนึ่งค่าก่อน จึงนำค่าใหม่ของ i ในนิพจน์นี้ไปใช้

(i=i+1)

++ (Postfix)
i++
1++

 

นำค่าปัจจุบันของ i ในนิพจน์นี้ไปใช้ก่อน จึงเพิ่มค่าให้กับ i หนึ่งค่า

(i=i+1)

- (Prefix)
--i
--1

 

ลดค่าให้กับ i หนึ่งค่าก่อน จึงนำค่าใหม่ของ i ในนิพจน์นี้ไปใช้

(i=i-1)

-- (Postfix)
i--
1--

 

นำค่าปัจจุบันของ i ในนิพจน์นี้ไปใช้ก่อน จึงลดค่าให้กับ i หนึ่งค่า

(i=i-1)


ตัวอย่าง โปรแกรมรับค่าตัวเลขจำนวนเต็ม จำนวน N ค่า แล้วหาค่าเฉลี่ย พร้อมแสดงผลทางจอภาพ 

บรรทัด รหัสต้นฉบับ (Source Code) อธิบายคำสั่ง
1 #include <stdio.h> แฟ้ม stdio.h ซึ่งเป็นแฟ้มส่วนหัวใช้เก็บรวบรวมคำสั่งเกี่ยวกับการรับและแสดงผลข้อมูล ถูกอ่านเข้ามาเพื่อประมวลผลร่วมกับโปรแกรมนี้
2 int main() { ประกาศ main เป็นฟังก์ชันหลัก ชนิดจำนวนเต็ม และเริ่มต้น block ของฟังก์ชัน main (เริ่มต้นโปรแกรม)
3 int i , N , num , sum = 0; ประกาศตัวแปร i N num และ เป็นชนิดจำนวนเต็ม กำหนดค่าเริ่มต้นให้กับ sum เป็น 0
4 printf("Please Input number : "); แสดงข้อความให้ผู้ใช้ป้อนข้อมูล  "Please Input number : " ทางจอภาพ 
5 scanf("%d" , &N); รับค่าเลขจำนวนเต็ม จากแป้นพิมพ์ นำไปเก็บไว้ในตัวแปร N
6 for(i=1 ; i <= N ; i++) { เป็นคำสั่งควบคุมแบบวนซ้ำ (มีคำสั่งย่อยมากกว่า 1 คำสั่ง ต้องเขียนคำสั่งภายใต้เครื่องหมาย { }) โดยมีขั้นตอนทำงานดังนี้
ขั้นตอนที่ 1) i =
 1 กำหนดค่าเริ่มต้นให้ตัวนับ i = 1 (ทำเฉพาะรอบแรกเท่านั้น)
ชั้นตอนที่ 2) i <= N ตรวจสอบว่า ค่า i น้อยกว่าหรือเท่ากับ ค่า N จริงหรือไม่ ถ้าจริง เริ่มทำคำสั่งที่ต้องการทำซ้ำ บรรทัดที่ 7 ถ้าเท็จ สิ้นสุดการวนซ้ำด้วยคำสั่ง for ไปทำคำสั่งบรรทัดที่ 11
7 printf("Input Number %d : " , i); แสดงข้อความ "Input Number %d : " โดยแสดงค่า i ใน %d เพื่อแจ้งให้ผู้ใช้ โปรแกรมทราบว่า ต้องป้อนข้อมูลอะไร
8 scanf("%d" , &num); รับค่าเลขจำนวนเต็ม จากแป้นพิมพ์ นำไปเก็บไว้ในตัวแปร num เมื่อป้อนข้อมูลเสร็จแล้ว ต้องกดแป้น Enter เพื่อยืนยันข้อมูลและทำคำสั่งถัดไป
9 sum += num; คำสั่งคำนวณสะสมค่า เหมือนกับคำสั่ง sum = sum + num; โดย ประมวลผล sum + num ก่อน แล้วนำผลลัพธ์ที่ได้ ไปเก็บไว้ใน sum
10 }  กลับไปทำบรรทัดที่ 6 คำสั่งย่อย i++ แล้วกลับไปเริ่มทำ ขั้นตอนที่ 2) 
11 printf("\nAvg : %.2f" , (float)sum/N); ขึ้นบรรทัดใหม่ แล้วแสดงข้อความ "Avg : %.2f" โดยแสดงค่าจำนวนจริงของ sum/N ใน %.2f เป็นเลขทศนิยม 2 ตำแหน่ง
12 return 0; คืนค่า 0 ให้ฟังก์ชัน main โปรแกรมทำงานถูกต้องสมบูรณ์
13 } สิ้นสุด block ของฟังก์ชัน main (สิ้นสุดโปรแกรม)