حلقه های تودرتو

بازدید: 405 بازدید

گاهی اوقات لازم است که در یک حلقه، یک یا چند حلقه دیگر هم استفاده نمود. معروفترین مثال برنامه نویسی در مورد حلقه های تودرتو، نمایش جدول ضرب اعداد است:

 static void Main(string[] args)
        {
            int i,j;
            for (i = 1; i < 10; i++)
            {
                for (j = 1; j < 10; j++)
                    Console.Write("{0,4}", i * j);
                Console.WriteLine();
            }
            Console.ReadKey();
        }

 

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

مثال ۱: با استفاده از حلقه ی تو در تو برنامه ای بنویسید که شکل زیر را نمایش بدهد:

شکل حلقه تودرتو

برای تحلیل این سوال باید توجه کنیم که ۶ خط داریم و در خط اول، یک ستاره، در خط دوم، دو ستاره، در خط سوم، سه ستاره و نهایتا در خط ششم، شش ستاره داریم. پس واضح است که حلقه ی بیرونی که تعداد خطوط را نشان می دهد ۶ بار تکرار می شود و درون این حلقه به اندازه شماره خط ستاره چاپ می شود. برنامه ی آن به صورت زیر خواهد بود:
 static void Main(string[] args)
        {
            int i, j;
            for (i = 1; i <= 6; i++)
            {
                for (j = 1; j <= i; j++)
                    Console.Write("*");
                Console.WriteLine();
            }
            Console.ReadKey();
        }

مثال ۱: با استفاده از حلقه ی تو در تو برنامه ای بنویسید که شکل زیر را نمایش بدهد:

شکل حلقه for

با توجه به شکل فوق می فهمیم که کلا ۶ خط داریم که در خط اول پنج فاصله و یک ستاره داریم. در خط دوم چهار فاصله و سه ستاره داریم، در خط سوم سه فاصله و پنج ستاره داریم و به همین صورت در خط ششم صفر فاصله و یازده ستاره داریم.
پس حلقه ی بیرونی ۶ بار تکرا می شود که در هر تکرار رسم یک خط از شکل کامل می شود.
حلقه ی درونی اول برای فاصله ها می باشد، در این حلقه برای خط i ام  ۶ منهای i تا فاصله رسم می کند.
حلقه ی درونی دوم برای رسم ستاره ها قرار گرفته است. در این حلقه از متغییر کمکی a که در ابتدا برابر یک است و هر بار ۲ تا به آن اضافه می شود، استفاده می کنیم.
 static void Main(string[] args)
        {
            int i, j, k = 1;
            for (i = 1; i <= 6; i++)
            {
                for (j = 1; j <= 6 - i; j++)
                    Console.Write(" ");
                for (j = 1; j <= k; j++)
                    Console.Write("*");
                k = k + 2;
                Console.WriteLine();
            }
            Console.ReadKey();
        }

 

ادامه مطلب