Kahibaro
Discord Login Register

فصل ۷: حلقه‌ها

مقدمهٔ کلی حلقه‌ها

در برنامه‌نویسی خیلی وقت‌ها لازم است یک کار تکراری را چند بار انجام دهیم.
مثلاً:

اگر این کارها را بدون حلقه انجام دهیم، باید ده‌ها یا صدها خط کد تکراری بنویسیم.
«حلقه» (loop) ابزاری است که به ما اجازه می‌دهد یک بخش از کد را چندین بار اجرا کنیم، بدون این‌که آن را تکراری بنویسیم.

در این فصل، به صورت کلی با انواع حلقه‌ها در پایتون، منطق آن‌ها و کاربردشان آشنا می‌شوید. جزئیات هر نوع حلقه در زیرفصل‌های بعدی می‌آید، اینجا بیشتر دید کلی و مفهومی می‌گیریم.

ایدهٔ اصلی حلقه‌ها

حلقه‌ها را می‌توانید مثل این مراحل تصور کنید:

  1. بررسی یک «شرط» (آیا باید ادامه بدهم؟)
  2. اگر پاسخ «بله» بود → اجرای بدنهٔ حلقه
  3. برگشت به مرحلهٔ ۱ و دوباره بررسی شرط
  4. وقتی پاسخ «خیر» شد → خروج از حلقه و ادامهٔ برنامه

این فرآیند می‌تواند چند بار یا حتی هزاران بار تکرار شود.

یک شِمای کلی (شبه‌کد، نه لزوماً دستور واقعی پایتون):

text
تا وقتی که شرط برقرار است:
    این کارها را انجام بده

دو نوع اصلی حلقه در پایتون

در پایتون دو نوع حلقهٔ پرکاربرد برای مبتدیان وجود دارد:

هر دو برای تکرار استفاده می‌شوند، اما منطق استفاده از آن‌ها کمی متفاوت است.

حلقه‌هایی که بر اساس «شرط» می‌چرخند

حلقهٔ while بر مبنای یک شرط کار می‌کند:

این نوع حلقه برای زمانی مناسب است که:

مثال ساده (فقط برای ایده، توضیح کامل در زیرفصل مربوطه می‌آید):

n = 1
while n <= 5:
    print(n)
    n = n + 1

در این‌جا شرط n <= 5 تعیین می‌کند که حلقه کی ادامه دهد و کی تمام شود.

حلقه‌هایی که روی «مجموعه‌ای از چیزها» می‌چرخند

حلقهٔ for معمولاً روی «تکرار روی یک دنباله» استفاده می‌شود؛
مثلاً:

این نوع حلقه بیشتر زمانی استفاده می‌شود که:

مثال بسیار ساده:

for name in ["Ali", "Sara", "Reza"]:
    print(name)

در هر بار چرخش حلقه، متغیر name یکی از عناصر لیست را می‌گیرد.

کجا از حلقه استفاده کنیم؟

هر وقت یکی از این وضعیت‌ها را دیدید، احتمالاً حلقه لازم دارید:

چند مثال کاربردی:

مفاهیم رایج در کار با حلقه‌ها

در کاربرد حلقه‌ها چند ایدهٔ مهم تکراری ظاهر می‌شود که در زیرفصل‌ها بیشتر با آن‌ها کار می‌کنید:

متغیر شمارنده

گاهی لازم است تعداد دفعات اجرای حلقه را بشماریم. در این حالت معمولاً از یک متغیر شمارنده استفاده می‌کنیم، مثل i، n، یا count.

شِمای کلی:

count = 0
while count < 3:
    print("سلام")
    count = count + 1

اینجا count همان متغیر شمارنده است.

حلقهٔ محدود در برابر نامحدود

مثال مفهومی یک حلقهٔ نامحدود:

while True:
    command = input("یک دستور وارد کنید (exit برای خروج): ")
    if command == "exit":
        break

اینجا حلقه از نظر تئوری بی‌نهایت است، اما با دستور break (که در زیرفصل مربوطه توضیح می‌دهیم) متوقف می‌شود.

کنترل جریان داخل حلقه

گاهی داخل حلقه تصمیم می‌گیریم:

این دو دستور کمک می‌کنند رفتار حلقه را دقیق‌تر کنترل کنیم.
در زیرفصل break و continue با جزئیات و مثال‌های مختلف با آن‌ها کار می‌کنید.

حلقه‌ها و خطاهای رایج

به‌عنوان مقدمات، چند خطای رایج هنگام کار با حلقه‌ها را بشناسید (جزئیات فنی‌تر در زیرفصل مخصوص خطاها و تمرین‌های حلقه خواهد آمد):

  1. حلقهٔ بی‌پایان (Infinite Loop)
    وقتی شرط حلقه هیچ‌وقت False نمی‌شود و حلقه تا ابد ادامه می‌یابد.
    • معمولاً به این خاطر رخ می‌دهد که متغیری که در شرط استفاده شده، داخل حلقه به‌درستی تغییر نمی‌کند.
  2. تغییر اشتباه شمارنده
    مثلاً دو بار افزایش‌دادن یا اصلاً افزایش‌ندادن آن، که می‌تواند باعث اجرای کمتر یا بیشتر از حد انتظار شود.
  3. دسترسی به متغیر خارج از محدودهٔ حلقه
    گاهی انتظار داریم متغیری داخل حلقه تعریف شده، بیرون حلقه هم قابل استفاده باشد، اما مقدارش آن چیزی نیست که انتظار داریم (یا اصلاً تعریف نشده باشد).
    در این فصل به‌صورت مقدماتی، و در فصل توابع مفصل‌تر دربارهٔ محدودهٔ متغیرها صحبت می‌شود.

مقایسهٔ کلی while و for

خلاصهٔ ذهنی برای انتخاب نوع حلقه:

مثال‌ها و تمرین‌های عملی برای هر دو نوع در زیرفصل‌های بعدی خواهد آمد؛ در آن‌جا یاد می‌گیرید کِی کدام را انتخاب کنید.

ساختن عادت فکری تکرار با حلقه‌ها

برای این‌که در استفاده از حلقه‌ها راحت شوید، در طول این فصل تمرین‌هایی می‌بینید که کمک می‌کند:

بعد از این فصل، تقریباً هر مسئلهٔ ساده‌ای که نیاز به تکرار دارد را می‌توانید با پایتون حل کنید و این یک قدم بسیار مهم در برنامه‌نویسی است.

Views: 6

Comments

Please login to add a comment.

Don't have an account? Register now!