เราจะมาดูกันว่าอะไรคือความแตกต่างพื้นฐานของ do-while loop และ while loop ใน C หรือ C++
ชั่วขณะ วนซ้ำในการเขียนโปรแกรม C รันคำสั่งเป้าหมายซ้ำ ๆ ตราบใดที่เงื่อนไขที่กำหนดเป็นจริง ไวยากรณ์เป็นเหมือนด้านล่าง
while(condition) {
statement(s);
} ในที่นี้ ข้อความสั่งอาจเป็นประโยคเดียวหรือกลุ่มข้อความก็ได้ เงื่อนไขอาจเป็นนิพจน์ใดก็ได้ และ true คือค่าที่ไม่ใช่ศูนย์ วนซ้ำในขณะที่เงื่อนไขเป็นจริง
เมื่อเงื่อนไขกลายเป็นเท็จ ตัวควบคุมโปรแกรมจะส่งผ่านไปยังบรรทัดต่อจากลูปทันที
ตัวอย่าง
#include <stdio.h>
int main () {
int a = 10; // Local variable declaration:
do { // do loop execution
printf("value of a: %d\n", a);
a = a + 1;
} while( a < 20 );
return 0;
} ผลลัพธ์
value of a: 10 value of a: 11 value of a: 12 value of a: 13 value of a: 14 value of a: 15 value of a: 16 value of a: 17 value of a: 18 value of a: 19
ทีนี้มาดูลูป do-while กัน
ไม่เหมือนกับ for และ while loops ซึ่งทดสอบเงื่อนไขลูปที่ด้านบนของลูป do...while ตรวจสอบเงื่อนไขที่ด้านล่างของลูป
do...while loop คล้ายกับ while loop ยกเว้น do...while loop รับประกันว่าจะดำเนินการอย่างน้อยหนึ่งครั้ง
do {
statement(s);
}
while( condition ); สังเกตว่านิพจน์เงื่อนไขปรากฏขึ้นที่ส่วนท้ายของลูป ดังนั้นคำสั่งในลูปจะดำเนินการหนึ่งครั้งก่อนที่จะทดสอบเงื่อนไข
ถ้าเงื่อนไขเป็นจริง โฟลว์ของการควบคุมจะกระโดดกลับไปทำ และคำสั่งในลูปจะดำเนินการอีกครั้ง กระบวนการนี้จะเกิดขึ้นซ้ำๆ จนกว่าเงื่อนไขที่กำหนดจะกลายเป็นเท็จ
ตัวอย่าง
#include <stdio.h>
int main () {
/* local variable definition */
int a = 10;
/* while loop execution */
while( a < 20 ) {
printf("value of a: %d\n", a);
a++;
}
return 0;
} ผลลัพธ์
value of a: 10 value of a: 11 value of a: 12 value of a: 13 value of a: 14 value of a: 15 value of a: 16 value of a: 17 value of a: 18 value of a: 19
ดังนั้นความแตกต่างจึงสรุปได้ในตารางต่อไปนี้ -
| ขณะวนซ้ำ | Do-While Loop |
|---|---|
| นี่คือรายการวนรอบควบคุม เช็คสภาพก่อนเข้าลูป | นี่คือ exit control loop ตรวจสอบสภาพเมื่อออกจากลูป |
| การวนซ้ำ while อาจรันศูนย์หรือมากกว่าครั้ง | Do-While อาจทำงานมากกว่าหนึ่งครั้งแต่อย่างน้อยหนึ่งครั้ง |
| ตัวแปรของเงื่อนไขการทดสอบจะต้องเริ่มต้นก่อนที่จะเข้าสู่ลูป | ตัวแปรสำหรับเงื่อนไขการวนซ้ำอาจเริ่มต้นในลูปได้เช่นกัน |
while(condition){
//statement
} | do{
//statement
}while(condition); |