หน้าแรก
คำชี้แจงก่อนเรียน
รายละเอียดรายวิชา

 แบบทดสอบก่อนเรียน
 หน่วยที่ 1 ภาษาคอมพิวเตอร์เบื้องต้น
 หน่วยที่ 2 เริ่มต้นกับภาษาซี
 หน่วยที่ 3 ข้อมูลพื้นฐานและตัวดำเนินการ
 หน่วยที่ 4 คำสั่งพื้นฐานในภาษาซี
 หน่วยที่ 5 คำสั่งควบคุมแบบทางเลือก
 หน่วยที่ 6 คำสั่งควบคุมแบบวนซ้ำ
แบบทดสอบก่อนเรียนประจำหน่วย
6.1 คำสั่ง while
6.2 คำสั่ง do - while
แบบฝึกหัดที่ 6.1
6.3 คำสั่ง for
6.4 คำสั่ง continue และคำสั่ง break
6.5 คำสั่งวนซ้ำเชิงซ้อน
แบบฝึกหัดที่ 6.2
แบบทดสอบหลังเรียนประจำหน่วย
 แบบทดสอบหลังเรียน
 บรรณานุกรม

แจ้งข่าว
 แหล่งเรียนรู้เพิ่มเติม
 ติดต่อครูผู้สอน
 ผู้พัฒนาบทเรียน
 

 
 
มีความรู้ความเข้าใจในการใช้คำสั่งควบคุมแบบวนซ้ำ
 
 
1. บอกวิธีการใช้คำสั่ง while และนำไปเขียนโปรแกรมได้
2. บอกวิธีการใช้คำสั่ง do - while และนำไปเขียนโปรแกรมได้
3. บอกวิธีการใช้คำสั่ง for และนำไปเขียนโปรแกรมได้
4. บอกวิธีการใช้ คำสั่ง continue คำสั่ง break และนำไปเขียนโปรแกรมได้
5. อธิบายการใช้คำสั่งวนซ้ำเชิงซ้อน และนำไปเขียนโปรแกรมได้
 
6.1 คำสั่ง while
6.2 คำสั่ง do - while
6.3 คำสั่ง for
6.4 คำสั่ง continue และ คำสั่ง break
6.5 คำสั่งวนซ้ำเชิงซ้อน
 
 
 
คำสั่งควบคุมแบบวนซ้ำ ใช้สำหรับกำหนดให้มีการประมวลผลคำสั่งซ้ำ ๆ กัน ตั้งแต่ 1 ครั้งขึ้นไป
ขึ้นอยู่กับเงื่อนไขการวนซ้ำ
 
คำสั่งควบคุมแบบวนซ้ำในภาษาซี มี 3 คำสั่ง คือ คำสั่ง while คำสั่ง do - while และคำสั่ง for
 
พื้นฐานความรู้ในการศึกษาเรื่องคำสั่งควบคุมแบบวนซ้ำ จำเป็นต้องใช้คำสั่งคำนวณ เพิ่มค่า
ลดค่า สะสมค่า ในหน่วยที่ 4 มากำหนดให้คำสั่งควบคุมแบบวนซ้ำสามารถทำงานได้ อย่างไรก็ตามในเนื้อหาหน่วยที่ 6 นี้ ได้นำคำสั่งในหน่วยที่ผ่านมา ประกอบในการเขียนโปรแกรมด้วย หากนักเรียนต้องการศึกษาเนื้อหาในหน่วยที่ 6 นี้ ให้เข้าใจง่ายยิ่งขึ้น ควรทบทวนเนื้อหาหน่วยที่ 1 - 5 มาก่อน
 
6.1 คำสั่ง while เป็นคำสั่งควบคุมแบบวนซ้ำรูปแบบหนึ่ง ซึ่งมีขั้นตอนการทำงานดังนี้
 
แผนผังคำสั่งควบคุมแบบวนซ้ำ - คำสั่ง while
 
 
มีรูปแบบการใช้คำสั่ง ดังนี้
 
 
รูปแบบคำสั่ง while


while (เงื่อนไขการวนซ้ำ)

คำสั่งที่ต้องการทำซ้ำ;


while (เงื่อนไขการวนซ้ำ) {

คำสั่งที่ต้องการทำซ้ำ 1;
คำสั่งที่ต้องการทำซ้ำ 2;
คำสั่งที่ต้องการทำซ้ำ 3;
.
.
.

คำสั่งที่ต้องการทำซ้ำ n;
}

 

