بیایید نگاهی دوباره به برنامه ای که در فصل قبل نوشتیم، بیاندازیم:
i = 1
:start
TextWindow.WriteLine(i)
i = i + 1
If (i < 25) Then
Goto start
EndIf
این برنامه اعداد ۱ تا ۲۴ را به ترتیب چاپ می کند. فرآیند افزایش یک متغیر در برنامه نویسی بسیار رایج است که زبان های برنامه نویسی معمولاً روش آسان تری برای انجام این کار ارائه می دهند.
برنامه زیر معادل برنامه فوق است:
For i = 1 To 24
TextWindow.WriteLine(i)
EndFor
خروجی این برنامه به شکل زیر است:
شکل ۱-۵ : استفاده از حلقه For
همانطور که مشاهده می کنید ما یک برنامه ۷ خطی را به یک برنامه ۳ خطی کاهش داده ایم که دقیقاً کار همان برنامه ۷ خطی را انجام می دهد!
قبلاً گفتیم که معمولاً چندین روش برای انجام یک کار وجود دارد و این یک مثال از همین نوع است.
For..EndFor در اصطلاح برنامه نویسی یک حلقه نامیده می شود.
این نوع حلقه به شما اجازه می دهد که یک متغیر را بگیرید، به آن یک مقدار اولیه و یک مقدار پایانی بدهید و اجازه دهید که رایانه متغیر را برای شما افزایش دهد.
هر بار که رایانه متغیر را افزایش می دهد، دستورات بین For و EndFor اجرا می گردند.
در حلقه For شما می توانید کاری انجام دهید که متغیر در هر بار به جای ۱ ، ۲ یا بیشتر افزایش یابد.
در مثال زیر همه اعداد فرد بین ۱ و ۲۴ را با استفاده از حلقه For چاپ کرده ایم:
For i = 1 To 24 Step 2
TextWindow.WriteLine(i)
EndFor
شکل ۲-۵ : چاپ اعداد فرد بین ۱ و ۲۴
قسمت Step 2 از دستور For به رایانه می گوید که مقدار i را به جای ۱ ، دو تا دو تا افزایش دهد. با استفاده از Step می توانید هر افزایشی را که می خواهید مشخص نمایید.
حتی می توانید یک مقدار منفی برای Step تعیین کنید و رایانه را وادار به شمارش معکوس نمایید.
به این مثال توجه کنید:
For i = 10 To 1 Step -1
TextWindow.WriteLine(i)
EndFor
شکل ۳-۵ : شماره معکوس ۱۰ تا ۱
حلقه While
حلقه while یکی دیگر از روشهای استفاده از حلقه می باشد که در آن تعداد دفعات اجرای دستورات داخل حلقه، از قبل مشخص نمی باشد.
در حالی که یک حلقه For برای تعداد دفعات از پیش تعریف شده اجرا می شود، حلقه while تا زمانی اجرا می شود که یک شرط معین درست باشد.
در مثال زیر، یک عدد را تا زمانی که بزرگتر از ۱ باشد، نصف می کنیم:
number = 100
While (number > 1)
TextWindow.WriteLine(number)
number = number / 2
EndWhile
شکل ۴-۵ : استفاده از حلقه While
در برنامه بالا، مقدار ۱۰۰ را به متغیر number اختصاص می دهیم و حلقه while را تا زمانی که number بزرگتر از ۱ باشد، اجرا می کنیم.
در داخل حلقه، number را چاپ می کنیم و سپس آن را بر دو تقسیم می کنیم.
همانطور که انتظار می رود، خروجی برنامه اعدادی هستند که به تدریج یکی پس از دیگری نصف می شوند.
نوشتن این برنامه با استفاده از حلقه For بسیار سخت خواهد بود، زیرا نمی دانیم این حلقه چند بار اجرا می شود.
با یک حلقه while، بررسی یک شرط آسان است و می توانید از رایانه بخواهید که حلقه را ادامه دهد یا از آن خارج شود.
جالب است بدانید که هر حلقه while را می توان در یک عبارت If..Then باز کرد. به عنوان مثال، برنامه فوق را می توان به صورت زیر بازنویسی کرد، بدون اینکه بر نتیجه نهایی تأثیر بگذارد:
number = 100
startLabel:
TextWindow.WriteLine(number)
number = number / 2
If (number > 1) Then
Goto startLabel
EndIf
نکته: در واقع، رایانه به صورت داخلی هر حلقه while را به عباراتی بازنویسی می کند که از If..Then به همراه یک یا چند دستور Goto استفاده می کنند.