ساختارهای تكرار در ویژوال بیسیک

حلقه ها و انواع آن :

حلقه محدوده ای است که دارای ابتدا و انتها می باشد.

به دو نوع تقسیم می شوند:

1-حلقه های مشخص: حلقه هایی هستند که تعداد دفعات تکرار آن مشخص است

2-حلقه های نامشخص: حلقه هایی هستند که تعداد دفعات تکرار آن مشخص نیست .



1- انواع حلقه های مشخص

حلقه های مشخص به دو دسته تقسیم میشوند

الف : حلقه های مشخص افزایشی ب: حلقه های مشخص كاهشي

الف : حلقه های مشخص افزایشی : حلقه هایی هستند که تعداد دفعات تکرار آن مشخص بوده و در هر بار دورزدن

مقدار آن افزایش می یابد .

شکل کلی حلقه for...next افزایشی :

مقدارپایانی to مقدار اولیه = متغير for

---------------------

---------------------

--------------------- next

برنامه ای بنویسید که اعداد 1 تا 100 را چاپ کند.

cls

for i=1 to 100

print i

next i

end

برنامه ای بنویسید که 10 عدد را از ورودی دریافت کرده و با هم جمع کند.

cls

for i=1 to 10

input a

b=b+a

next i

print b

برنامه فاکتوریل عدد ورودی را بنویسید.

cls

b=1

input a

for i=1 to a

b=b*i

next i

print b



اگر بخواهیم حلقه در هر بار اجرا شدن طول گامی بیشتر از یک داشته باشد می توانیم از کلمه رزرو شده step

استفاده کنیم .

برنامه ای بنویسید که اعداد زوج 1 تا 100 را چاپ کند.

cls

for i=0 to 100 step 2

print i

next i

end

نکات حلقه for افزایشی :

1- اگر کاربر به اشتباه مقدار اولیه را بیشتر از مقدار پایانی بدهد حلقه اصلا اجرا نمی شود .

for i=100 to 10

next

2-اگر مقدار اولیه و پایانی با هم برابر باشند حلقه یک بار انجام می شود .

for i=0 to 0 for j=10 to 10

next i next j

3-زمانی که حلقه اجرا می شود بعد از پایان حلقه مقدار متغیر حلقه با خروجی حلقه برابر نیست . یعنی در پایان

حلقه مقدار پایانی + طول گام خواهد بود .

cls

for i=1 to 10

print i

next i

end

مقدار خروج از حلقه + طول گام --- > print i

11 = 1 + 10

4- حلقه های for میتواند طول گامی , مقدار اولیه و پایانی اعشاری باشند . یعنی میتوانیم به صورت ممیز بدهیم .

cls

for i= .و5 to 3.5 step .5

print i

next i

5- در حلقه های for میتوانیم یک عملیات محاسباتی را برای مقدار اولیه و مقدار پایانی مشخص باشد .

for i=(4*2)-3 to 7

print "hello user "

next i

6- مقدار اولیه و پایانی میتواند اعداد منفی باشد با این نکته که مقدار اولیه باید کمتر از مقدار پایانی باشد .

for h= -100 to 5

next h

حلقه 111 بار تکرار می شود .

نمونه تست کنکور:

خروجی برنامه معادل کدام گزینه است ؟

k=1

for c=1 to 4

k=c*(c+1)+k

next c

print k

الف : 4 ب : 9 ج : 21 د: 41

جواب : گزینه د

خروجی برنامه معادل کدام گزینه است ؟

m=0

for c=1 to 20

m=m+c

next c

print m

الف : 210 ب : 200 ج : 100 د : 55

جواب : گزینه الف

ب : حلقه های کاهشی

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

شکل کلی دستور :

for مقدار پایانی=متغیر to مقدار اولیه step عدد منفی

next متغیر



برنامه ای بنویسید که اعداد 10تا 1 را چاپ کند .

cls

for h = 10 to 1 step -1

print h

next h

زمانی که بیرون از حلقه for می آییم متغیر حلقه برابر است با خروجی حلقه منهای طول گام ..

در مثال بالا با عدد یک خارج شده و چون طول گام -1 دارد در خارج از حلقه متغیر 0 است .

متغیر حلقه نباید در بدنه حلقه مقدار دهی شود .



حلقه های تو درتو : حلقه هایی هستند که یک حلقه اول شروع می شود و داخل آن یک حلقه دیگر شروع میشود.

شکل کلی حلقه های تو در تو :

for i=1 to 10

for g=1 to 10

---------------

---------------

next j

next i

برنامه جدول ضرب را بنویسید .

cls

for h=1 to 10

for g=1 to 10

print g*h

next g

next h

نمونه تست کنکور:

برنامه بالا چند بار تکرار می شود .

cls

for i=1 to 3

for j=6 to 1 step -1

print "test "

next j

next i

الف : 3 ب: 6 ج : 9 د : 18

جواب : گزینه د





2- حلقه های نا مشخص :



حلقه های نا مشخص : حلقه هایی هستند که اول و آخر آنها معلوم می باشد ولی تعداد تکرار آن مشخص نمی باشد .



انواع حلقه های نا مشخص : 5 نوع حلقه های نا مشخص وجود دارند که به ترتیب عبارتند از :

1- while ...wend

این حلقه اول و پایان آن مشخص میباشد ولی تعداد دفعات تکرار آن مشخص نمیباشد .

while (شرط)

---------------

----------------

wend

اگر شرط درست باشد به داخل حلقه رفته و اگر نادرست باشد از آن خارج میشود .

مثال :

برنامه ای بنویسید که تا زمانی که 0 وارد نشده عدد دریافت نموده و بزرگترین آن را نمایش دهد .

cls

input a

max = a

while a <> 0

input a

if a > max then max = a

wend

print max

2- حلقه های نا مشخص DO while ... loop

شکل کلی این حلقه :

do while (شرط)

--------------

--------------

loop

اگر شرط درست باشد به داخل حلقه رفته و اگر نادرست باشد از آن خارج میشود .

3- حلقه های نا مشخص DO ... loop while

در این نوع حلقه شرط در پایان حلقه چک میشود و تفاوت آن با حلقه های قبلی آن است که حداقل یک تا n بار تکرار

میشود .

شکل کلی این حلقه :

do

--------------

--------------

loop while (شرط)

اگر شرط درست باشد به داخل حلقه رفته و اگر نادرست باشد از آن خارج میشود .

i=1

do while i<=10

print i

i=i+1

loop

4- حلقه های نا مشخص DO until ... loop

این حلقه دقیقا بر عکس while ...wend عمل میکند یعنی تا زمانی ادامه کارمیدهد که شرط اشتباه است . حلقه بین صفر تا n بار تکرار می شود .

do until (شرط)

--------------

--------------

loop

اگر شرط نا درست باشد به داخل حلقه رفته و اگردرست باشد از آن خارج میشود .

مثال :

cls

i=1

do until i>= 10

print i

i=i+1

loop

end

5- حلقه های نا مشخص DO...loop until

این حلقه دقیقا بر عکس while ...wend عمل میکند یعنی تا زمانی ادامه کارمیدهد که شرط اشتباه است . حلقه بین یک تا n بار تکرار می شود .

do

--------------

--------------

loop until (شرط)

اگر شرط نا درست باشد به داخل حلقه رفته و اگردرست باشد از آن خارج میشود .

مثال :

cls

i=1

do

print i

i=i+1

loop until i>= 10

end

خروجی برنامه زیر را بنویسید .

input a,b

i=1

while b > 0

print a mod 10

a = a \ 10

i = i + 1

b = b - 1

wend

خروجی : 7 2 1