อธิบาย
 
เงื่อนไขการวนซ้ำ หมายถึง นิพจน์ที่สามารถประเมินค่าได้ เขียนอยู่ในเครื่องหมาย () ให้ค่าเป็นจริงหรือเท็จ
 
เมื่อเริ่มต้นประมวลผล คำสั่ง while เงื่อนไขการวนซ้ำ จะถูกตรวจสอบค่า หากมีค่าเป็นจริง คำสั่งภายใต้คำสั่ง while จะถูกประมวลผล 1 รอบ แล้ววนกลับไปตรวจสอบ เงื่อนไขการวนซ้ำอีก จนกระทั่งเงื่อนไขการวนซ้ำ มีค่าเป็นเท็จ คำสั่ง while จึงสิ้นสุดลง และไปทำคำสั่งถัดไป
 
หากการตรวจสอบเงื่อนไขการวนซ้ำในครั้งแรก และมีค่าเป็นเท็จ คำสั่งภายใต้คำสั่ง while จะไม่ได้รับการประมวลผลเลย
 
คำสั่งภายใต้คำสั่ง while อาจเป็นคำสั่งง่าย ๆ หรือ คำสั่งเชิงประกอบ หากมีมากกว่า 1 คำสั่ง ต้องเขียนคำสั่งภายใต้เครื่องหมาย {}
 
 
   
ตัวอย่างที่ 1 จงเขียนโปรแกรมนับและแสดงเลข 1 ถึง 10 ทางจอภาพ ( ex6-01.c )
   
จากโจทย์ เขียนผังงาน แสดงการแก้ปัญหา ได้ดังนี้
   
   
จากผังงาน เขียนโปรแกรมได้ดังนี้
   
บรรทัด รหัสต้นฉบับ (Source Code) อธิบายคำสั่ง
/*1*/ #include <stdio.h> /* เป็นคำสั่งของตัวประมวลผลก่อนซี จะมีผลให้แฟ้ม stdio.h ซึ่งเป็นแฟ้มส่วนหัวที่ใช้เก็บรวบรวมคำสั่งเกี่ยวกับการรับและแสดงผลข้อมูล ถูกอ่านเข้ามาเพื่อประมวลผลร่วมกับโปรแกรมนี้ */
/*2*/ int main() { /* ประกาศ main เป็นฟังก์ชันหลัก ชนิดจำนวนเต็ม และเริ่มต้น block ของฟังก์ชัน main (เริ่มต้นโปรแกรม) */
/*3*/ int i = 1; /* ประกาศตัวแปร i เป็นชนิดจำนวนเต็ม พร้อมกำหนดค่าเริ่มต้นเป็น 1 */
/*4*/ while (i <= 10) { /* ตรวจสอบ ค่า i น้อยกว่าหรือเท่ากับ 10 จริงหรือไม่ ถ้าจริง ให้ทำเริ่มต้น block ของคำสั่ง while บรรทัดที่ 5 ถ้าเท็จ สิ้นสุดการทำซ้ำ ให้ไปทำคำสั่งบรรทัดที่ 8 */
/*5*/ printf("%d\n" , i); /* แสดงข้อความ "%d" โดยแสดงค่า i ใน %d เสร็จแล้วขึ้นบรรทัดใหม่ */
/*6*/ i++; /* เพิ่มค่าตัวนับ i ครั้งละ 1 (ความหมายเดียวกับคำสั่ง i = i + 1 หรือ i += 1) */
/*7*/ } /* สิ้นสุด block ของคำสั่ง while แล้ววนไปทำคำสั่งบรรทัดที่ 4 */
/*8*/ return 0; /* คืนค่า 0 ให้ฟังก์ชัน main โปรแกรมทำงานถูกต้องสมบูรณ์ */
/*9*/ } /* สิ้นสุด block ของฟังก์ชัน main (สิ้นสุดโปรแกรม) */
   
ผลการรันโปรแกรม
   
 
   
ตัวอย่างที่ 2 จงเขียนโปรแกรมแสดงผลรวมจากเลข 1 ถึง 10 ทางจอภาพ ( ex6-02.c )
   
จากโจทย์ เขียนผังงาน แสดงการแก้ปัญหา ได้ดังนี้
   
   
จากผังงาน เขียนโปรแกรมได้ดังนี้
   
