Cpp-04-03 - بررسی حلقه‌ها (While)
Cpp-04-03 - بررسی حلقه‌ها (While)
توضیحات :
درسی که اینجا پوشش دادید دربارهٔ حلقهٔ while بود؛ این پاسخ یک خلاصهٔ منظم، خوانا و مناسب سئو از همان مطلب است — شامل تعریف، زمان استفاده، مثال کد (C++)، نکات احتیاطی و بهترین روشها.
چی هست و چطور نوشته میشود؟
while ساختاری برای تکرارِ «تا وقتی که یک شرط برقرار است» است.
قالب کلی (C++):
توضیح ساده: تا وقتی شرط نتیجهاش true باشد، بدنهٔ حلقه تکرار میشود. وقتی شرط false شد، اجرا از ادامهٔ برنامه (خط بعد از حلقه) ادامه پیدا میکند.
کی از while استفاده کنیم و کی از for؟
-
از
forاستفاده کن وقتی «تعداد گردشها» را میدانید یا یک شمارشگر واضح دارید (مثلاً ۱۰ بار، یا تا اندازهٔ مجموعهای از پیش معلوم).
مثال: پیمایش بر اساس اندیس از 0 تا N-1. -
از
whileاستفاده کن وقتی «نمیدانی چند بار باید بچرخد»، اما میدانی شرط تداوم چیست.
مثال: منتظر دریافت ورودی مشخص از کاربر، یا دریافت داده تا رسیدن به وضعیت پایان.
نکته: هر دو قابلمعادلاند؛ ولی for برای شمارش روشنتر و compact است، while برای شرایط مبتنی بر وضعیت مناسبتر است.
مثال عملی (C++)
دو مثال کوتاه: یکی که خطا دارد (حلقهٔ بینهایت)، و یکی صحیح.
مثال نادرست — حلقهٔ بینهایت (فراموش کردن گام):
اگر مقدار a تغییر نکند، شرط همیشه true باقی میماند → CPU درگیر و برنامه قفل میشود.
مثال صحیح — کنترل گام درون حلقه:
این حلقه دقیقاً ۱۰ بار اجرا میشود (a از 0 تا 9).
نکات ایمنی و تلههای رایج
-
فراموش کردن بروزرسانی متغیر کنترلی → حلقهٔ بینهایت. همیشه مطمئن شو شرط در جایی تغییر میکند.
-
شرط اولیه باید بررسی شود: اگر مقدار اولیه طوری باشد که شرط از ابتدا false باشد، حلقه یکبار هم اجرا نمیشود.
-
موقع تعریف متغیر کنترلی: در
whileمعمولاً متغیر را بیرون حلقه تعریف میکنیم (برعکسforکه داخل پرانتز میشود). -
گام متفاوت از ۱: میتوانی
a += 5یاa -= 2و غیره بزنی؛ منطق همان است. -
پایداری شرط با ورودیهای دینامیک: اگر شرط متکی به ورودی کاربر یا دیتابیس است، حتماً ورودیها را اعتبارسنجی کن تا حلقه نامتناهی یا غیرقابلاتکا نشود.
-
استفاده از شرطهای مرکب: میتوان از عملگرهای منطقی (
&&,||,!) برای شروط پیچیدهتر استفاده کرد.
بهترین شیوهها (Best Practices)
-
همیشه گام را مشخص کن (اضافه/کاهش متغیر) یا از شرطی استفاده کن که در بدنه امکان خروج فراهم باشد.
-
از مقداردهی اولیهٔ واضح استفاده کن تا رفتار قابلپیشبینی باشد (
int a = 0;). -
ورودیها را اعتبارسنجی کن (مثلاً از کاربر عدد میپذیریم؛ اگر منفی یا ۰ میتواند مشکلساز باشد، چک کن).
-
برای حلقههایی که ممکن است طولانی شوند، شرایط خروج اضطراری در نظر بگیر (مثلاً شمارندهٔ محدودیت یا timeout).
-
در کد آموزشی یا مثالها از newline (
\n) یاstd::endlاستفاده کن تا خروجی خواناتر باشد. -
اگر حلقه حالت پیچیدهای دارد، مستند و کامنتگذاری کن تا خودت یا دیگران در آینده راحتتر اشکالزدایی کنند.
جمعبندی
-
whileبرای تکرار بر پایهٔ شرط است؛forبیشتر برای تکرار بر پایهٔ شمارش. -
اصلیترین خطر
while، حلقهٔ بینهایت است (وقتی شرط هرگز false نمیشود). -
برای نوشتن حلقهٔ
whileایمن: مقداردهی اولیه، شرط معقول و بهروزرسانی گام را فراموش نکن.
لطفا برای گذاشتن نظرات خود وارد شوید