เราจะมาดูกันว่าอะไรคือความแตกต่างพื้นฐานของ 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); |