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

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

زنگ سی‌شارپ - قسمت ششم

Program Control Statements

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

سه دسته بندی برای Program Control Statement وجود دارد:

  • Selection Statements
  • Iteration Statements
  • Jump Statements

بخش Selection Statements شامل if و switch است و همین‌طور که از اسم آن مشخص است، در صورت داشتن شروط لازم عمل selection (انتخاب) را انجام می‌دهد. Iteration Statements شامل حلقه‌های  do-while، while، for و foreach هستند و عملیات تکرار (iteration) را انجام می‌دهند. Jump Statements هم شامل return، goto continue، break و throw است. هر کدام از این موارد مفصل توضیح داده می‌شوند. با توجه به اینکه اصطلاحات انگلیسی در مقالات زنگ سی شارپ بسیار هستند، به منظور دانستن هریک از اصطلاحات (اگر با زبان انگلیسی آشنایی کافی ندارید) پیشنهاد می‌شود از Google Translate ،Fast Dictionary یا Persian Dectionary استفاده کنید.

 The if statement

شما می‌توانید بخشی از یک برنامه را با استفاده از دستور شرطی if اجرا کنید. دستور if در سی شارپ از لحاظ syntax با سایر زبان‌های برنامه نویسی مثل C و ++C و جاوا مشابه است.

ساده ترین شکل دستور if بصورت زیر است:

C#

if(condition) statement;

در اینجا condition یک عبارت بولی (true یا false) است. اگر condition شامل مقدار true باشد، آنگاه statement اجرا می‌شود. اگر condition شامل مقدار false باشد در این‌صورت statement کنار زده شده و اجرا نمی‌شود.

به نمونه ی زیر دقت کنید:

C#

if (10 < 11) Console.WriteLine("10 is less than 11");

در این مورد، تا زمانی که ۱۰ از ۱۱ کوچک‌تر باشد، condition برابر مقدار true است و دستور ()Console.WriteLine اجرا می‌شود. نمونه ی زیر را ببینید:

C#

if (10 < 9) Console.WriteLine("this won’t be displayed");

در این مورد، بدلیل اینکه ۱۰ از ۹ کوچک‌تر نیست condition شامل مقدار false می‌شود، بنابراین دستور ()Console.WriteLine اجرا نمی‌شود. همان‌طور که در قسمت پنجم ذکر شد عملگرهای مقایسه ای دو آیتم را با هم مقایسه می‌کنند، یک عبارت که شامل عملگر مقایسه ای است، یک مقدار بولین دارد. از اینرو می‌توان از عملگرهای مقایسه ای برای عبارت شرطی (condition) نیز استفاده کرد:

برنامه ی زیر چگونگی کار با دستور if را نشان می‌دهد:

C#

// Demonstrate the if.
using System;
class IfDemo
{
    static void Main()
    {
        int a, b, c;
 
        a = 2;
        b = 3;
 
        if (a < b) Console.WriteLine("a is less than b");
 
        // This won’t display anything.
        if (a == b) Console.WriteLine("you won’t see this");
 
        Console.WriteLine();
 
        c = a - b; // c contains -1
 
        Console.WriteLine("c contains -1");
        if (c >= 0) Console.WriteLine("c is non-negative");
        if (c < 0) Console.WriteLine("c is negative");
 
        Console.WriteLine();
 
        c = b - a; // c now contains 1
        Console.WriteLine("c contains 1");
        if (c >= 0) Console.WriteLine("c is non-negative");
        if (c < 0) Console.WriteLine("c is negative");
    }
}

خروجی تولید شده توسط این برنامه:

Output

a is less than b
c contains -1
c is negative
c contains 1
c is non-negative

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

نکته: برای کوتاه تر شدن خط کد در این برنامه، namespace های اضافی را حذف کردیم و تنها از فضای‌نام system که برای مثال ما ضروری است استفاده کردیم. همچنین string[] args را از متد ()Main حذف کردیم. این‌ها به صورت پیش فرض توسط ویژوال استدیو نوشته می‌شوند و ممکن است در مواقعی که به آن‌ها نیازی نیست، حذف‌شان کنیم.

فرم کلی دستور if بدین شکل است:

C#

if(condition) statement;
else statement;

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

C#

if(condition)
{
    statement sequence
}
else
{
    statement sequence
}

در اینجا منظور از statement sequence دنباله ای از statement ها است. اگر condition شامل مقدار true باشد، آنگاه بلوک if اجرا می‌شود در غیر این‌صورت (اگر از عبارت else استفاده کرده باشیم) بلاک else اجرا می‌شود. هیچ‌گاه هر دو آن‌ها با هم اجرا نخواهند شد. در قسمت condition همیشه باید مقدار بولین تولید شود.

به نمونه‌ی زیر توجه کنید:

C#

using System;
public class MyClass
{
    public static void Main()
    {
        int num1 = 6;
        int num2 = 23;

        int result = num1 + num2;

        if (result > 25)
        {
            Console.WriteLine("Result is more then 25");
        }
        else
        {
            Console.WriteLine("Result is less then 25");
        }
    }
}

در این مثال، مقدار متغیر num1 و num2 با هم جمع می‌شوند و نتیجه ی آن‌ها در متغیر result ذخیره می‌شود که نهایتاً result شامل مقدار ۲۹ می‌شود. همان‌طور که می‌بینید مقدار result با ۲۵ مقایسه شده است و می‌دانیم که پاسخ true است. بدلیل اینکه مقدار condition برابر با true شده است، بلاک if اجرا می‌شود و بلاک else نادیده گرفته شده و هیچ‌گاه اجرا نخواهد شد.

به نمونه ی بعدی توجه کنید:

C#

using System;
public class ifDemo
{
    public static void Main()
    {
        if (2 + 2 == 5)
        Console.WriteLine("Does not compute");   // this won’t be displayed;
        else
        Console.WriteLine("This is False!");
    }
}

در این مثال، در قسمت condition، حاصل ۲ + ۲ که برابر با ۴ است، توسط عملگر مقایسه ای == با ۵ مقایسه می‌شود و همان‌طور که می‌دانید ۴ و ۵ باهم برابر نیستند، بنابراین مقدار condition برابر با false می‌شود. با این حساب بلاک دستور if اجرا نمی‌شود و بلاک دستور else اجرا خواهد شد.

نکته: همین‌طور که می‌بینید، هم if و هم else، به دلیل اینکه یک statement بیشتر ندارند، استفاده از بلاک (براکت باز و بسته) اختیاری است. در قسمت بعدی، شرح دستور if کامل می‌شود و بقیه ی بخش‌های Program Control Statement در قسمت‌های بعدی بیان می‌شود.


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