زمان جاری : یکشنبه 30 اردیبهشت 1403 - 11:19 قبل از ظهر
نام کاربری : پسورد : یا عضویت | رمز عبور را فراموش کردم



lsg آفلاین



ارسال‌ها : 11
عضویت: 7 /12 /1391

تشکر شده : 5
پاسخ : 7 RE بخش بعدی
مثال ها :




الگوریتمی بنویسید که
اعداد 1 تا 1000 را چاپ کند ؟





توضیح :دقت کنید فردی که
این ذهنیت برایش پیش بیاید که به راحتی .پو به صورت دستی می توانیم به کامپیوتر
بگوییم ( اعداد 444،35،000،1،0 را چاپ کن ) و یا اینکه کلیه اعداد را بنویسیم و در
پایان دستور نمایش آن را صادر کنیم راه حل منطقی و درستی به نظر نمی آید . و اصولا
راه حل اول اصلا امکان پذیر نیست چون گفتیم که یک الگوریتم باید کاملا مشخص باشد و
سه نقطه (000) اصلا برای رایانه مفهومی ندارد . ولی راه حل دوم با صرف وقت زیاد (
نوشتن اعداد از 1 تا 1000)امکان پذیر است اما تنها در صورتی که به ما نگویند که
الگوریتمی بنویسید که اعداد 1 تا 10000000000 را چاپ کند


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


شروع


عدد
1 را در a قرار بده


a را چاپ کن .


4-a+1 را در a
قرار بده یا اینکه (a=a+1)


اگر
a>1001
باشد
آنگاه برگرد به خط 3 در غیر این صورت برو به 6


پایان
.


توضیح
: الگوریتم را باید به دقت بررسی کنیم . و حتما ابهاماتی برای شما پیش آمده است .
الگوریتم در خط 1 شروع شده و در خط 6 پایان می یابد . در خط 2 با یک تیر دو نشان
زده ایم . اول اینکه متغیر a را تعریف کرده ایم ثانیا
عدد 1 را به آن نسبت داده ایم . پس حال اگر برنامه عدد a را چاپ کند ، 1 را نمایش
خواهد داد . پس خط 3 عدد 1 را چاپ می کند . در مورد خط 4 باید توجه کنید که از
ویژگی که در مثال 1 گفته شد استفاده کرده ایم یعنی یک مقدار جدید با استفاده از
خود متغیر a به صورت a+1 ایجاد کرده و دوباره در a قرار داده ایم . این عمل موجب جایگزین شدن مقدار جدید به جای
مقدار قبلی در متغیر a می شود . ابتدا a که اکنون شامل عدد 1 است را با 1 جمع کرده (2)
و
سپس دوباره در a قرار می دهیم . این عمل باعث جایگزین شدن مقدار 2 به جای 1 در متغیر a می شود . پس بعد از پایان خط 4 ، متغیر a شامل عدد 2 خواهد بود . حال به سراغ خط اصلی یعنی خط 5 می رویم .
در خط 5 یک شرط با عبارت شرطی (اگر ... آنگاه ...در غیر اینصورت ...) چک می شود .
این عبارت ، یعتی ( اگر a>1001 باشد آنگاه برگرد به 3 ) یک حلقه ی تکرار بین
خطوط 3 تا 5 ایجاد میکند . یعنی تا زمانی که a که در هر بار اجرای حلقه یک واحد به آن اضافه می شود کوچکتر از
1001 باشد حلقه اجرا خواهد شد و زمانی که a
برابر 1001 باشد ، 1001 چاپ نشده و برنامه شرط در غیر اینصورت را اجرا خواهد کرد .
دقت کنید که نیازی به ذکر قسمت ( در غیر اینصورت ) نداشتیم . چون در صورت درست نبودن شرط برنامه خود به خود به
خط بعدی منتقل می شد و برنامه در خط 6 پایان می پذیرفت . اما در مورد اینکه چرا
عدد 1001 را نوشته ایم باید یک بار برنامه را همانند رایانه اجرا کنیم . فرض کنید
عدد a به 999 رسیده است و خط 3 را اجرا کرده و عدد 999 را نمایش داده
است . حال در خط چهارم مقدار a به
1000 می رسد . ما خط 5 را به دو صورت می توانستیم بنویسیم تا عدد 1000 را نیز چاپ کند . یکی a>1001
و
دیگری a

چهارشنبه 16 مرداد 1392 - 17:29
نقل قول این ارسال در پاسخ گزارش این ارسال به یک مدیر
پرش به انجمن :

theme designed for MyBB | RTL by MyBBIran.com