زبان برنامه نویسی سی/حلقه do while و while: تفاوت میان نسخهها
محتوای حذفشده محتوای افزودهشده
جزبدون خلاصۀ ویرایش |
جزبدون خلاصۀ ویرایش |
||
خط ۱۶۰:
مثال بالا یک مثلث متساویالاضلاع به شکل یک هرم با کاراکتر ستاره ( استریسک ) در خروجی خطدستوری چاپ میکند . اما چگونه ؟ پس از ضمیمه نمودن فایل سرآیند stdio که standard input/output میباشد ( ورودی/خروجیهای استاندارد ) در تابع اصلی برنامه که برنامه را فرا میخواند و به اجرا میگذارد یعنی تابع main سه متغیر تعریف نمودهایم ( با نامهای i و j و rows ) با کمک تابع کتابخانهای printf که در stdio تعریف شدهاست چاپ میکنیم تعداد سطرها ( خطها ) را کاربر وارد کند ، سپس با کمک تابع کتابخانهای scanf که همچون printf در فایل سرآیند stdio تعریف شده است عدد را گرفته و در متغیر rows ذخیره میکنیم . سپس دستور میدهیم ( حکم میکنیم ) تا مقدار متغیر i یک باشد ( 1 ) و تا زمانی که i کوچکتر مساوی عدد وارد شده توسط کاربر است ( rows ) حلقه while بیرونی اجرا و تکرار شود . در این حلقه دو حلقه while دیگر نیز تعریف شدهاند . اولی ابتدا دستور میدهد تا مقدار i داخل j گذاشته شود و سپس تا زمانی که j از عدد وارد شده یعنی rows کوچکتر است فضای خالی ( space ) چاپ کند ( که با کمک ++j متغیر j مقدارش افزایش مییابد و در نهایت حلقه میشکند ) یعنی حلقه داخلی اول از i تا rows فضای خالی چاپ میکند . سپس دستور میدهیم ( حکم میکنیم ) تا مقدار 1 در j ذخیره شود تا در حلقه while داخلی و درونی دومی تا زمانی که j کوچکتر از یکی کمتر از دوبرابر i است استریسک چاپ کند که با کمک ++j مقدار j افزایش مییابد و حلقه میشکند ( اگر از جبر به یاد داشته باشید اعداد فرد را به صورت 2k-1 نشان میدهیم که اینجا به جای k از i استفاده نمودهایم ) سپس داخل حلقه while بیرونی خط میشکند و i یک واحد افزایش مییابد . نتیجه این میشود که i مرتب افزایش مییابد و j که در حلقه درونی اول مقدار i را میگیرد و تا rows ادامه میدهد تا فضای سفید چاپ کند در هر دفعه اجرای while بیرونی کمتر تکرار میشود ( اول 1 است و تا عدد وارد شده مثلا ۶ اجرا و تکرار میشود و در خط بعدی از ۲ شروع میکند که کمتر میشود ) درست بعد از فضاهای سفید به تعداد اعداد فرد ( و دو برابر i منهای یکی ) ، ستاره چاپ میشود و سپس خط میشکند و دوباره فضاهای سفید چاپ میشوند که مدام کمتر می شوند و در عوض ستارهها بیشتر میشوند . نتیجه کامپایل این قطعه کد ، برنامهای است که به تعداد خطوط وارد شده توسط کاربر ، یک مثلث متساویالاضلاع به شکل هرم چاپ میشود
'''توضیح :''' در مثال بالا اگر عدد ورودی ۲ باشد ، شکل ما چندان شبیه مثلث متساویالاضلاع نخواهد بود ، اما با اعداد ۴ ، ۵ ، ۶ یا ۷ که در هر سطر به صورت افزایشی با اعداد فرد ، استریسک ( ستاره ) چاپ مینمائیم ، شکل به دست آمده شبیه مثلث متساویالاضلاع خواهد شد
'''دقت کنید :''' همان طور که گفته شد میتوان داخل while یا do while حلقه for به کار برد و داخل حلقههای for میتوان while یا do while به کار بست . در پست بالا ما میتوانیم هر کدام از while ها را ( چه بیرونی و چه داخلیها ) به صورت for بنویسیم
|