บรรทัด รหัสต้นฉบับ (Source Code) อธิบายคำสั่ง
/*1*/ #include <stdio.h> /* เป็นคำสั่งของตัวประมวลผลก่อนซี จะมีผลให้แฟ้ม stdio.h ซึ่งเป็นแฟ้มส่วนหัวที่ใช้เก็บรวบรวมคำสั่งเกี่ยวกับการรับและแสดงผลข้อมูล ถูกอ่านเข้ามาเพื่อประมวลผลร่วมกับโปรแกรมนี้ */
/*2*/ int main() { /* ประกาศ main เป็นฟังก์ชันหลัก ชนิดจำนวนเต็ม และเริ่มต้น block ของฟังก์ชัน main (เริ่มต้นโปรแกรม) */
/*3*/ int i = 1 , sum = 0; /* ประกาศตัวแปร i และ sum เป็นชนิดจำนวนเต็ม พร้อมกำหนดค่าเริ่มต้นให้กับ i และ sum เป็น 1 และ 0 ตามลำดับ */
/*4*/ while (i <= 10) { /* ตรวจสอบ ค่า i น้อยกว่าหรือเท่ากับ 10 จริงหรือไม่ ถ้าจริง ให้ทำเริ่มต้น block ของคำสั่ง while บรรทัดที่ 5 ถ้าเท็จ สิ้นสุดการทำซ้ำ ให้ไปทำคำสั่งบรรทัดที่ 8 */
/*5*/ sum += i; /* คำสั่งคำนวณสะสมค่า เหมือนกับคำสั่ง sum = sum + i; โดย ประมวลผล sum + i ก่อน แล้วนำผลลัพธ์ที่ได้ ไปเก็บไว้ใน sum */
/*6*/ i++; /* เพิ่มค่าตัวนับ i ครั้งละ 1 (ความหมายเดียวกับคำสั่ง i = i + 1 หรือ i += 1) */
/*7*/ } /* สิ้นสุด block ของคำสั่ง while แล้ววนไปทำคำสั่งบรรทัดที่ 4 */
/*8*/ printf("Sum 1 - 10 : %d\n" ,sum); /* แสดงข้อความ "Sum 1 - 10 : %d" โดยแสดงค่า sum ใน %d เสร็จแล้วก็ขึ้นบรรทัดใหม่ */
/*9*/ return 0; /* คืนค่า 0 ให้ฟังก์ชัน main โปรแกรมทำงานถูกต้องสมบูรณ์ */
/*10*/ } /* สิ้นสุด block ของฟังก์ชัน main (สิ้นสุดโปรแกรม) */
   
ผลการรันโปรแกรม
   
 
   
ตัวอย่างที่ 3 จงเขียนโปรแกรมแสดงผลรวมของจำนวนจาก 1 ถึง N ทางจอภาพ
( ex6-03.c )
   
จากโจทย์ เขียนผังงาน แสดงการแก้ปัญหา ได้ดังนี้
   
   
จากผังงาน เขียนโปรแกรมได้ดังนี้
 
