در این بخش میخوام درمورد عملگرهای انتخاب(If) و تکرار(حلقه ها) صحبت کنم فرض کنید شما می خواهید برنامه بنویسید که نام افراد را در خود ذخیره کند در این برنامه فقط نام افراد بالای 17 سال می توانند ذخیره شوند بنابر این قبل از اینکه اطلاعات را ذخیره کنید (در مورد ذخیره کردن اطلاعات در فصل های بعدی صحبت خواهم کرد)باید در برنامه یک دستور شرطی به کار ببرید که اگر سن شخص بزرگتر از 17 سال بود سپس اطلاعات را ذخیره کن.
برای ادامه روی "ادامه متن" کلیک کنید.
در جدول شماره (1-4) لیست عملگرهای شرطی را آورده ام:
|
عملگر
|
توضیح
|
مثال
|
تنیجه
|
|
=
|
تساوی
|
3=2
|
نا درست
|
|
>
|
بزرگتر از
|
3<5
|
درست
|
|
<
|
کوچکتر از
|
6>3
|
درست
|
|
>=
|
بزرگتر یا مساوی
|
21=<45
|
درست
|
|
<=
|
کوچکتر یا مساوی
|
2=>1
|
درست
|
|
< >
|
نا مساوی
|
5<>5
|
نادرست
|
نتیجه عملگرهای شرطی یا درست است یا نادرست (TrueFalse)
یکی از مهمترین دستورات برنامه نویسی دستور If است.شکل کلی استفاده از دستور If بدین صورت است:
If شرط Then
دستورات ویژوال بیسیک
End If
هر دستور If باید یک End If داشته باشد.
در اینجا شرط همان مقداری است که میخواهیم چک کنیم که آیا درست است یا درست نیست.
حال ما میخواهیم همین دستور If را در برنامه ذخیره سازی اسامی افراد بالای 17 سال اعمال کنیم
If intAge > 17 Then
SaveData
End If
در برنامه ما می خواهیم کاری کنیم که اگر سن افراد زیر 17 سال بود به کاربر پیغام دهیم و به او بگوییم که سن شما زیر 17 سال است.در این حالت باید از یک دستور دیگر هم استفاده کنیم و آن Else (در غیر این صورت( است حالا کد قبلی را تکمیل تر میکنیم:
If intAge > 17 Then
SaveData
Else
MsgBox "Your Age is Under 17 Year"
End If
تحلیل کد بدین صورت است که اگر سن شخص بزرگتر از 17 سال بود سپس اطلاعات را ذخیره کن و در غیر این صورت به کاربر پیغام بده.
باز هم میتوان قطعه کد قبلی را تکمیل تر کرد . بدین صورت که افراد بالای 24 سال هم نمیتوانند ثبت نام کنند.پس قطعه کد قبلی را باز هم کامل تر میکنیم:
If intAge <= 24 Then
If intAge > 17 Then
SaveData
Else
MsgBox "Your Age is Under 17 Year"
End If
End If
به قطعه کدی که نوشته شده دقت کنید به این نوع دستورات If تو در تو می گویند.
دستور Select Case
برای اینکه بهتر دستور Select Case را درک کنید با یک مثال شروع می کنم پس یک پروژه جدید درست کنید و یک عدد CommandButton و یک عدد TextBox و یک عدد هم Label به فرم اضافه کنید . حال میخواهیم قطعه کدی برای CommandButton بنویسیم که 5 حرف اول حروف لاتین را مورد بررسی قرار دهد.به عنوان مثال اگر درون TextBox حرف A وارد شد درون Label چاپ شود که شما حرف A را وارد کرده اید و اگر B وارد شد به او بگوییم که شما حرف B را وارد کرده اید و الی آخر.
حتما با خود میگویید که این دستورات را می توان با دستور If هم نوشت ولی می دانید که اگر از دستور If استفاده کنیم باید چند مقایسه انجام دهیم:
If Text1.Text = "A" Then
Lable1.Caption = "you enter A Character
ElseIf Text1.Text = "B" Then
Lable1.Captio = "you enter B Character
.
.
.
End If
ولی این دستورات را می توان به وسیله دستور Select Case کم کرد به کد زیر که به وسیله دستور Select Case نوشته شده دقت کنید:
Select Case Text1.Text
Case "A"
Label1.Caption = "you enter A Character"
Case "B"
Label1.Caption = "you enter A Character"
Case "C"
Label1.Caption = "you enter C Character"
Case "D"
Label1.Caption = "you enter D Character"
Case "E"
Label1.Caption = "you enter E Character"
Case Else
Label1.Caption = "you enter Other Characters"
End Select
Case Else مانند Else دستور If است اگر هیچ کدام از کارکتر ها نبود دستور مورد نظر را اجرا کن.
حالا میخواهیم همین کار را بر روی اعداد هم انجام دهیم ولی با این تفاوت که اعداد 0 تا 10
11 تا 20 21 تا 30 31 تا 40 اگر وارد شده کد مورد نظر ما را اجرا کند.پس باید تغییراتی را در کد ایجاد کنیم:
Select Case Text1.Text
Case 0 To 10
…
Case 11 To 20
…
Case 21 To 30
…
Case 31 To 40
…
End Select
به قطعه کد بالا توجه کنید ما شرطهای خود را روی Textbox انجام میدهیم و می گوییم اگر اعداد وارد شده بین 0 تا 10 بود چه کاری انجام بده و اگر 11 تا 20 بود چه کدی را اجرا کن و الی آخر.
شما همچنین می توانید عملگر های شرطی هم با دستور Select Case استفاده کنید:
Select Case Text1.Text
Case Is >=30
…
Case Is >=20
…
Case Is >=10
…
Case Else
…
End Select
اگر داده مورد نظر بزرگتر مساوی 30 بود کد مورد نظر را اجرا کن.
حلقه ها
حلقه For
شکل کلی حلقه For بدین صورت است:
For شمارنده = شروع حلقه To پایان حلقه [Step تعداد قدم]
[کدها]
[خروج از حلقعه]
Next [شمارنده]
برای نمایش 10 عدد متوالی به وسیله پیغام به کاربر را به روش حلقه می نویسیم:
Dim I as Integer
For I = 1 To 10
MsgBox "Counter Is " & I
Next I
ما اول یک متغییر از نوع Integer تعریف کردیم برای استفاده در شمارنده و سپس گفتیم که حلقه ما از شماره 1 شروع شود و تا 10 ادامه پیدا کند و بعد از آن هم به وسیله یک پیغام به کاربر اعلام کردیم که در حال حاضر شمارنده چند است.و در پایان آخر حلقه را به وسیله کلمه Next I مشخص کردیم.
حالا ما میخواهیم کاری کنیم که حلقه ما از 10 تا 100 نمایش داده شود اما با این تفاوت که در هر چرخش 10 تا به شمارنده اضافه شود:
Dim I as Integer
For I = 10 To 100 Step 10
MsgBox "Counter Is " & I
Next I
در اینجا ما از کلمه Step استفاده کردیم و به حلقه گفتیم که در هر چرخش شمارنده 10 قدم به جلو(افزایش) پیدا کند در قطعه کد بالا در مجموع 10 بار بیشتر اجرا نمیشود و در هر بار اجرا 10 واحد به شمارنده اضافه می شود.
گاهی اوقات هم لازم است که در حین اجرای حلقه از ادامه حلقه جلوگیری کنیم و از حلقه خارج شویم:
Dim I as Integer
For I = 1 To 10
If I = 5 Then
MsgBox "Exit For"
Exit For
End If
Next I
در این قطعه کد اگر شمارنده به عدد 5 برسد از حلقه بیرون می آید و بقیه دستورات را از ادامه حلقه اجرا می کند.
حلقه Do .. While
حلقه Do بدین صورت است که تا وقتی که شرط بر قرار باشد حلقه ادامه پیدا می کند شکل کلی دستور بدین صورت است:
Do While condition
دستورات
Loop
مثال:
Dim intCounter As Integer
Do While intCounter <= 10
MsgBox intCounter
intCounter = intCounter +1
Loop
تحلیل قطعه کد بالا بدین صورت است که ابتدا یک متغییر شمارنده تعریف کردیم و سپس گفتیم که تا وقتی که شمارنده کوچکتر مساوی 10 بود پیغام بده و بعد از پیغام یک واحد به شمارنده اضافه کن و در آخر هم پایان حلقه را مشخص کردیم.توجه کنید که اگر به شمارنده اضافه نکینم حلقه ما هیچ وقت به پایان نخواهد رسید.
حلقه Do .. Until
حلقه Do Until هم مانند Do While است ولی با این تفاوت که ضد شرط است.
Dim I As Integer
Do
MsgBox "Counter Is: " & I
I = I + 1
Loop Until I > 10