PDA

View Full Version : سوال: یکسری سوال در مورد حلقه ها ...



مهران رسا
یک شنبه 23 تیر 1387, 13:57 عصر
سلام .

می خواستم بدونم چرا جواب نهایی حلقه زیر عدد 2 میشه :


For i = 1 To 2
Print i
Next


ولی اگر print رو بیرون از حلقه بنویسیم نتیجه شمارش ، عدد 3 میشه ؟!!!!

به این صورت :


For i = 1 To 2
Next
Print i

مرسی ...

مهران رسا
یک شنبه 23 تیر 1387, 14:04 عصر
یک سوال دیگه در مورد شمارنده حلقه ها !!! . آیا میشه این مقدار رو در زمان چرخش حلقه تغییر داد ؟!!

مثلاً گفتیم For i = 1 to 10 ، آیا این 10 رو میشه در درون حلقه تغییر داد ؟!
و کلاً قوانینی که در این مورد هست چی هستن ...

ممنون .

Mbt925
یک شنبه 23 تیر 1387, 14:26 عصر
کار با حلقه ها و استنائات و مشکلات کار با اون ها مبحث گسترده ای رو در طراحی زبان ها تشکیل میده.

اول یه نکته ای رو در مورد ساختار حلقه ها میگم که در پاسخ سوالات بهمون کمک می کنه:





For i=1 to 10
Next


وقتی حلقه اجرا میشه:
1- شمارنده ی حلقه (i) اولین مقدار رو دریافت می کنه
2- مقدار i با مقدار پایانی حلقه مقایسه میشه :
- در صورتی که کوچکتر یا مساوی اون باشه کدهای داخل حلقه اجرا میشن
- در غیرز این صورت حلقه به پایان میرسه
3- بعد از اینکه کدهای حلقه اجرا شد، شمارنده حلقه افزایش پیدا می کنه (به اندازه ی Step حلقه)
و دوباره مرحله ی 2 تکرار میشه.

جواب سوال اول
آخرین مقداری که شمارنده میگیره و کدهای داخل حلقه هم اجرا میشه، مقدار 2 هست.

جواب سوال دوم
وقتی شمارنده مقدار 3 رو میگیره ، حلقه اجرا نمیشه (چون از مقدار پایانی حلقه بزرگتره)، بنابراین در پایان حلقه i مقدار 3 رو خواهد داشت.

نکته : مقدار شمارنده ی حلقه در پایان حلقه به اندازه ی گام حلقه از مقدار پایانی بیشتر خواهد بود.

جواب سوال سوم
بعضی از زبان ها اجازه ی تغییر مقدار شمارنده رو نمیدن (مثل پاسکال)
در وی بی میشه شمارنده رو تغییر داد ولی نمیشه مقدار پایانی حلقه رو تغییر داد.

مثلا در حلقه زیر تغییر j در داخل حلقه هیچ تاثیری در حلقه نخواهد داشت.





Dim i As Integer, j As Integer

j = 2

For i = 1 To 10

j = j+1
Print i

Next

mehdi_7070
یک شنبه 23 تیر 1387, 14:49 عصر
نکته : مقدار شمارنده ی حلقه در پایان حلقه به اندازه ی گام حلقه از مقدار پایانی بیشتر خواهد بود.
تذكر : البته اين مقدار پاياني ممكن است گاهي اوقات مقدار پاياني تعريف شده در حلقه متفاوت باشه .
مثلا :
For i = 1 To 100 Step 15
Next i
Print i
اينجا مقدار پاياني (براي اين محاسبه) 100 نيست . بلكه 91 است . بنابراين i مقدار 15+91 يعني 106 را چاپ مي‌كند نه 15+100 . علت اين هم كاملا واضح است . اگر قبل از Next دستور پرينت بگذاريد ، اين اعداد چاپ مي‌شود :1/16/31/46/61/76/91