บรรทัด รหัสต้นฉบับ (Source Code) อธิบายคำสั่ง
/*1*/ #include <stdio.h> /* เป็นคำสั่งของตัวประมวลผลก่อนซี จะมีผลให้แฟ้ม stdio.h ซึ่งเป็นแฟ้มส่วนหัวที่ใช้เก็บรวบรวมคำสั่งเกี่ยวกับการรับและแสดงผลข้อมูล ถูกอ่านเข้ามาเพื่อประมวลผลร่วมกับโปรแกรมนี้ */
/*2*/ int main() { /* ประกาศ main เป็นฟังก์ชันหลัก ชนิดจำนวนเต็ม และเริ่มต้น block ของฟังก์ชัน main (เริ่มต้นโปรแกรม) */
/*3*/ int i = 1 , N , sum = 0; /* ประกาศตัวแปร i N และ sum เป็นชนิดจำนวนเต็ม พร้อมกำหนดค่าเริ่มต้นให้กับ i และ sum เป็น 1 และ 0 ตามลำดับ */
/*4*/ printf("Input Last Number : "); /* แสดงข้อความ "Input Last Number :" ทางจอภาพ เพื่อแจ้งให้ผู้ใช้โปรแกรมทราบว่า ต้องป้อนข้อมูลอะไร */
/*5*/ scanf("%d" , &N); /* รับค่าเลขจำนวนเต็ม จากแป้นพิมพ์ นำไปเก็บไว้ในตัวแปร N เมื่อป้อนข้อมูลเสร็จแล้ว ต้องกดแป้น Enter เพื่อยืนยันข้อมูลและทำคำสั่งถัดไป */
/*6*/ while (i <= N) { /* ตรวจสอบ ค่า i น้อยกว่าหรือเท่ากับ ค่า N จริงหรือไม่ ถ้าจริง ให้ทำเริ่มต้น block ของคำสั่ง while บรรทัดที่ 7 ถ้าเท็จ สิ้นสุดการทำซ้ำ ให้ไปทำคำสั่งบรรทัดที่ 10 */
/*7*/ sum += i; /* คำสั่งคำนวณสะสมค่า เหมือนกับคำสั่ง sum = sum + i; โดย ประมวลผล sum + i ก่อน แล้วนำผลลัพธ์ที่ได้ ไปเก็บไว้ใน sum */
/*8*/ i++; /* เพิ่มค่าตัวนับ i ครั้งละ 1 (ความหมายเดียวกับคำสั่ง i = i + 1 หรือ i += 1) */
/*9*/ } /* สิ้นสุด block ของคำสั่ง while แล้ววนไปทำคำสั่งบรรทัดที่ 6 */
/*10*/ printf("Sum 1 - %d : %d\n" , N , sum); /* แสดงข้อความ "Sum 1 - %d : %d" โดยแสดงค่า N ใน %d ตัวแรก และ แสดงค่า sum ใน %d ตัวที่ 2 เสร็จแล้วก็ขึ้นบรรทัดใหม่ */
/*11*/ return 0; /* คืนค่า 0 ให้ฟังก์ชัน main โปรแกรมทำงานถูกต้องสมบูรณ์ */
/*12*/ } /* สิ้นสุด block ของฟังก์ชัน main (สิ้นสุดโปรแกรม) */
   
ตัวอย่างผลการรันโปรแกรม
   
 
   
ตัวอย่างที่ 4 จงเขียนโปรแกรมรับค่าข้อมูลตัวเลข จำนวน N ค่า แล้วแสดงผลรวมตัวเลขชุดนั้น ทางจอภาพ ( ex6-04.c )
   
จากโจทย์ เขียนผังงาน แสดงการแก้ปัญหา ได้ดังนี้
   
   
จากผังงาน เขียนโปรแกรมได้ดังนี้
   
บรรทัด รหัสต้นฉบับ (Source Code) อธิบายคำสั่ง
/*1*/ #include <stdio.h> /* เป็นคำสั่งของตัวประมวลผลก่อนซี จะมีผลให้แฟ้ม stdio.h ซึ่งเป็นแฟ้มส่วนหัวที่ใช้เก็บรวบรวมคำสั่งเกี่ยวกับการรับและแสดงผลข้อมูล ถูกอ่านเข้ามาเพื่อประมวลผลร่วมกับโปรแกรมนี้ */
/*2*/ int main() { /* ประกาศ main เป็นฟังก์ชันหลัก ชนิดจำนวนเต็ม และเริ่มต้น block ของฟังก์ชัน main (เริ่มต้นโปรแกรม) */
/*3*/ int i = 1 , N , sum = 0 , num; /* ประกาศตัวแปร i N sum และ num เป็นชนิดจำนวนเต็ม พร้อมกำหนดค่าเริ่มต้นให้กับ i และ sum เป็น 1 และ 0 ตามลำดับ */
/*4*/ printf("Input N : "); /* แสดงข้อความ "Input N : " ทางจอภาพ เพื่อแจ้งให้ผู้ใช้โปรแกรมทราบว่า ต้องป้อนข้อมูลอะไร */
/*5*/ scanf("%d" , &N); /* รับค่าเลขจำนวนเต็ม จากแป้นพิมพ์ นำไปเก็บไว้ในตัวแปร N เมื่อป้อนข้อมูลเสร็จแล้ว ต้องกดแป้น Enter เพื่อยืนยันข้อมูลและทำคำสั่งถัดไป */
/*6*/ while (i <= N) { /* ตรวจสอบ ค่า i น้อยกว่าหรือเท่ากับ ค่า N จริงหรือไม่ ถ้าจริง ให้ทำเริ่มต้น block ของคำสั่ง while บรรทัดที่ 7 ถ้าเท็จ สิ้นสุดการทำซ้ำ ให้ไปทำคำสั่งบรรทัดที่ 12 */
/*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*/ i++; /* เพิ่มค่าตัวนับ i ครั้งละ 1 (ความหมายเดียวกับคำสั่ง i = i + 1 หรือ i += 1) */
/*11*/ } /* สิ้นสุด block ของคำสั่ง while แล้ววนไปทำคำสั่งบรรทัดที่ 6 */
/*12*/ printf("Summary %d Number = %d" , N , sum); /* แสดงข้อความ "Summary %d Number = %d" โดยแสดงค่า N ใน %d ตัวแรก และ แสดงค่า sum ใน %d ตัวที่ 2 */
/*13*/ return 0; /* คืนค่า 0 ให้ฟังก์ชัน main โปรแกรมทำงานถูกต้องสมบูรณ์ */
/*14*/ } /* สิ้นสุด block ของฟังก์ชัน main (สิ้นสุดโปรแกรม) */
   
