آموزش #C - جلسه چهاردهم
تاریخ انتشار:۱۳:۱۷ ۱۳۹۸/۹/۱۶

آموزش #C - جلسه چهاردهم


آشنایی کامل با الگوریتم و فلوچارت حلقه های for تو در تو همراه با 5 تمرین


در قسمت سیزدهم با دستور goto و توضیحات تکمیلی دستور switch آشنا شدید. اگر به‌یاد داشته باشید در قسمت نهم با حلقه‌ی for آشنا شدیم. تا به این‌جا ما تنها با یک حلقه‌ی for و در یک سطح کار می‌کردیم ولی اکنون قصد داریم با حلقه‌های for تودرتو آشنا شویم.




به مثال زیر و خروجی آن دقت کنید تا در ادامه به شرح و تفصیل آن بپردازیم:



;using System
class Example
}
    ()static void Main
    }
        for (int i = 1; i < 10; i++)
        }
            for (int j = 1; j <= i; j++)
            }
                ;Console.Write(j)
            {
            ;()Console.WriteLine
        {
    {
{



خروجی:







شاید اگر با دقت تمام خودتان این برنامه را تجزیه و تحلیل کنید به ماهیت و چگونگی آن پی ببرید اما بهتر است توضیحی کامل در مورد این برنامه داده شود. هنگامی‌که حلقه‌ها تودرتو می‌شوند شامل یک حلقه‌ی داخلی و یک حلقه‌ی خارجی هستند که حلقه‌ی داخلی کاملاً در حلقه‌ی خارجی قرار دارد. اگر به فلوچارت زیر دقت کنید کاملاً متوجه خواهید شد که چه اتفاقی در حلقه‌های تودرتو می‌افتد:




در فلوچارت بالا دیاگرام خاکستری رنگ، حلقه‌ی داخلی (inner loop) است که درون حلقه‌ی خارجی (outer loop) قرار دارد. همان‌طور که می‌بینید ابتدا شرط حلقه‌ی خارجی بررسی شده و در صورت true بودن وارد حلقه‌ی داخلی می‌شود (در واقع تمام حلقه‌ی داخلی، بدنه‌ی حلقه‌ی خارجی است). اکنون شرط حلقه‌ی داخلی بررسی شده و تا زمانی‌که شرط true است بدنه‌ی حلقه‌ی داخلی اجرا می‌شود. به‌محض این‌که شرط حلقه‌ی داخلی false شود کامپایلر به ابتدای حلقه‌ی خارجی برمیگردد و متغیر کنترل‌کننده‌ی حلقه‌ی خارجی را به‌روز رسانی کرده و مجدداً شرط حلقه‌ی خارجی را بررسی می‌کند که در صورت true بودن دوباره حلقه‌ی داخلی اجرا شده و در صورت false بودن اجرای حلقه‌های تودرتو پایان می‌یابد.
در مثال ابتدای مقاله، در حلقه‌ی for خارجی، متغیر i شامل مقدار ۱ بوده که کمتر از ۱۰ است بنابراین شرط برقرار بوده و کام‍‍‍‍‍‍‍‍‍‍‍‍‍‍پایلر وارد حلقه می‌شود. درون این حلقه (حلقه‌ی خارجی)، حلقه‌ی دیگری قرار دارد (حلقه‌ی داخلی) که شامل متغیر j با مقدار ۱ است. در قسمت condition حلقه‌ی داخلی بررسی می‌شود که مقدار j کوچک‌تر یا مساوی مقدار i باشد. در این‌جا مقدار j و i هردو برابر با ۱ هستند بنابراین شرط برقرار است و کامپایلر وارد حلقه‌ی داخلی می‌شود. درون حلقه‌ی داخلی، مقدار j چاپ شده سپس متغیر کنترل‌کننده‌ی حلقه‌ی داخلی به‌روز رسانی می‌شود (++j) و شرط حلقه‌ی داخلی بررسی خواهد شد. همان‌طور که می‌دانید اکنون مقدار j برابر با ۲ و مقدار i برابر با ۱ است. بنابراین دیگر شرط برقرار نبوده و برنامه از حلقه‌ی داخلی خارج می‌شود.

در خط بعد، دستور ()Console.WriteLine خروجی برنامه را به خط جدید سوق می‌دهد.

خروجی برنامه تا این‌جا (مرحله‌ی اول):






اکنون از بلاک حلقه‌ی داخلی خارج شدیم ولی هنوز در بلاک حلقه‌ی خارجی قرار داریم. پس متغیر کنترل‌کننده‌ی حلقه‌ی خارجی به‌روز رسانی شده و شرط حلقه‌ی خارجی ارزیابی می‌شود. پس از برقراری شرط، برنامه مجدداً وارد حلقه شده و شرط حلقه‌ی داخلی را ارزیابی می‌کند. اکنون مقدار j برابر با ۱ و مقدار i نیز برابر با ۲ است (متغیر j روی حلقه‌ی داخلی مجدداً برابر با ۱ شده و هربار که برنامه می‌خواهد از نو وارد حلقه شود متغیر کنترل‌کننده‌ی آن به اصطلاح ریست – Reset می‌شود). همان‌طور که می‌بینید شرط برقرار است و برنامه وارد بدنه‌ی حلقه‌ی داخلی می‌شود و مقدار j را در خروجی چاپ می‌کند. سپس متغیر کنترل‌کننده‌ی حلقه‌ی داخلی به‌روز رسانی شده (برابر با ۲ می شود) و دوباره شرط بررسی می‌شود. اکنون i و j هردو برابر با ۲ هستند پس شرط برقرار است و یک‌بار دیگر مقدار j چاپ خواهد شد.


خروجی برنامه در مرحله‌ی دوم:





خروجی برنامه در مرحله‌ی سوم:




خروجی برنامه در مرحله‌ی چهارم:




این روند همین‌طور ادامه دارد تا زمانی‌که برنامه به مرحله‌ی نهم برسد و شرط حلقه‌ی خارجی نقض شود:





تمرین

تمرین شماره ۶: برنامه‌ای بنویسید که شکل مثلث قائم‌الزاویه را توسط کاراکتر * چاپ کند (سایز مثلث را از کاربر بگیرید).


نمونه:






تمرین شماره ۷: برنامه‌ای بنویسید که شکل مثلث متساوی‌الساقین را توسط کاراکتر * چاپ کند (سایز مثلث را از کاربر بگیرید).

نمونه:




تمرین شماره ۸: برنامه‌ای بنویسید که دو عدد (پایه و توان) را از کاربر گرفته و عدد اول را به توان عدد دوم برساند.

تمرین شماره ۹: توسط دستور switch یک فرهنگ لغت کوچک بسازید.

تمرین شماره ۱۰: توسط کاراکتر █ یک مستطیل طراحی کنید. (سایز مستطیل را از کاربر بگیرید).

تمرین شماره ۱۱: برنامه‌ی جدول ضربی بنویسید که طول و عرض جدول را از کاربر بگیرد و جدول را نمایش دهد.

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






منبع:webtarget


نظر به مطلب
نام:
ایمیل:
متن: 500 حرف دیگر میتوانید تایپ کنید
کد امنیتی: 79008