PDA

View Full Version : سوال: چگونگی حل کردن حلقه ها ؟



abbasazarpikan
پنج شنبه 16 خرداد 1387, 07:44 صبح
For i = 3 To 1
For j = 1 To 4
Print i
Next j
Next i


دوستان طریقه حل کردن حلقه ها اگه لطف کنید و بگید ممنون میشم !!!!:لبخندساده::لبخندساده:

mpmsoft
پنج شنبه 16 خرداد 1387, 08:46 صبح
دوست عزیز می شه بیشتر توضیح بدید منظورتون چیه ؟ من یه تغییر کوچیک تو کدت دادم

For i = 3 To 1 Step -1

مهران رسا
پنج شنبه 16 خرداد 1387, 10:34 صبح
طریقه حل کردن خاصی نداره !

شما باید ببینی هر کدوم از حلقه هات چند بار تکرار میشن . برای مثال حلقه داخلی j 4 بار تکرار میشه و چون خود j درون حلقه i قرار گرفته و حلقه i خودش 3 بار اجرا میشه در نتیجه کلاً دستوراتی که بین j قرار بگیرن 12 بار تکرار میشن . یعنی 3*4 !

حالا دستور Print میاد i رو چاپ می کنه . i فقط 3 حالت داره : 3 و2 و1 ! ولی چون دستور Print در حلقه j (حلقه داخلی) نوشته شده ، هر باری که از i یه دونه کم میشه ، حلقه j اون رو 4 بار چاپ می کنه .

برای روشن تر شدن موضوع برنامه رو با F8 اجرا کن و خط به خط برنامه رو چک کن . با نگه داشتن موس روی متغیر ها ، می تونی مقدار اونها رو مشاهده کنی ...

.:KeihanCPU:.
پنج شنبه 16 خرداد 1387, 12:26 عصر
منم که منظور شما رو از حل نفهمیدم
ولی فکر میکنم شما اگه بجای دستور پرینت مثلا بیای بنویسی
X=X+1
Print X
مشکلت حل میشه

abbasazarpikan
پنج شنبه 16 خرداد 1387, 12:30 عصر
بابت راهنمایتون ممنون M8SPY عزیز
اگه لطف کنید یه مثال دیگه بزنید ممنون میشم
لطف عالی مستدام باشد

bobrus
پنج شنبه 16 خرداد 1387, 13:28 عصر
طریقه حل کردن خاصی نداره !

شما باید ببینی هر کدوم از حلقه هات چند بار تکرار میشن . برای مثال حلقه داخلی j 4 بار تکرار میشه و چون خود j درون حلقه i قرار گرفته و حلقه i خودش 3 بار اجرا میشه در نتیجه کلاً دستوراتی که بین j قرار بگیرن 12 بار تکرار میشن . یعنی 3*4 !

حالا دستور Print میاد i رو چاپ می کنه . i فقط 3 حالت داره : 3 و2 و1 ! ولی چون دستور Print در حلقه j (حلقه داخلی) نوشته شده ، هر باری که از i یه دونه کم میشه ، حلقه j اون رو 4 بار چاپ می کنه .

برای روشن تر شدن موضوع برنامه رو با F8 اجرا کن و خط به خط برنامه رو چک کن . با نگه داشتن موس روی متغیر ها ، می تونی مقدار اونها رو مشاهده کنی ...

ديگه از اين واضح تر چه توضيحي مي خواي بهتره شما يكمي كتاب بخوني و اول هم الگوريتم نويسي رو ياد بگيري چون اين سوال شما ساده ترين كاريه كه يه برنامه نويس بايد بلد باشه و اين سوال يعني اينكه شما يه دفعه بدون مطالعه و مقدمه زدي وسط شكم برنامه نويسي
شرمنده اميدوارم ناراحت نشده باشي بخاطر خودت گفتم

mehdi_7070
پنج شنبه 16 خرداد 1387, 19:25 عصر
روش‌های کلی شمارش تعداد تکرار حلقه‌ها

در مورد شمارش تعداد تکرار حلقه‌ها چند تا نکته هست که اینجا می‌نویسم :

1- روش محاسبه :
For i=1 to 12 step 3
مقدار اولیه را از مقدار نهایی کم می کنی (مثلا اینجا 1-12=11) بعد بر مقدار پرش تقسیم می‌کنی (3\11=3) که البته می‌بینی از تقسیم با خارج قسمت صحیح ( \ ) استفاده شد . بعد با 1 جمع کنی (3+1=4)
و اگه امتحان کنی می‌بینی که 4 بار مثلا دستور چاپ تکرار میشه .

2- این حلقه را در نظر بگیر :
For i = -1 To -12 Step 3
این حلقه جواب ندارد . در صورتی جواب دارد که مقدار پرش منفی باشد . یعنی اگر مقدار نهایی از مقدار اولیه بزرگتر بود در صورتی حلقه جواب دارد که میزان پرش منفی باشد .

3- این حلقه را در نظر بگیرید :
For i = -1 To -12 Step -3
چون میزان تکرار یک حلقه عددی مثبت هست پس در این حالت باید قدر مطلق "مقدار اولیه - مقدار نهایی" را حساب کنید که باز هم همون 11 میشه .

4- برای محاسبه حلقه‌های تو در تو باید از داخلی‌ترین حلقه شروع کنید .

اوبالیت به بو
شنبه 18 خرداد 1387, 01:32 صبح
(توضيحش با خودتون) حلقه ها:

معين
نامعين
معمولاً حلقه ها رو حل نمي كنن بلكه مي شمارن.
براي شمارش حلقه ها اگر:

صعودي باشد:

HighBound - LowBound / Step + 1
http://www.barnamenevis.org/forum/images/icons/icon4.gif Step بايد مثبت باشد.

نزولي باشد:

LowBound - HighBound / Step + 1
http://www.barnamenevis.org/forum/images/icons/icon4.gif Step بايد منفي باشد.
LowBound : حد اول
HighBound : حد آخر
Step : همون گام افزايشي خودمون
http://www.barnamenevis.org/forum/images/icons/icon2.gif ستاره چند بار چاپ مي شود؟


For i = 1 To 5
For j = -4 To -8 Step -1
For k = 3 To 7
Print "*";
Next k
Next j
Print
Next i

حلقه ها رو بشمار:


i = 5 - 1 / 2 +1
j = -4 - (-8) /2 +1
k = 7 - 3 / 2 + 1
Print = i + j + k = 3 + 3 + 3 = 9

mehdi_7070
یک شنبه 19 خرداد 1387, 11:04 صبح
ستاره چند بار چاپ مي شود؟


For i = 1 To 5
For j = -4 To -8 Step -1
For k = 3 To 7
Print "*";
Next k
Next j
Print
Next i

حلقه ها رو بشمار:


i = 5 - 1 / 2 +1
j = -4 - (-8) /2 +1
k = 7 - 3 / 2 + 1
Print = i + j + k = 3 + 3 + 3 = 9


من فكر كنم اشتباه شد . چون :
i = 5 - 1 / 1 + 1 = 5
j = -4 - (-8) / -1 + 1 = 5
k= 7 - 3 / 1 + 1 = 5
حالا بايد براي محاسبه‌ي تعداد كل از اصل ضرب استفاده كرد كه ميشه :
print = i * j * k = 5 * 5 * 5 = 5^3 = 125