ตัวอย่างผลการรันโปรแกรม
   
 
   
ตัวอย่างที่ 5 จงเขียนโปรแกรมรับค่าข้อมูลตัวเลข จำนวน N ค่า แล้วแสดงค่าสูงสุดจากตัวเลขชุดนั้น ทางจอภาพ ( ex6-05.c )
   
จากโจทย์ เขียนผังงาน แสดงการแก้ปัญหา ได้ดังนี้
   
   
จากผังงาน เขียนโปรแกรมได้ดังนี้
   
บรรทัด รหัสต้นฉบับ (Source Code) อธิบายคำสั่ง
/*1*/ #include <stdio.h> /* เป็นคำสั่งของตัวประมวลผลก่อนซี จะมีผลให้แฟ้ม stdio.h ซึ่งเป็นแฟ้มส่วนหัวที่ใช้เก็บรวบรวมคำสั่งเกี่ยวกับการรับและแสดงผลข้อมูล ถูกอ่านเข้ามาเพื่อประมวลผลร่วมกับโปรแกรมนี้ */
/*2*/ int main() { /* ประกาศ main เป็นฟังก์ชันหลัก ชนิดจำนวนเต็ม และเริ่มต้น block ของฟังก์ชัน main (เริ่มต้นโปรแกรม) */
/*3*/ int i = 1 , N , max = -9999 , num; /* ประกาศตัวแปร i N max และ num เป็นชนิดจำนวนเต็ม พร้อมกำหนดค่าเริ่มต้นให้กับ i และ max เป็น 1 และ -9999 ตามลำดับ */
/*4*/ printf("Input N : "); /* แสดงข้อความ "Input N : " ทางจอภาพ เพื่อแจ้งให้ผู้ใช้โปรแกรมทราบว่า ต้องป้อนข้อมูลอะไร */
/*5*/ scanf("%d" , &N); /* รับค่าเลขจำนวนเต็ม จากแป้นพิมพ์ นำไปเก็บไว้ในตัวแปร N เมื่อป้อนข้อมูลเสร็จแล้ว ต้องกดแป้น Enter เพื่อยืนยันข้อมูลและทำคำสั่งถัดไป */
/*6*/ while (i <= N) { /* ตรวจสอบ ค่า i น้อยกว่าหรือเท่ากับ ค่า N จริงหรือไม่ ถ้าจริง ให้ทำเริ่มต้น block ของคำสั่ง while บรรทัดที่ 7 ถ้าเท็จ สิ้นสุดการทำซ้ำ ให้ไปทำคำสั่งบรรทัดที่ 13 */
/*7*/ printf("Input Number %d : " , i); /* แสดงข้อความ "Input Number %d : " โดยแสดงค่า i ใน %d  เพื่อแจ้งให้ผู้ใช้โปรแกรมทราบว่า ต้องป้อนข้อมูลอะไร */
/*8*/ scanf("%d" , &num); /* รับค่าเลขจำนวนเต็ม จากแป้นพิมพ์ นำไปเก็บไว้ในตัวแปร num เมื่อป้อนข้อมูลเสร็จแล้ว ต้องกดแป้น Enter เพื่อยืนยันข้อมูลและทำคำสั่งถัดไป */
/*9*/ if (num > max) /* คำสั่งควบคุมแบบทางเลือก ตรวจสอบเงื่อนไขทางเลือกว่า ค่า num มากกว่า ค่า max จริงหรือไม่ ถ้าจริง ให้เริ่มทำคำสั่งบรรทัดที่ 10 ถ้าเท็จ ให้ไปเริ่มทำคำสั่งบรรทัดที่ 11 (มีคำสั่งย่อยในคำสั่ง แบบทางเลือก เพียงคำสั่งเดียว จึงไม่ต้องใส่เครื่องหมาย { } ก็ได้) */
/*10*/ max = num; /* กำหนดค่า num ให้กับตัวแปร max แสดงว่า ข้อมูลที่รับเข้ามาใหม่ มีค่าสูงกว่า ค่า max เดิม */
/*11*/ i++; /* เพิ่มค่าตัวนับ i ครั้งละ 1 (ความหมายเดียวกับคำสั่ง i = i + 1 หรือ i += 1) */
/*12*/ } /* สิ้นสุด block ของคำสั่ง while แล้ววนไปทำคำสั่งบรรทัดที่ 6 */
/*13*/ printf("Max : %d" , max); /* แสดงข้อความ "Max : %d" โดยแสดงค่า max ใน %d */
/*14*/ return 0; /* คืนค่า 0 ให้ฟังก์ชัน main โปรแกรมทำงานถูกต้องสมบูรณ์ */
/*15*/ } /* สิ้นสุด block ของฟังก์ชัน main (สิ้นสุดโปรแกรม) */
   
