Table of Contents
ایدهٔ تکرار در برنامهنویسی
در برنامهنویسی خیلی وقتها لازم است یک کار «چند بار» انجام شود.
اگر حلقه نداشته باشیم، مجبوریم همان کد را بارها کپی کنیم؛ هم خستهکننده است، هم پر از خطا میشود، هم اگر نظرتان عوض شود باید همهٔ کپیها را اصلاح کنید.
حلقهها راهی هستند برای اینکه به پایتون بگویید:
«این دستورها را تا وقتی که فلان شرط برقرار است، تکرار کن.»
در این بخش قرار نیست دستور for یا while را یاد بگیرید؛ فقط میبینید چرا اصلاً به حلقه احتیاج داریم.
مشکل تکرارِ دستی
فرض کنید میخواهید عددهای ۱ تا ۵ را چاپ کنید. بدون حلقه باید بنویسید:
print(1)
print(2)
print(3)
print(4)
print(5)اینجا چند مشکل وجود دارد:
- برای ۵ عدد، ۵ خط کد لازم است.
- اگر بهجای ۵ تا، ۱۰۰ تا عدد بخواهید چه؟ ۱۰۰ خط؟!
- اگر تصمیم بگیرید قبل از هر عدد، متن
عدد:را هم چاپ کنید، باید ۵ خط را ویرایش کنید.
این روش برای کارهای کوچک شاید جواب بدهد، اما برای برنامههای واقعی اصلاً مناسب نیست.
صرفهجویی در زمان و کد کمتر
حلقهها کمک میکنند کد کوتاهتر و تمیزتری بنویسیم.
همان مثال عددهای ۱ تا ۵ را با حلقه (فقط برای ایده، نه برای حفظ دستور) ببینید:
for i in range(1, 6):
print(i)مزیتها:
- کد کوتاهتر است.
- اگر بهجای ۵ تا، ۱۰۰ تا عدد بخواهید، کافی است عدد ۶ را در
range(1, 6)عوض کنید. - تغییر منطق کار (مثلاً چاپ متن اضافی، یا انجام محاسبه روی عددها) فقط در یک جا انجام میشود.
کاهش خطا و آسانتر شدن تغییر برنامه
وقتی یک کار را دستی تکرار میکنید (کپیـپیست کد):
- احتمال دارد یکی از خطها را اشتباه بنویسید.
- احتمال دارد موقع ویرایش، یکی از خطها را فراموش کنید.
- خواندن و فهمیدن برنامه برای خودتان و بقیه سخت میشود.
یک حلقه، الگوی تکرار را فقط یکبار تعریف میکند و پایتون بقیه را انجام میدهد.
در نتیجه:
- اگر بخواهید رفتار برنامه را عوض کنید، فقط یکجا را اصلاح میکنید.
- کد قابلاعتمادتر میشود.
- دیگر نیاز نیست نگران «فراموشکردنِ یک خط از بین ۵۰ خط تکراری» باشید.
انجام کارهای بزرگ با تلاش کم
در کارهای واقعی، حلقهها اجازه میدهند با چند خط کد، کارهایی انجام دهید که دستی تقریباً غیرممکن است.
چند نمونهٔ رایج:
- پردازش تعداد زیادی داده
مثلاً خواندن نمرههای ۱۰۰ دانشآموز و محاسبهٔ معدل: - بدون حلقه: ۱۰۰ بار کپیکردن دستورات.
- با حلقه: یک بلوک کد که برای هر نمره تکرار میشود.
- کار روی همهٔ فایلهای یک پوشه
فرض کنید ۲۰۰ فایل متنی دارید و میخواهید در هرکدام یک کلمه را عوض کنید. - بدون حلقه: باز کردن و ویرایش دستی ۲۰۰ فایل.
- با حلقه: یک کد که روی «همهٔ فایلها» تکرار میشود.
- ساخت گزارشها یا خروجیهای تکراری
مثلاً چاپ فاکتور برای هر مشتری در یک فهرست.
حلقه مثل این است که به پایتون بگویید: «برای هر عضوِ این مجموعه، این کار را انجام بده» و بعد کنار بایستید تا خودش همه را انجام دهد.
خودکارسازی کارهای خستهکننده
بسیاری از کارهایی که در روزمره تکرار میکنید، قابل خودکارسازی با حلقهها هستند؛ برای مثال:
- چند بار پشت سر هم از کاربر سؤال بپرسید (مثلاً تا وقتی عدد معتبر وارد کند).
- هر روز روی همهٔ فایلهای پشتیبان یک عملیات انجام دهید.
- برای هر ردیف یک فایل اکسل، محاسباتی انجام دهید و نتیجه را ذخیره کنید.
در اینجور کارها:
- حلقهها جایگزینِ کلیکهای تکراری و کارهای دستی میشوند.
- زمان شما آزاد میشود تا روی بخشهای مهمتر تمرکز کنید.
تکرار تا هنگام رسیدن به یک «شرط»
بعضی وقتها نمیدانید «چند بار» باید یک کار تکرار شود؛
فقط میدانید «تا وقتی که یک شرط برقرار است» باید ادامه پیدا کند.
مثالهای روزمره:
- تا وقتی کاربر رمز صحیح وارد نکرده، دوباره از او رمز بخواه.
- تا وقتی کاربر گزینهٔ «خروج» را انتخاب نکرده، منوی برنامه را نشان بده.
- تا وقتی موجودی حساب به مقدار کافی نرسیده، واریزها را ادامه بده.
اینجا اهمیت حلقهها در این است که:
- لازم نیست خودتان تعداد دفعات را بشمارید.
- فقط «شرط توقف» را مشخص میکنید، خود پایتون بقیه را مدیریت میکند.
حلقه بهعنوان ابزار فکر کردن
حلقهها فقط یک دستور در زبان نیستند؛ کمک میکنند مسئلهها را به شکل تکرار و الگو ببینید.
برای مثال:
- «برای هر دانشآموز …»
- «برای هر حرف از این متن …»
- «برای هر ثانیه از زمان اجرا …»
- «تا زمانی که این وضعیت تغییر نکرده …»
وقتی به این شکل فکر کردن عادت کنید:
- طراحی الگوریتمها (روش حل مسئله) برایتان سادهتر میشود.
- میتوانید مسائل پیچیده را به یک کار «ساده که بارها تکرار میشود» تبدیل کنید.
جمعبندی
حلقهها مفید هستند چون:
- نوشتن کد را سریعتر و کمحجمتر میکنند.
- خطا را کاهش میدهند و تغییر برنامه را آسان میکنند.
- انجام کارهای بزرگ و تکراری را ممکن میکنند.
- کارهای خستهکننده را خودکار میکنند.
- به شما کمک میکنند مسائل را بهصورت «الگوهای تکرار شونده» ببینید.
در بخشهای بعدی این فصل، با دو نوع اصلی حلقه در پایتون (while و for) و نحوهٔ استفادهٔ عملی از آنها آشنا میشوید.