فصل 8 از 40 درس 1 از 1

حلقه‌ها و تکرار

حلقه‌ها و تکرار

بخشی از آموزش جامع C# و .NET 10

محتوای درس حلقه‌ها و تکرار

حلقه‌ها امکان اجرای کنترل‌شده یک بلوک کد را چند بار فراهم می‌کنند. انتخاب صحیح میان for، while، do while و foreach به ماهیت داده و شرط پایان بستگی دارد.

۱. for

for زمانی مناسب است که شمارنده و تعداد تکرار مشخص یا قابل محاسبه باشد.

مثال

for(int i=1;i<=5;i++) Console.WriteLine(i);

در این مثال، مفهوم «for» در یک قطعه کد مستقل نمایش داده شده است. مقدارها و نام‌ها عمداً ساده انتخاب شده‌اند تا رفتار اصلی قابل مشاهده باشد؛ در پروژه واقعی همین الگو با مدل دامنه، اعتبارسنجی و مدیریت خطای متناسب ترکیب می‌شود.

۲. while

while پیش از هر تکرار شرط را بررسی می‌کند و برای حلقه‌هایی با تعداد نامشخص مناسب است.

مثال

int n=1;
         while(n<20){n*=2; Console.WriteLine(n);}

در این مثال، مفهوم «while» در یک قطعه کد مستقل نمایش داده شده است. مقدارها و نام‌ها عمداً ساده انتخاب شده‌اند تا رفتار اصلی قابل مشاهده باشد؛ در پروژه واقعی همین الگو با مدل دامنه، اعتبارسنجی و مدیریت خطای متناسب ترکیب می‌شود.

۳. do while

do while حداقل یک بار بدنه را اجرا می‌کند و سپس شرط را بررسی می‌کند.

مثال

int n=1;
         while(n<20){n*=2; Console.WriteLine(n);}

در این مثال، مفهوم «do while» در یک قطعه کد مستقل نمایش داده شده است. مقدارها و نام‌ها عمداً ساده انتخاب شده‌اند تا رفتار اصلی قابل مشاهده باشد؛ در پروژه واقعی همین الگو با مدل دامنه، اعتبارسنجی و مدیریت خطای متناسب ترکیب می‌شود.

۴. foreach

foreach برای پیمایش عناصر مجموعه بدون مدیریت دستی Index انتخاب مناسبی است.

مثال

for(int i=1;i<=5;i++) Console.WriteLine(i);

در این مثال، مفهوم «foreach» در یک قطعه کد مستقل نمایش داده شده است. مقدارها و نام‌ها عمداً ساده انتخاب شده‌اند تا رفتار اصلی قابل مشاهده باشد؛ در پروژه واقعی همین الگو با مدل دامنه، اعتبارسنجی و مدیریت خطای متناسب ترکیب می‌شود.

۵. break و continue

break حلقه را خاتمه می‌دهد و continue اجرای تکرار فعلی را متوقف و به تکرار بعدی می‌رود.

مثال

for(int i=0;i<10;i++){ if(i==2) continue; if(i==7) break; Console.WriteLine(i); }

در این مثال، مفهوم «break و continue» در یک قطعه کد مستقل نمایش داده شده است. مقدارها و نام‌ها عمداً ساده انتخاب شده‌اند تا رفتار اصلی قابل مشاهده باشد؛ در پروژه واقعی همین الگو با مدل دامنه، اعتبارسنجی و مدیریت خطای متناسب ترکیب می‌شود.

۶. حلقه بی‌نهایت

حلقه‌هایی مانند while(true) در Serviceها و ورودی‌های تعاملی کاربرد دارند، اما باید مسیر خروج مشخص و کنترل‌شده داشته باشند.

مثال

int i=0;
         while(true){ if(++i==3) break; }
         Console.WriteLine(i);

در این مثال، مفهوم «حلقه بی‌نهایت» در یک قطعه کد مستقل نمایش داده شده است. مقدارها و نام‌ها عمداً ساده انتخاب شده‌اند تا رفتار اصلی قابل مشاهده باشد؛ در پروژه واقعی همین الگو با مدل دامنه، اعتبارسنجی و مدیریت خطای متناسب ترکیب می‌شود.

۷. مثال‌های عملی

for (int i = 0; i < 5; i++)
         {
             Console.WriteLine(i);
         }
         
         string[] names = { "Ali", "Sara", "Nima" };
         foreach (string name in names)
         {
             Console.WriteLine(name);
         }

این نمونه عملی چند مفهوم فصل را در کنار هم قرار می‌دهد و برای مشاهده رفتار واقعی کد قابل اجرا و تغییر است.

int number;
         while (!int.TryParse(Console.ReadLine(), out number))
         {
             Console.WriteLine("Enter a valid number:");
         }

این نمونه عملی چند مفهوم فصل را در کنار هم قرار می‌دهد و برای مشاهده رفتار واقعی کد قابل اجرا و تغییر است.

۸. خطاهای رایج

• خطای Off-by-one در شرط for

• حلقه while بدون تغییر وضعیت شرط

• تغییر Collection در حین foreach بدون سازوکار مناسب

۹. نکات اجرایی

• نام‌ها، Typeها و Methodها را متناسب با مفهوم دامنه و بدون ابهام انتخاب کنید.

• هشدارهای کامپایلر و Nullable را بدون بررسی خاموش نکنید.

• منطق هر بخش را تا حد امکان کوچک، قابل تست و مستقل از I/O غیرضروری نگه دارید.

۱۰. تمرین عملی

برنامه‌ای بسازید که اعداد ۱ تا ۱۰۰ را پیمایش کند و مضرب‌های ۳ و ۵ را با قواعد متفاوت چاپ کند.

۱۱. جمع‌بندی

در این فصل، مبانی «حلقه‌ها و تکرار» با تمرکز بر ساختارهای اصلی زبان، الگوهای صحیح استفاده و خطاهای رایج بررسی شد. تسلط بر این مفاهیم زمینه لازم برای اتصال موضوع به فصل‌های بعدی و طراحی کدهای خواناتر، قابل نگهداری و قابل تست را فراهم می‌کند.