آموزش حلقه while و do … while در C++ (به زبان کاملا ساده)

حلقه ها در برنامه نویسی برای تکرار یک بلوک خاص از کد استفاده می شوند. در این مقاله، حلقه های while و do … while را در C++ یاد خواهید گرفت.
در برنامه نویسی ، حلقه ها یک قسمت مشخص از کد را تا زمانی که شرط برقرار باشد، تکرار می کنند.
۳ نوع حلقه در ++ C وجود دارد:
- حلقه for
- حلقه while
- حلقه do … while
در زبان برنامهنویسی C++، حلقهها برای اجرای تکراری یک بخش از کد تا زمانی که یک شرط خاص برقرار باشد، استفاده میشوند. دو مورد از پرکاربردترین حلقهها while و do...while هستند. هر دوی این حلقهها وظیفه تکرار را بر عهده دارند، اما یک تفاوت ساختاری بسیار مهم بین آنها وجود دارد که تعیین میکند در چه زمانهایی باید از کدامیک استفاده کرد.
در ادامه، این دو حلقه را بدون استفاده از کد و با زبانی ساده بررسی میکنیم.
حلقه while (حلقه با کنترل ورود)
حلقه while را میتوان به عنوان یک نگهبان سختگیر در ورودی یک اتاق تصور کرد. پیش از اینکه به شما اجازه ورود به اتاق (اجرای کدهای داخل حلقه) داده شود، نگهبان شرط ورود را بررسی میکند.
نحوه کار: ابتدا شرط بررسی میشود.
-
اگر شرط درست (True) باشد، کدهای داخل حلقه اجرا میشوند. پس از پایان اجرای کدها، برنامه دوباره به بالا برمیگردد و شرط را مجدداً بررسی میکند. این روند تا زمانی ادامه مییابد که شرط نادرست شود.
-
اگر شرط از همان ابتدا نادرست (False) باشد، کدهای داخل حلقه حتی یک بار هم اجرا نمیشوند و برنامه به سادگی از روی حلقه میپرد.
ویژگی کلیدی: به دلیل اینکه شرط قبل از اجرای کد بررسی میشود، به آن «حلقه با کنترل ورود» (Entry-controlled loop) میگویند.
زمان استفاده: زمانی از حلقه while استفاده کنید که اجرای کدهای داخل حلقه وابسته به برقرار بودن شرط از همان ابتدا باشد. مثلاً زمانی که میخواهید یک فایل را بخوانید، ابتدا باید بررسی کنید که آیا به پایان فایل رسیدهاید یا خیر. اگر فایل خالی باشد، اصلاً نباید تلاشی برای خواندن انجام دهید.
حلقه do...while (حلقه با کنترل خروج)
حلقه do...while برعکس while عمل میکند. این حلقه شبیه به اتاقی است که نگهبان آن در درِ خروجی ایستاده است. شما ابتدا وارد اتاق میشوید، کارتان را انجام میدهید و سپس هنگام خروج، نگهبان شرط را بررسی میکند تا ببیند آیا باید دوباره به اتاق برگردید یا خیر.
نحوه کار: ابتدا کدهای داخل حلقه به طور کامل یک بار اجرا میشوند. سپس در انتهای حلقه، شرط بررسی میشود.
-
اگر شرط درست (True) باشد، برنامه دوباره به ابتدای حلقه برمیگردد و کدها را مجدداً اجرا میکند.
-
اگر شرط نادرست (False) باشد، حلقه خاتمه مییابد.
ویژگی کلیدی: مهمترین ویژگی این حلقه این است که حتی اگر شرط از ابتدا نادرست باشد، کدهای داخل حلقه حداقل یک بار اجرا میشوند. به این ساختار «حلقه با کنترل خروج» (Exit-controlled loop) میگویند.
زمان استفاده: زمانی از do...while استفاده کنید که نیاز دارید کدهای داخل حلقه حتماً یک بار اجرا شوند و سپس تصمیم بگیرید که آیا این کار باید تکرار شود یا خیر.
کاربردها و تفاوتهای عملی
بهترین مثال برای کاربرد do...while، برنامههای منومحور (Menu-driven) است. تصور کنید یک برنامه نوشتهاید که در آن یک منو به کاربر نمایش داده میشود (مثلاً ۱. شروع بازی، ۲. تنظیمات، ۳. خروج). در اینجا شما نیاز دارید که منو حداقل یک بار به کاربر نشان داده شود تا او بتواند انتخاب کند. سپس، بر اساس انتخاب کاربر (شرط)، تصمیم میگیرید که آیا دوباره منو را نشان دهید (مثلاً کاربر عدد اشتباهی وارد کرده) یا از حلقه خارج شوید.
در مقابل، برای بررسی ورودیهای خاصی که از قبل میدانیم ممکن است معتبر نباشند، while منطقیتر است.
خلاصه تفاوتها:
۱. محل بررسی شرط: در while شرط در ابتدا بررسی میشود، در do...while شرط در انتها بررسی میشود. ۲. تضمین اجرا: while تضمینی برای حتی یک بار اجرا شدن کد ندارد، اما do...while اجرای حداقل یک باره کد را تضمین میکند. ۳. نوع کنترل: while کنترل ورود است و do...while کنترل خروج.
حلقه while در C++
ساختار حلقه while در C++ به شکل زیر است:
while (testExpression)
{
// codes
}
testExpression شرط حلقه است که در هر بار اجرای آن بررسی می شود.
طرز کار حلقه while به چه شکل است؟
- حلقه while شرط را بررسی می کند.
- اگر شرط درست باشد، کد درون بدنه ی while اجرا می شود.
- سپس شرط دوباره بررسی می شود و تا زمانی که درست باشد، ادامه می یابد.
- وقتی شرط نادرست شد، حلقه while هم تمام می شود.
فلوچارت حلقه while

