سلام .
می خواستم بدونم چرا جواب نهایی حلقه زیر عدد 2 میشه :
For i = 1 To 2
Print i
Next
ولی اگر print رو بیرون از حلقه بنویسیم نتیجه شمارش ، عدد 3 میشه ؟!!!!
به این صورت :
For i = 1 To 2
Next
Print i
مرسی ...
سلام .
می خواستم بدونم چرا جواب نهایی حلقه زیر عدد 2 میشه :
For i = 1 To 2
Print i
Next
ولی اگر print رو بیرون از حلقه بنویسیم نتیجه شمارش ، عدد 3 میشه ؟!!!!
به این صورت :
For i = 1 To 2
Next
Print i
مرسی ...
یک سوال دیگه در مورد شمارنده حلقه ها !!! . آیا میشه این مقدار رو در زمان چرخش حلقه تغییر داد ؟!!
مثلاً گفتیم For i = 1 to 10 ، آیا این 10 رو میشه در درون حلقه تغییر داد ؟!
و کلاً قوانینی که در این مورد هست چی هستن ...
ممنون .
کار با حلقه ها و استنائات و مشکلات کار با اون ها مبحث گسترده ای رو در طراحی زبان ها تشکیل میده.
اول یه نکته ای رو در مورد ساختار حلقه ها میگم که در پاسخ سوالات بهمون کمک می کنه:
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
تذكر : البته اين مقدار پاياني ممكن است گاهي اوقات مقدار پاياني تعريف شده در حلقه متفاوت باشه .نکته : مقدار شمارنده ی حلقه در پایان حلقه به اندازه ی گام حلقه از مقدار پایانی بیشتر خواهد بود.
مثلا :
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