C++ ทำ...ในขณะที่วนซ้ำกับตัวอย่าง

⚡ สรุปอย่างชาญฉลาด

ลูป do-while ใน C++ ลูป do-while จะรันโค้ดส่วนหนึ่งเพียงครั้งเดียว แล้วทำซ้ำไปเรื่อยๆ ตราบใดที่เงื่อนไขยังเป็นจริง ในที่นี้คุณจะได้เรียนรู้วิธีการทำงานของลูป do-while ไวยากรณ์ การใช้งาน และตัวอย่างต่างๆ

  • 🔂 มันคืออะไร: ลูป do-while จะทำงานหนึ่งครั้ง จากนั้นจะทำซ้ำตราบใดที่เงื่อนไขยังเป็นจริง
  • วิ่งก่อน: โดยปกติแล้ว ร่างกายจะดำเนินการอย่างน้อยหนึ่งครั้งก่อนที่จะตรวจสอบเงื่อนไข
  • 🧾 ไวยากรณ์: do { statements } while(condition); จบด้วยเครื่องหมายเซมิโคลอน
  • 🎯 ควรใช้เมื่อใด: ใช้เมื่อโค้ดต้องทำงานอย่างน้อยหนึ่งครั้ง เช่น ในเมนู
  • 🤖 ความช่วยเหลือจาก AI: เครื่องมือ AI เช่น GitHub Copilot สำหรับการเขียนและแก้ไขข้อผิดพลาด C++ วนซ้ำทันที

C++ ทำในขณะที่วนซ้ำ

do- while loop คืออะไร?

do- While วนซ้ำส่วนของ C++ โปรแกรมหลายครั้ง ในลูป do- While นิพจน์การทดสอบจะถูกเพิ่มที่ด้านล่างของลูป เนื้อความของลูปมาก่อนนิพจน์ทดสอบ นั่นเป็นสาเหตุที่ร่างกายของลูปต้องดำเนินการเพียงครั้งเดียว แม้ว่านิพจน์การทดสอบจะประเมินว่าเป็นเท็จในการทดสอบครั้งแรกก็ตาม

เมื่อใดจึงควรใช้ do- While loop?

ควรใช้ลูป do- While เมื่อจำนวนการวนซ้ำไม่คงที่ และลูปจะต้องดำเนินการอย่างน้อยหนึ่งครั้ง ที่ C++ ผู้รวบรวม ดำเนินการกับเนื้อความของลูปก่อนที่จะประเมินเงื่อนไข นั่นหมายความว่าการวนซ้ำจะต้องส่งคืนผลลัพธ์ เป็นกรณีนี้แม้ว่าเงื่อนไขการทดสอบจะประเมินเป็นเท็จในการประเมินครั้งแรกก็ตาม เนื่องจากเนื้อความของลูปได้รับการดำเนินการแล้ว จึงจะต้องส่งคืนผลลัพธ์

วากยสัมพันธ์

ไวยากรณ์พื้นฐานของ C++ ทำ while วนซ้ำเป็นดังนี้:

do{    
//code 
}while(condition);  

เงื่อนไขคือนิพจน์ทดสอบ ต้องเป็นจริงจึงจะรันลูปได้ { และ } ทำเครื่องหมายเนื้อหาของ do while มันมาก่อนเงื่อนไข ดังนั้นจึงดำเนินการก่อนเงื่อนไข

do- While loop ทำงานอย่างไร?

ทำในขณะที่วนซ้ำ
C++ ทำในขณะที่แผนภูมิการไหล

คำอธิบายแผนภูมิการไหล:

  1. เริ่มต้นของ do while วนซ้ำ
  2. เนื้อความของ do while วนซ้ำ
  3. นิพจน์ทดสอบหรือเงื่อนไขที่จะประเมิน
  4. หากนิพจน์ทดสอบเป็นจริง แสดงว่า C++ คอมไพเลอร์ดำเนินการเนื้อหาของ do while loop
  5. ถ้านิพจน์การทดสอบเป็นเท็จ C++ คอมไพเลอร์ดำเนินการคำสั่งหลังเนื้อหาลูป
  6. ข้อความที่อยู่หลังเนื้อหาลูป