مثال ۱ : حلقه ی while در C++
- // C++ Program to compute factorial of a number
- // Factorial of n = 1*2*3…*n
- #include
- using namespace std;
- int main()
- {
- int number, i = 1, factorial = 1;
- cout << “Enter a positive integer: “;
- cin >> number;
- while ( i <= number) {
- factorial *= i; //factorial = factorial * i;
- ++i;
- }
- cout<<“Factorial of “<< number <<” = “<< factorial;
- return 0;
- }
خروجی
Enter a positive integer: 4
Factorial of 4 = 24
در برنامه بالا از کاربر خواسته می شود یک عدد صحیح مثبت را وارد کند. عدد در متغیر number ذخیره می شود. فرض می کنیم کاربر ۴ را وارد کرده است.
۱- در ابتدا i=1، شرط i<= number برقرار است و فاکتوریل برابر با ۱ است.
۲- سپس i=2 می شود. شرط برقرار است و فاکتوریل برابر با ۲ می شود.
۳- سپس i=3 می شود. شرط برقرار است و فاکتوریل برابر با ۶ می شود.
۴- سپس i=4 می شود. شرط برقرار است و فاکتوریل برابر با ۲۴ می شود.
۵- سپس i=5 می شود. شرط برقرار نیست و حلقه پایان می پذیرد.
حلقه do … while در C++
حلقه do … while نوع دیگری از حلقه ی while است با این تفاوت که بدنه ی حلقه ی do … while یک بار قبل از بررسی شرط اجرا می شود.
ساختار حلقه ی do … while به شکل زیر است:
do {
// codes;
}
while (testExpression);
طرز کار حلقه while do … به چه شکل است؟
- ابتدا یک بار کد درون بدنه ی حلقه اجرا می شود. سپس شرط بررسی می شود.
- اگر شرط درست باشد، کد درون بدنه ی حلقه اجرا می شود. این کار تا زمانی که شرط درست باشد ادامه می یابد.
- وقتی که شرط نادرست شد، حلقه ی do … while هم پایان می یابد.
فلوچارت حلقه ی do … while

مثال ۲ : حلقه ی do … while در C++
- // C++ program to add numbers until user enters 0
- #include
- using namespace std;
- int main()
- {
- float number, sum = 0.0;
- do {
- cout<<“Enter a number: “;
- cin>>number;
- sum += number;
- }
- while(number != 0.0);
- cout<<“Total sum = “<<sum;
- return 0;
- }
خروجی
Enter a number: 2
Enter a number: 3
Enter a number: 4
Enter a number: -4
Enter a number: 2
Enter a number: 4.4
Enter a number: 2
Enter a number: 0

سایت خوبی دارین ممنون بابت این همه آراستگی عناوین و نظمی که در کمتر سایتی به چشم میخوره
پاسخسلام این کد آخر وقتی کاربر 0رو وارد میکنه دیگه شرط اجرا نمیشه وجمع اعدادی رو که تا قبل صفر وارد کرده برمیگردونه؟؟؟
پاسخسلام فرق حلقه while و do چیه؟؟
پاسخو چه زمانی کاربرد داره؟؟
اگر بخاهیم که قبل از بررسی شرط یکبار برنامه اجرا شود از do...while استفاده میکنیم.که در اینجا چون باید حاصل جمع اعداد وارد شده را حساب کنیم تا زمانیکه عدد صفر وارد شود، و چون مقدار اولیه sum هم که صفر هستش بنابراین میتونیم بار اول بدون استفاده از شرط ، برنامه رو اجرا کنیم به صورتیکه خطا نداشته باشیم و خروجی بگیریم و بعدش بریم ببینیم شرطمون برقرار هیت با نه ؟! و ادامه ماجرا
سلام
پاسخوقتی نوع داده رو انتخاب می کنیم مثلا int m مگر نباید ورودی را عدد در نظر بگیرد؟
چرا وقتی ورودی را مثلا به اشتباه حرف a (کلا به غیر از عدد) وارد کنیم هنگام اجرای برنامه برنامه تو لوپ می رود و بی نهایت اجرا میشه؟ در صورتیکه اصلا نباید ورودی را قبول کند
سپاس از شما و سایت بسیار عالی شما برای آموزش و بالا بردن سطح علمی جامعه
چجوری برنامه ای مثل برنامه ای که نمره ی دانشجو رو نشون میده رو داخل حلقه بندازیم؟
پاسخ