ساختارهای شرطی و حلقه‌ ها در سی‌ شارپ

اگر تازه با زبان برنامه‌ نویسی سی‌شارپ (#C) آشنا شده‌اید یا قصد دارید مفاهیم پایه‌ای آن را بهتر درک کنید، یکی از مهم‌ترین مباحثی که باید به آن مسلط شوید، ساختارهای شرطی و حلقه‌ها هستند. این دو مفهوم، پایه‌ی تصمیم‌ گیری و تکرار در برنامه‌نویسی هستند و دانستن آن‌ها نقش بسیار بزرگی در نوشتن برنامه‌های کارآمد و هوشمند دارد.

در این مقاله، با زبانی ساده و کاربردی، این مفاهیم را آموزش می‌دهیم تا حتی اگر مبتدی باشید، بتوانید آن را به‌ راحتی در پروژه‌های خود استفاده کنید.

شرطها در برنامه‌ نویسی یعنی چه؟

برنامه‌ها باید بتوانند با توجه به شرایط مختلف، رفتار متفاوتی از خود نشان دهند. مثلاً تصور کنید شما می‌خواهید یک فرم ثبت‌ نام بسازید که فقط کاربرانی که سنشان بالای ۱۸ سال است، بتوانند ثبت‌ نام کنند. این یعنی باید برنامه‌تان "تصمیم بگیرد" و اینجاست که ساختار شرطی وارد ماجرا می‌شود.

دستور if و else در #C


int age = 20;

if (age >= 18)
{
    Console.WriteLine("شما می‌توانید ثبت‌ نام کنید.");
}
    

در این مثال، اگر مقدار age برابر یا بیشتر از ۱۸ باشد، پیام مجاز بودن ثبت‌ نام نمایش داده می‌شود. در غیر این صورت، برنامه ساکت می‌ماند و کاری انجام نمیدهد.

اما اگر بخواهیم کاری را در صورت برقرار نبودن شرط هم انجام دهیم، از else استفاده می‌کنیم:


if (age >= 18)
{
    Console.WriteLine("ثبت‌ نام با موفقیت انجام شد.");
}
else
{
    Console.WriteLine("متأسفیم، شما مجاز به ثبت‌ نام نیستید.");
}
    

استفاده از else if برای بررسی چند حالت

گاهی فقط دو حالت نیستند که بخواهیم بررسی کنیم. ممکن است چندین حالت مختلف داشته باشیم. در این مواقع از else if استفاده میکنیم تا بتوانیم چندین شرط مختلف را بررسی کنیم.


int score = 85;

if (score >= 90)
{
    Console.WriteLine("نمره عالی");
}
else if (score >= 75)
{
    Console.WriteLine("نمره خوب");
}
else if (score >= 50)
{
    Console.WriteLine("نمره متوسط");
}
else
{
    Console.WriteLine("مردود");
}
    

شرط‌های تو در تو (Nested if)

گاهی نیاز داریم در داخل یک شرط، شرط دیگری بررسی کنیم. در این مواقع می‌توانیم از if تو در تو استفاده کنیم.


int age = 25;
string gender = "زن";

if (age > 18)
{
    if (gender == "زن")
    {
        Console.WriteLine("شما یک خانم بالغ هستید.");
    }
    else
    {
        Console.WriteLine("شما یک آقای بالغ هستید.");
    }
}
    

شرط‌های تو در تو (Nested if)


​​​​​​​دستور switch برای انتخاب از بین چند گزینه

وقتی می‌خواهیم مقدار یک متغیر را با چند مقدار خاص مقایسه کنیم، می‌توانیم به‌جای چند if از switch استفاده کنیم که خواناتر است.


int day = 3;

switch (day)
{
    case 1:
        Console.WriteLine("شنبه");
        break;
    case 2:
        Console.WriteLine("یکشنبه");
        break;
    case 3:
        Console.WriteLine("دوشنبه");
        break;
    default:
        Console.WriteLine("روز نامعتبر");
        break;
}
    

در این مثال، بر اساس مقدار day، یکی از گزینه‌ها اجرا می‌شود. دستور break باعث می‌شود پس از اجرای یک گزینه، از switch خارج شویم.

عملگرهای منطقی در شرطها

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

  • && (و): هر دو شرط باید برقرار باشند.

  • || (یا): اگر یکی از شرط‌ها برقرار باشد، کافی است.

  • ! (نقیض): شرط را برعکس می‌کند.

مثال:


int age = 22;
bool hasPermission = true;

if (age >= 18 && hasPermission)
{
    Console.WriteLine("دسترسی مجاز است.");
}
    

معرفی حلقه‌ها (Loops)

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

فرض کنید می‌خواهید اعداد ۱ تا ۵ را چاپ کنید. بدون حلقه باید پنج خط کد بنویسید. اما با حلقه فقط چند خط کافی است.

معرفی حلقه‌ها (Loops)


حلقه for در #C

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


for (int i = 1; i <= 5; i++)
{
    Console.WriteLine("عدد: " + i);
}
    

در این مثال:

  • int i = 1 مقدار شروع

  • i <= 5 شرط ادامه حلقه

  • i++ افزایش مقدار بعد از هر تکرار

خروجی: عددهای ۱ تا ۵ روی صفحه چاپ می‌شوند.

حلقه while

حلقه while زمانی مناسب است که نمی‌دانیم دقیقاً چند بار قرار است تکرار شود و فقط می‌خواهیم تا زمانی که یک شرط برقرار است، تکرار انجام شود.


int x = 1;

while (x <= 5)
{
    Console.WriteLine("عدد: " + x);
    x++;
}
    

اگر شرط اولیه درست نباشد، ممکن است این حلقه حتی یک‌بار هم اجرا نشود.

حلقه do-while

این حلقه مشابه while است با این تفاوت که حداقل یک بار اجرا می‌شود، حتی اگر شرط نادرست باشد.


int y = 10;

do
{
    Console.WriteLine("y: " + y);
    y++;
}
while (y < 10);
    

در اینجا با اینکه شرط y < 10 برقرار نیست، ولی حلقه یک بار اجرا می‌شود و مقدار 10 چاپ خواهد شد.

حلقه foreach برای پیمایش لیست‌ها

حلقه foreach مخصوص پیمایش آرایه‌ها و مجموعه‌هاست. این حلقه ساده‌ترین روش برای مرور روی داده‌ها است.


string[] names = { "علی", "مریم", "سارا" };

foreach (string name in names)
{
    Console.WriteLine("نام: " + name);
}
    

استفاده از foreach باعث می‌شود نیازی به مدیریت اندیس‌ها نداشته باشید و خطاهای کمتری رخ دهد.

استفاده از break و continue

در تمام حلقه‌ها، می‌توان از break و continue استفاده کرد.

  • break: باعث می‌شود فوراً از حلقه خارج شویم.

  • continue: باعث می‌شود اجرای حلقه فعلی متوقف و تکرار بعدی شروع شود.

مثال با continue:


for (int i = 1; i <= 5; i++)
{
    if (i == 3)
        continue;
    Console.WriteLine(i);
}
    

عدد ۳ چاپ نمی‌شود.

حلقه‌های تو در تو (Nested Loops)

در بسیاری از پروژه‌ها، مانند چاپ ماتریس یا جدول ضرب، نیاز به استفاده از حلقه‌های تو در تو داریم.


for (int i = 1; i <= 3; i++)
{
    for (int j = 1; j <= 3; j++)
    {
        Console.Write(i * j + "\t");
    }
    Console.WriteLine();
}
    

خروجی، جدول ضرب ۳ در ۳ خواهد بود.

اشتباهات رایج و نکات بهینه‌سازی

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

  2. استفاده نادرست از break و continue: ممکن است منطق برنامه را خراب کند.

  3. استفاده زیاد از شرط‌های تو در تو: خوانایی را کاهش می‌دهد.

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

همیشه سعی کنید حلقه‌ها و شرط‌ها را ساده، خوانا و قابل فهم بنویسید.

نتیجه‌ گیری

در این مقاله با دو مفهوم بسیار مهم یعنی ساختارهای شرطی و حلقه‌ها در #C آشنا شدیم. دانستن این مفاهیم برای نوشتن برنامه‌های کاربردی، واکنش‌گرا و بهینه حیاتی است. فرقی ندارد مبتدی باشید یا برنامه‌نویس حرفه‌ای؛ این ابزارها همیشه در کد شما حضور دارند.

سعی کنید برای یادگیری بهتر، مثال‌های این مقاله را در محیط Visual Studio یا هر محیط سی‌شارپ دیگری اجرا کرده و با آن‌ها تمرین کنید. برنامه‌نویسی مثل یادگیری زبان است؛ تا تمرین نکنید، مسلط نمی‌شوید.

اگر سوالی درباره این مبحث داشتید، خوشحال می‌شوم راهنماییتان کنم