ตัวอย่างผลการรันโปรแกรม
   
 
 
 
คำสั่ง do - while เป็นคำสั่งควบคุมแบบวนซ้ำรูปแบบหนึ่ง
 
แผนผังคำสั่งควบคุมแบบวนซ้ำ - คำสั่ง do - while
 
 
มีรูปแบบการใช้คำสั่ง ดังนี้
 
 
รูปแบบคำสั่ง do - while


do

คำสั่งที่ต้องการทำซ้ำ;

while (เงื่อนไขการวนซ้ำ);


do {

คำสั่งที่ต้องการทำซ้ำ 1;
คำสั่งที่ต้องการทำซ้ำ 2;
คำสั่งที่ต้องการทำซ้ำ 3;
.
.
.

คำสั่งที่ต้องการทำซ้ำ n;
} while (เงื่อนไขการวนซ้ำ);

 

อธิบาย
 
เงื่อนไขการวนซ้ำ หมายถึง นิพจน์ที่สามารถประเมินค่าได้ เขียนอยู่ในเครื่องหมาย ()
ให้ค่าเป็นจริงหรือเท็จ
 
คำสั่่ง do - while จะเริ่มต้นประมวลผลคำสั่งที่ต้องการทำซ้ำก่อน แล้วจึง ตรวจสอบ เงื่อนไขการวนซ้ำ ขณะที่เงื่อนไขการวนซ้ำมีค่าเป็นจริง จะวนกลับไปทำคำสั่งที่ต้องการทำซ้ำอีก จนกระทั่ง
การตรวจสอบค่า เงื่อนไขการวนซ้ำ มีค่าเป็นเท็จ ก็จะออกจากการวนซ้ำ (ออกจากคำสั่ง do - while) และไปทำคำสั่งถัดไป
 
คำสั่งที่ต้องการทำซ้ำ ในคำสั่ง do - while จะถูกทำอย่างน้อย 1 รอบเสมอ แม้เงื่อนไขการวนซ้ำจะเป็นเท็จก็ตาม
 
คำสั่งภายใต้คำสั่ง do - while อาจเป็นคำสั่งง่าย ๆ หรือ คำสั่งเชิงประกอบ
หากมีมากกว่า 1 คำสั่ง ต้องเขียนคำสั่งภายใต้เครื่องหมาย {}
 
 
   
ตัวอย่างที่ 6 จงเขียนโปรแกรมแสดงตัวเลขจาด 10 ถึง 1 ทางจอภาพ ( ex6-06.c )
   
จากโจทย์ เขียนผังงาน แสดงการแก้ปัญหา ได้ดังนี้
   
   
จากผังงาน เขียนโปรแกรมได้ดังนี้
   
