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

در قسمت قبل با چکونگی کار با حلقه‌ی for و while تا حدودی آشنا شدید و به‌منظور درک بهتر مطالب چندین تمرین قرار داده شد. در این قسمت به مباحث تکمیلی‌ مواردی که تاکنون ذکر شده می‌پردازیم و در نهایت به حل تمرین‌های ۱ تا ۴ خواهیم پرداخت.

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

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

به مثال زیر توجه کنید:

C#

using System;
class Example
{
    static void Main(string[] args)
    {
        for (int x = 100; x > -100; x -= 5)
        Console.WriteLine(x);
    }
}

اگر برنامه بالا را اجرا کنید می‌بینید حلقه تا زمانی‌که شرط (condition) برقرار است از مقدار x می‌کاهد و پیوسته آن‌را نمایش می‌دهد. نکته‌ی دیگر در این برنامه حذف بلاک حلقه‌ به‌علت تک بودن statement sequence و تعریف کردن متغیر روی حلقه است.

به مثال زیر دقت کنید:

C#

using System;
class Example
{
    static void Main()
    {
        for (int i = 0; i < 20; i++)
        {
            if (i % 2 == 0)
            {
                Console.WriteLine(i);
            }
        }
    }
}

در این برنامه علامت ٪ (علامت مادولس Modulus) یکی از عمل‌گرهای محاسباتی است که باقیمانده‌ی تقسیم را نشان می‌دهد. در این‌جا باقیمانده‌ی تقسیم مقدار i بر ۲ محاسبه می‌شود و اگر برابر با صفر بود مقدار i چاپ می‌شود. بهتر است این برنامه را دقیق‌تر بررسی کنیم. همان‌طور که می‌بینید متغیر i روی حلقه معرفی شده است و تا زمانی که مقدار i کوچک‌تر از ۲۰ است حلقه تکرار می‌شود. ابتدا i برابر با صفر و همچنین کوچک‌تر از ۲۰ است پس وارد حلقه می‌شود. درون حلقه، دستور if بررسی می‌کند که آیا باقیمانده‌ی تقسیم i بر ۲ برابر با صفر است یا خیر. همان‌طور که می‌دانید باقیمانده‌ی تقسیم صفر بر ۲ برابر با صفر است، بنابراین مقدار i چاپ می‌شود. مجدداً یک واحد به i اضاف و مقدار i برابر با ۱ شده و برنامه وارد حلقه می‌شود. درون حلقه دستور if شرط را بررسی می‌کند و همان‌طور که می‌دانید باقیمانده‌ی تقسیم ۱ بر ۲ مخالف صفر است بنابراین بلاک if اجرا نشده و مقدار i چاپ نمی‌شود. به‌ همین ترتیب تا عدد ۲۰ بررسی می‌شود و اعداد زوج بین صفر تا ۲۰ توسط این برنامه نمایش داده می‌شوند.

به مثال زیر دقت کنید:

C#

using System;
class Example
{
    static void Main()
    {
        int i;

        //counting by fives
        Console.WriteLine("Counting by fives:");
        for (i = 0; i <= 100; i += 5)
        {
            Console.Write(i + "\t");
        }
        Console.WriteLine();
        Console.WriteLine();

        //count backwards
        Console.WriteLine("Counting backwards:");
        for (i = 10; i > 0; i--)
        {
            Console.Write(i + "\t");
        }
        Console.WriteLine();
        Console.WriteLine();

        //counting by multiple of 3
        Console.WriteLine("Multiple of 3:");
        for (i = 0; i < 20; i++)
        {
            if (i % 3 == 0)
            {
                Console.Write(i + "\t");
            }
        }
        Console.WriteLine();
        Console.WriteLine();
    }
}

خروجی:

در حلقه‌ی اول این برنامه، اعداد صفر تا صد به صورت افزایش ۵ واحدی نمایش داده شده‌اند. همان‌طور که می‌بینید در قسمت iteration به مقدار i توسط عمل‌گر افزایشی =+ در هر بار که حلقه تکرار می‌شود ۵ واحد افزوده می‌شود و درون حلقه، هنگام نمایش i از t\ استفاده شده که به اندازه یک tab  افقی (به اندازه ۴ کاراکتر) فاصله ایجاد می‌کند و خروجی منظم‌تری شکل می‌گیرد. نکته‌ی دیگر در این مثال استفاده از دستور ()Console.Write است که خروجی را در خط جدید چاپ نکرده و در همان خط چاپ می‌کند. در حلقه‌ی بعدی، اعداد صفر تا ۱۰ به صورت معکوس چاپ شده‌اند که برای این منظور از عمل‌گر کاهشی — استفاده شده است. در حلقه‌ی بعدی، مضارب ۳ اعداد صفر تا ۲۰ نمایش داده شده که این‌کار توسط مادولس (٪) انجام شده است. حتماً تاکنون متوجه شده‌اید که برای نمایش مضارب یک عدد در یک بازه کافی است که توسط دستور if بررسی کنید که آیا مادولس آن عدد بر مضربی که مورد نظر شماست صفر می‌شود یا خیر.

حل تمرین‌های ۱ تا ۴:

C#

using System;
class Solutions
{
    static void Main()
    {
        /* Solution 01 */
        Console.WriteLine("Even numbers from 0 to 100:");
        for (int i = 0; i <= 100; i++)
        {
            if (i % 2 == 0)
            Console.Write(i + "\t");
        }

        Console.WriteLine();
        Console.WriteLine();

        /* Solution 02 */
        Console.WriteLine("Counting backwards from 1 to 100:");
        for (int i = 100; i >= 1; i--)
        Console.Write(i + "\t");
        Console.WriteLine();
        Console.WriteLine();

        /*  Solution 03 */
        Console.WriteLine("Odd numbers from 0 to 100:");
        for (int i = 0; i < 100; i++)
        {
            if (i % 2 != 0)
            Console.Write(i + "\t");
        }
        Console.WriteLine();
        Console.WriteLine();

        /* Solution 04 */
        Console.WriteLine("Multiple of 5 from 0 to 100");
        for (int i = 0; i < 100; i++)
        {
            if (i % 5 == 0)
            Console.Write(i + "\t");
        }
        Console.WriteLine();
    }
}

توضیحات لازم در مورد چگونگی حل‌تمرین‌ها در همین قسمت داده شده است. تمرین شماره ۵ در قسمت بعد حل خواهد شد.