1 ตัวอย่าง

#include <iostream>
using namespace std;
int main() {
	// Local variable 
	int x = 1;
	do {
		cout << "X is: " << x << endl;
		x = x + 1;
	} while (x < 5);
	return 0;
}

Output:

ทำในขณะที่วนซ้ำ

นี่คือภาพหน้าจอของรหัส:

ทำในขณะที่วนซ้ำ

Code คำอธิบาย:

  1. รวมไฟล์ส่วนหัว iostream ไว้ในโค้ดของเรา มันจะช่วยให้เราอ่านและเขียนไปยังคอนโซลได้
  2. รวมเนมสเปซมาตรฐานเพื่อใช้คลาสและฟังก์ชันโดยไม่ต้องเรียกมัน
  3. การเรียกใช้ฟังก์ชัน main() ภายในที่ควรเพิ่มตรรกะของโปรแกรม { เป็นเครื่องหมายเริ่มต้นของเนื้อหาของฟังก์ชัน main()
  4. ความคิดเห็น ที่ C++ คอมไพเลอร์จะข้ามสิ่งนี้
  5. ประกาศตัวแปรจำนวนเต็ม x และกำหนดค่าเป็น 1
  6. การสร้างลูป do- While { ทำเครื่องหมายจุดเริ่มต้นของเนื้อหาวนซ้ำ
  7. เพื่อพิมพ์ค่าของตัวแปร x ควบคู่ไปกับข้อความอื่นบนคอนโซล จุดสิ้นสุดคือ a C++ คำสำคัญหมายถึงบรรทัดสิ้นสุด
  8. เพิ่มค่า x ขึ้น 1 หลังจากการวนซ้ำทุกครั้ง
  9. ส่วนท้ายของตัวห่วง เพิ่มนิพจน์การทดสอบที่ส่วนท้ายของเนื้อหาลูปแล้ว จะทดสอบว่าค่า x น้อยกว่า 5 หรือไม่
  10. ฟังก์ชัน main() ควรคืนค่าหากโปรแกรมทำงานได้ดี
  11. ส่วนท้ายของฟังก์ชัน main()

2 ตัวอย่าง

#include <iostream>
using namespace std;
int main()
{
	int num, sum = 0;
	do {

		cout << "Enter a number: ";

		cin >> num;

		sum += num;

	} while (num != 0);
	cout << "Sum is " << sum;

	return 0;
}

Output:

ทำในขณะที่วนซ้ำ

นี่คือภาพหน้าจอของรหัส:

ทำในขณะที่วนซ้ำ

Code คำอธิบาย:

  1. รวมไฟล์ส่วนหัว iostream ไว้ในโค้ดของเรา มันจะช่วยให้เราอ่านและเขียนไปยังคอนโซลได้
  2. รวมเนมสเปซมาตรฐานเพื่อใช้คลาสและฟังก์ชันโดยไม่ต้องเรียกมัน
  3. การเรียกใช้ฟังก์ชัน main() ภายในที่ควรเพิ่มตรรกะของโปรแกรม
  4. { เป็นเครื่องหมายเริ่มต้นของเนื้อหาของฟังก์ชัน main()
  5. การประกาศตัวแปรจำนวนเต็มสองตัว ได้แก่ num และ sum ผลรวมของตัวแปรถูกกำหนดค่าเริ่มต้นเป็น 0
  6. การสร้างลูป do- While { ทำเครื่องหมายจุดเริ่มต้นของเนื้อหาวนซ้ำ
  7. พิมพ์ข้อความ “ป้อนตัวเลข:” บนคอนโซล
  8. อ่านอินพุตของผู้ใช้จากคอนโซลและจัดเก็บค่าเป็นตัวแปร num cin (อินพุตคอนโซล) เป็นฟังก์ชันที่อ่านอินพุตของผู้ใช้
  9. การบวกค่า num เข้ากับค่าผลรวมและการจัดเก็บผลลัพธ์เป็นผลรวมตัวแปร
  10. } ทำเครื่องหมายจุดสิ้นสุดของตัววนซ้ำ นิพจน์ทดสอบได้ถูกเพิ่มไปที่จุดสิ้นสุดของตัววนซ้ำ นิพจน์ทดสอบจะทดสอบว่าค่าที่ผู้ใช้ป้อนเข้าไปนั้นไม่ใช่ 0 หรือไม่ != คือค่าไม่เท่ากับตัวดำเนินการ หากผู้ใช้ป้อน 0 ลูปจะสิ้นสุดลง
  11. การพิมพ์ค่าผลรวมของตัวแปรบนคอนโซลควบคู่ไปกับข้อความอื่นๆ
  12. ฟังก์ชัน main() ควรคืนค่าหากโปรแกรมทำงานได้ดี
  13. ส่วนท้ายของฟังก์ชัน main()

ซ้อน Do While Loop

In C++เป็นไปได้สำหรับเราที่จะสร้างหนึ่ง do- While loop ภายใน do-whole อีกวงหนึ่ง ซึ่งส่งผลให้เกิดการวนซ้ำ do- while แบบซ้อนกัน

วากยสัมพันธ์

do{
statement(s)
do{
statement(s)
}while(condition);
statement(s)
}while(condition);

คำสั่ง do แรกแสดงถึงส่วน do ของลูป do- while ภายนอก

คำสั่ง do ที่สองหมายถึงส่วน do ของลูป do- while ภายใน

คำสั่ง while แรกแสดงถึงเงื่อนไขการทดสอบสำหรับวงใน

คำสั่ง while ที่สองแสดงถึงเงื่อนไขการทดสอบสำหรับลูปภายนอก

Nested Do While Loop ทำงานอย่างไร

Nested do while loop ทำงานดังนี้:

ขั้นตอนที่ 1: การเริ่มต้นจะดำเนินการในครั้งแรกและครั้งเดียว

ขั้นตอนที่ 2: คำสั่ง (do) จะถูกดำเนินการเพียงครั้งเดียว

ขั้นตอนที่ 3: นิพจน์การทดสอบคือการประเมินโดยการควบคุมการไหล

ขั้นตอนที่ 4: ถ้าเป็นจริง วงในจะถูกดำเนินการ

ขั้นตอนที่ 5: การอัปเดตคำสั่งได้รับการอัปเดตแล้ว

ขั้นตอนที่ 6: กระบวนการทำงานซ้ำๆ จนกระทั่งนิพจน์ทดสอบกลายเป็นเท็จ

ขั้นตอนที่ 7: เมื่อนิพจน์การทดสอบกลายเป็นเท็จ วงในจะถูกออกจากและการควบคุมจะข้ามไปยังวงรอบนอก

ขั้นตอนที่ 8: สภาวะการทดสอบได้รับการประเมินอีกครั้ง

ขั้นตอนที่ 9: หากเป็นจริง คำสั่งจะถูกดำเนินการเพื่อคืนค่าเท็จ

ขั้นตอนที่ 10: การดำเนินการหยุดลูปและควบคุมการข้ามไปยังคำสั่งหลังลูป

ตัวอย่าง

#include <iostream>  
using namespace std;
int main() {
	int a = 1;
	do {
		int b = 1;
		do {
			cout << a << "\n";
			b++;
		} while (b <= 3);
		a++;
	} while (a <= 3);
}

Output:

ซ้อน Do While Loop

นี่คือภาพหน้าจอของรหัส:

ซ้อน Do While Loop

Code คำอธิบาย:

  1. รวมไฟล์ส่วนหัว iostream ไว้ในโค้ดของเรา มันจะช่วยให้เราอ่านและเขียนไปยังคอนโซลได้
  2. รวมเนมสเปซมาตรฐานเพื่อใช้คลาสและฟังก์ชันโดยไม่ต้องเรียกมัน
  3. การเรียกใช้ฟังก์ชัน main() ภายในที่ควรเพิ่มตรรกะของโปรแกรม { เป็นเครื่องหมายเริ่มต้นของเนื้อหาของฟังก์ชัน main()
  4. การประกาศตัวแปรจำนวนเต็ม a และกำหนดค่าเป็น 1
  5. การสร้างลูป do- while ภายนอก { ทำเครื่องหมายจุดเริ่มต้นของเนื้อหาวงนอก
  6. ประกาศตัวแปรจำนวนเต็ม b และกำหนดค่าเป็น 1
  7. การสร้างลูป do- while ภายใน { ทำเครื่องหมายจุดเริ่มต้นของเนื้อหาวงใน
  8. เพื่อพิมพ์ค่าของตัวแปร a บนคอนโซล “\n” คืออักขระบรรทัดใหม่ที่เลื่อนเคอร์เซอร์ของเมาส์ไปยังบรรทัดถัดไป
  9. เพิ่มค่า b ขึ้น 1 หลังจากการวนซ้ำทุกครั้ง
  10. ส่วนปลายของตัวห่วงด้านใน เพิ่มนิพจน์การทดสอบที่ส่วนท้ายของเนื้อหาลูปแล้ว จะทดสอบว่าค่าของ b น้อยกว่าหรือเท่ากับ 5
  11. เพิ่มค่า a ขึ้น 1 หลังจากการวนซ้ำทุกครั้ง
  12. ส่วนปลายของตัวห่วงด้านนอก เพิ่มนิพจน์การทดสอบที่ส่วนท้ายของเนื้อหาลูปแล้ว จะทดสอบว่าค่าของ a น้อยกว่าหรือเท่ากับ 3
  13. ส่วนท้ายของฟังก์ชัน main()

คำถามที่พบบ่อย

ลูป do-while เป็นโครงสร้างควบคุมที่ทำงานเพียงครั้งเดียว แล้วจะทำซ้ำไปเรื่อยๆ ตราบใดที่เงื่อนไขยังเป็นจริง โดยจะตรวจสอบเงื่อนไขหลังจากแต่ละรอบการทำงาน ไม่ใช่ก่อนเริ่มลูป

ลูป while จะตรวจสอบเงื่อนไขก่อนที่จะรันส่วนเนื้อหาของลูป ดังนั้นมันอาจจะทำงานศูนย์ครั้งก็ได้ ส่วนลูป do-while จะรันส่วนเนื้อหาของลูปก่อน แล้วค่อยตรวจสอบเงื่อนไขทีหลัง ดังนั้นมันจึงทำงานอย่างน้อยหนึ่งครั้งเสมอ

รูปแบบการเขียนคือ do { statements } while(condition); ส่วนเนื้อหาภายในวงเล็บปีกกาจะทำงานก่อน จากนั้นจึงตรวจสอบเงื่อนไขภายในวงเล็บ และปิดท้ายลูปด้วยเครื่องหมายเซมิโคลอน

ใช้ลูป do-while เมื่อโค้ดต้องทำงานอย่างน้อยหนึ่งครั้งโดยไม่คำนึงถึงเงื่อนไข เช่น การแสดงเมนูหรือการตรวจสอบความถูกต้องของข้อมูลที่ผู้ใช้ป้อน

ลูป do-while ซ้อนกัน คือลูป do-while ที่วางอยู่ภายในลูป do-while อีกอันหนึ่ง ลูปด้านในจะทำงานครบทุกรอบในแต่ละรอบการทำงานของลูปด้านนอก

ผู้ช่วย AI เช่น GitHub Copilot สามารถสร้างลูป do-while จากความคิดเห็น แปลงระหว่างประเภทของลูป และระบุเงื่อนไขที่อาจทำให้เกิดลูปไม่สิ้นสุดได้

ใช่แล้ว เครื่องมือที่ขับเคลื่อนด้วย AI สามารถตรวจจับลูปอนันต์ ข้อผิดพลาดแบบ off-by-one และเงื่อนไขลูปที่ไม่ถูกต้อง และแนะนำตรรกะลูปที่ชัดเจนยิ่งขึ้น ช่วยได้ping ธุรกิจ C++ โค้ดทำงานได้อย่างถูกต้อง

ใช่แล้ว เนื่องจากมีการตรวจสอบเงื่อนไขหลังจากส่วนเนื้อหาของลูป do-while ดังนั้นลูป do-while จึงทำงานในส่วนเนื้อหาของลูปอย่างน้อยหนึ่งครั้งเสมอ แม้ว่าเงื่อนไขจะเป็นเท็จในการตรวจสอบครั้งแรกก็ตาม

สรุปโพสต์นี้ด้วย: