حلقهها و تکرار
حلقهها و تکرار
بخشی از آموزش جامع 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 غیرضروری نگه دارید.
۱۰. تمرین عملی
برنامهای بسازید که اعداد ۱ تا ۱۰۰ را پیمایش کند و مضربهای ۳ و ۵ را با قواعد متفاوت چاپ کند.
۱۱. جمعبندی
در این فصل، مبانی «حلقهها و تکرار» با تمرکز بر ساختارهای اصلی زبان، الگوهای صحیح استفاده و خطاهای رایج بررسی شد. تسلط بر این مفاهیم زمینه لازم برای اتصال موضوع به فصلهای بعدی و طراحی کدهای خواناتر، قابل نگهداری و قابل تست را فراهم میکند.