บรรทัด รหัสต้นฉบับ (Source Code) อธิบายคำสั่ง
/*1*/ #include <stdio.h> /* เป็นคำสั่งของตัวประมวลผลก่อนซี จะมีผลให้แฟ้ม stdio.h ซึ่งเป็นแฟ้มส่วนหัวที่ใช้เก็บรวบรวมคำสั่งเกี่ยวกับการรับและแสดงผลข้อมูล ถูกอ่านเข้ามาเพื่อประมวลผลร่วมกับโปรแกรมนี้ */
/*2*/ int main() { /* ประกาศ main เป็นฟังก์ชันหลัก ชนิดจำนวนเต็ม และเริ่มต้น block ของฟังก์ชัน main (เริ่มต้นโปรแกรม) */
/*3*/ int i = 10; /* ประกาศตัวแปร i เป็นชนิดจำนวนเต็ม พร้อมกำหนดค่าเริ่มต้นเป็น 10 */
/*4*/ do { /* ขอบเขตให้เริ่มทำ คำสั่งที่ต้องการทำซ้ำ (มีคำสั่งย่อยมากกว่า 1 คำสั่ง ต้องเขียนคำสั่งภายใต้เครื่องหมาย { }) */
/*5*/ printf("%d\n" , i); /* แสดงข้อความ "%d" โดยแสดงค่า i ใน %d เสร็จแล้วขึ้นบรรทัดใหม่ */
/*6*/ i--; /* ลดค่าตัวนับ i ครั้งละ 1 (ความหมายเดียวกับคำสั่ง i = i - 1 หรือ i -= 1) */
/*7*/ } while (i >= 1); /* ตรวจสอบว่า ค่า i มากกว่าหรือเท่ากับ 1 จริงหรือไม่ ถ้าจริง วนกลับไปทำคำสั่งบรรทัดที่ 4 แล้วเริ่มทำ คำสั่งที่ต้องการทำซ้ำอีกครั้ง ถ้าเท็จ สิ้นสุดการวนซ้ำด้วยคำสั่ง do - while และไปทำคำสั่งบรรทัดที่ 8 */
/*8*/ return 0; /* คืนค่า 0 ให้ฟังก์ชัน main โปรแกรมทำงานถูกต้องสมบูรณ์ */
/*9*/ } /* สิ้นสุด block ของฟังก์ชัน main (สิ้นสุดโปรแกรม) */
   
ผลการรันโปรแกรม
   
 
   
ตัวอย่างที่ 7 จงเขียนโปรแกรมแสดงเฉพาะเลขคู่ จาก 1 ถึง 20 ทางจอภาพ ( ex6-07.c )
   
จากโจทย์ เขียนผังงาน แสดงการแก้ปัญหา ได้ดังนี้
   
   
จากผังงาน เขียนโปรแกรมได้ดังนี้
   
บรรทัด รหัสต้นฉบับ (Source Code) อธิบายคำสั่ง
/*1*/ #include <stdio.h> /* เป็นคำสั่งของตัวประมวลผลก่อนซี จะมีผลให้แฟ้ม stdio.h ซึ่งเป็นแฟ้มส่วนหัวที่ใช้เก็บรวบรวมคำสั่งเกี่ยวกับการรับและแสดงผลข้อมูล ถูกอ่านเข้ามาเพื่อประมวลผลร่วมกับโปรแกรมนี้ */
/*2*/ int main() { /* ประกาศ main เป็นฟังก์ชันหลัก ชนิดจำนวนเต็ม และเริ่มต้น block ของฟังก์ชัน main (เริ่มต้นโปรแกรม) */
/*3*/ int i = 1; /* ประกาศตัวแปร i เป็นชนิดจำนวนเต็ม พร้อมกำหนดค่าเริ่มต้นเป็น 1 */
/*4*/ do { /* ขอบเขตให้เริ่มทำ คำสั่งที่ต้องการทำซ้ำ (มีคำสั่งย่อยมากกว่า 1 คำสั่ง ต้องเขียนคำสั่งภายใต้เครื่องหมาย { }) */
/*5*/ if (i % 2 == 0) /* คำสั่งควบคุมแบบทางเลือก ตรวจสอบเงื่อนไขทางเลือกว่า ค่า i % 2 เท่ากับ 0 จริงหรือไม่ ถ้าจริง ให้เริ่มทำคำสั่งบรรทัดที่ 6 ถ้าเท็จ ให้เริ่มทำคำสั่งบรรทัดที่ 7 (มีคำสั่งย่อยในคำสั่ง แบบทางเลือก เพียงคำสั่งเดียว จึงไม่ต้องใส่เครื่องหมาย { } ก็ได้) */
/*6*/ printf("%d\n" , i); /* แสดงข้อความ "%d" โดยแสดงค่า i ใน %d เสร็จแล้วขึ้นบรรทัดใหม่ */
/*7*/ i++; /* เพิ่มค่าตัวนับ i ครั้งละ 1 (ความหมายเดียวกับคำสั่ง i = i + 1 หรือ i += 1) */
/*8*/ } while (i <= 20); /* ตรวจสอบว่า ค่า i น้อยกว่าหรือเท่ากับ 20 จริงหรือไม่ ถ้าจริง วนกลับไปทำคำสั่งบรรทัดที่ 4 แล้วเริ่มทำ คำสั่งที่ต้องการทำซ้ำอีกครั้ง ถ้าเท็จ สิ้นสุดการวนซ้ำด้วยคำสั่ง do - while และไปทำคำสั่งบรรทัดที่ 9 */
/*9*/ return 0; /* คืนค่า 0 ให้ฟังก์ชัน main โปรแกรมทำงานถูกต้องสมบูรณ์ */
/*10*/ } /* สิ้นสุด block ของฟังก์ชัน main (สิ้นสุดโปรแกรม) */
   
ผลการรันโปรแกรม
   
 
   
ตัวอย่างที่ 8 จงเขียนโปรแกรมแสดงตัวเลขตามช่วงที่กำหนด ทางจอภาพ ( ex6-08.c )
   
จากโจทย์ เขียนผังงาน แสดงการแก้ปัญหา ได้ดังนี้
   
   
จากผังงาน เขียนโปรแกรมได้ดังนี้
   
บรรทัด รหัสต้นฉบับ (Source Code) อธิบายคำสั่ง
/*1*/ #include <stdio.h> /* เป็นคำสั่งของตัวประมวลผลก่อนซี จะมีผลให้แฟ้ม stdio.h ซึ่งเป็นแฟ้มส่วนหัวที่ใช้เก็บรวบรวมคำสั่งเกี่ยวกับการรับและแสดงผลข้อมูล ถูกอ่านเข้ามาเพื่อประมวลผลร่วมกับโปรแกรมนี้ */
/*2*/ int main() { /* ประกาศ main เป็นฟังก์ชันหลัก ชนิดจำนวนเต็ม และเริ่มต้น block ของฟังก์ชัน main (เริ่มต้นโปรแกรม) */
/*3*/ int i , N; /* ประกาศตัวแปร i และ N เป็นชนิดจำนวนเต็ม */
/*4*/ printf("Input 2 Number (Start and Last Number) : "); /* แสดงข้อความ "Input 2 Number (Start and Last Number) :" ทางจอภาพ เพื่อแจ้งให้ผู้ใช้โปรแกรมทราบว่า ต้องป้อนข้อมูลอะไร */
/*5*/ scanf("%d %d", &i , &N); /* รับค่าเลขจำนวนเต็ม 2 จำนวน จากแป้นพิมพ์ นำไปเก็บไว้ในตัวแปร i และ N เมื่อป้อนข้อมูลเสร็จแล้ว ต้องกดแป้น Enter เพื่อยืนยันข้อมูลและทำคำสั่งถัดไป */
/*6*/ do { /* ขอบเขตให้เริ่มทำ คำสั่งที่ต้องการทำซ้ำ (มีคำสั่งย่อยมากกว่า 1 คำสั่ง ต้องเขียนคำสั่งภายใต้เครื่องหมาย { }) */
/*7*/ printf("%d\n" , i); /* แสดงข้อความ "%d" โดยแสดงค่า i ใน %d เสร็จแล้วขึ้นบรรทัดใหม่ */
/*8*/ i++; /* เพิ่มค่าตัวนับ i ครั้งละ 1 (ความหมายเดียวกับคำสั่ง i = i + 1 หรือ i += 1) */
/*9*/ } while (i <= N); /* ตรวจสอบว่า ค่า i น้อยกว่าหรือเท่ากับ ค่า N จริงหรือไม่ ถ้าจริง วนกลับไปทำคำสั่งบรรทัดที่ 6 แล้วเริ่มทำ คำสั่งที่ต้องการทำซ้ำอีกครั้ง ถ้าเท็จ สิ้นสุดการวนซ้ำด้วยคำสั่ง do - while และไปทำคำสั่งบรรทัดที่ 10 */
/*10*/ return 0; /* คืนค่า 0 ให้ฟังก์ชัน main โปรแกรมทำงานถูกต้องสมบูรณ์ */
/*11*/ } /* สิ้นสุด block ของฟังก์ชัน main (สิ้นสุดโปรแกรม) */
   
ตัวอย่างผลการรันโปรแกรม