دستورات شرطی
عملگرهای منطقی: با عملگرهل مقایسه ای می توان دو یا چند مقایسه شرطی را باهم تکرار کرد
AND: این عملگر همان معنی "و" را میدهد مثال:
Dim a,b,RE As Integer
a=text1
b=text2
RE=(a>2) And (b<4)
یعنی اینکه متغیر RE برابر a بزرگتر از 2 و b کوچکتر از 4 است که a برابر text1 و b برابر text2 پس هر چه مقدار عددی داخل این دو Textbox قرار گیرد برابر متغیرهای aوb میشود که متغیر RE برابر آن مقدار هایی است که a>2 باشد وb<4 باشد
OR: این عملگر معنی "یا" می دهد مثال:
RE=(a>2) Or (b<4)
در اینجا متغیر RE برابر a هایی است که بزرگتر از 2 باشد یا b هایی که کو چکتر از 4 باشند
Not: ایم عملگر برای نفی ارزش یک عبارت است .این عملگر ارزش عبارت را به عکس آن تبدیل می کند.
RE=Not (b<4)
در اینجا متغیر RE برابر b هایی که کوچکتر از 4 باشد نیست
Xor:
با Xor می توان دو گزینه انحصاری را مقایسه کرد. اگر بیش از یکی ازگزینه های Xor درست باشد ، کل عبارت نادرست خواهد شد.
شکل کلی دستور If
IF شرط Then
دستور
Else
دستور
End If
توضیح: دستورIf به این صورت است که ما یک شرط می گذاریم اگر آن شرط انجام شد آنگاه آن دستور انجام شود در غیر این صورت یک دستور دیگر را انجام شود
به مثال توجه کنید:
Dim Max As Integer
If val(text1)>val(text2) Then
Max =text1
Else
Max=text2
End If
Label1.caption=Max
توضیح مثال بالا:
مثال بالا این را می گوید که اگر عدد داخل Text1 بزرگتر از عدد داخل Text2 باشد آنگاه
متغیر Max برابر Text1 شود ولی در غیر این صورت متغیر Max برابر Text2 شود
و در آخر متغیر Max بعد از مقایسه بین دو عدد که داخل Text1وText2 قرار می گیرند بزرگترین عدد را انتخاب می کند و در Label1 نمایش می دهد.
مثال:
If text1.text="shakhsi" And text2.text ="1371" Then
Form1.hide
Form2.show1
Else
Msgbox("رمز عبور نادرست است",”اخطار ”)
End
End If
توضیح مثال بالا:
مثال بالا یک برنامه رمزعبور است که اگر کلمه shakhsi داخل Text1 و 1371 را داخل Text2 قرار دادیم آنگاه Form1 راپنهان کند و Form2 را برای ما نمایش می دهد اما در غیر این صورت یعنی اگر این شرط انجام نشد پیغام می دهد که رمز عبور نادرست است و از برنامه خارج میشود.
دستورIf تو در تو:
شکل کلی آن به صورت زیر است:
IF 1شرط Then
دستور1
ElseIf 2شرط Then
دستور2
Else
دستور3
End If
توضیح : اگر شرط1 انجام شد آنگاه دستور1 انجام شود / درغیر این صورت اگر شرط2 انجام شد آنگاه دستور2 انجام شود/ درغیر این صورت دستور3 انجام شود
مثال: ویژوال بیسیک را باز کنید و سه عدد Text با نام های Text1,Text2,Text3 روی فرم قرار دهید
یک Label به نام Label1 بر روی فرم خود و یک Command با نام Command1 روی فرم خود قراردهید بر روی Command1 دابل کلیک کنید و در قسمت Cod این را تایپ کنید:
Dim max As Integer
If Val(Text1) > Val(Text2)>val(Text3) Then
max = Text1
ElseIf Val(Text3) > Val(Text2) Then
max = Text3
Else
max = Text2
End If
Label1.Caption = max
خروجی این برنامه مقایسه بین 3 عدد است که بزرگترین عدد در متغیر Max قرار می گیرد وهمین متغیر در Label1 بر روی فرم نمایش داده میشود.
توضیح مثال بالا: ابتدا متغیر Max را تعریف می کنیم که از نوع داده Integer باشد بعد می گوییم اگر عدد داخل Text1 بزرگتر از عدد داخل Text2 وText2بزرگتر ازText3 بود آنگاه متغیر Max ما برابرText1 شود
درغیراین صورت اگرعدد داخل Text3 بزرگتر از عدد داخل Text2 بود آنگاه Max برابر Text3 شود
در غیر این صورت max برابرText2 شود و در آخرمتغیر ما یعنی Max در Label1 نمایش داده شود.
دستورSelect Case
اگر تعداد شرط های بیش از دو تا بوداز این دستور استفاده می شود:
شکل کلی این دستور به صورت زیر است:
Select Case متغیر یا عبارت
Case شرط 1
مجموعه دستورات1
Case شرط 2
مجموعه دستورات 2
.
.
.
Case Else
در صورتی که شرط ها انجام نشد این مجموعه دستورات انجام شود
End Select
مثال:
Dim amal as String
amal=Text1.text
Select Case amal
Case "*"
Label1.caption=""این علامت ضرب است
Case"/"
Label1.caption="این علامت تقسیم است"
Case "+"
Label1.caption=""این علامت جمع است
Case"-"
Label1.caption="این علامت منها است"
Case Else
Label1.caption="جزء چهار عمل اصلی نیست"
End Select
توضیح این مثال: خروجی مثال بالا این است که اگر یکی از چهار عمل اصلی ریاضی را در Text1 وارد کنیم نام آن در Label1 نوشته می شود
در این مثال متغیر amal با نوع داده String تعریف شده بعد آنرا برابرText1 قرار داده (amal=text1.text)بعد متغیر را طبق دستور Select case جلوی Select Case قرار داده وجلوی هر Case یک شرط قرار داده است و پایین آن یک دستور را مثلاً Case "+" این شرط را می گذارد که اگر متغیر ما (amal) برابر + قرار گرفت آنگاه دستورش انجام شود یعنی Label1 بنویسد (( این علامت جمع است)) و بقیه هم به همین صورت انجام می پذریند. اما در آخر کار شرط Case Elseاین شرط را می گذارد که اگر شرط های بالا انجام نشد (یعنی متغیر ما برابر یکی ازچهار عمل اصلی قرار نگرفت) دستورش انجام شود یعنی Label1 بنویسد (( جزء چهار عمل اصلی نیست)).
در دستورSelect case می توان از To وIs استفاده کرد مثل مثال زیر:
Dim a as single
a=text1.text
select case a
case 0 to 9.99
Msgbox("شما تجدید شده اید")
Text1.BackColor = &HFF&
Case 10 to 20
Msgbox("شما قبول شده اید")
Text1.BackColor = &HFF00&
Case else
Msgbox("نمره شما غیر مجاز است لطفاً بین 0 تا 20 نمره خود را وارد کنید")
Text1.BackColor = &HFF&
End select
حتی می توان سه نوع دستور Case را به هم ترکیب کرد:
Case 108,201,To 302, Is >300
پروژه ماشین حساب
15 تا Commandبر روی فرم قرار دهید و یک Text box با نام Text1
در قسمت Genral باید 4 متغیر به صورت زیر تعریف کرد:
Dim number1, number2 As Long
Dim amaliyat As String
Dim javab As Single
دکمه اعداد ماشین حساب به صورت زیر:
Private Sub Command1_Click()
Text1 = (Text1) + "1"
End Sub
مثلاً برای عدد دو باید Text1=(Text)+"2" بنویسیم
دکمه جمع
Private Sub Command12_Click()
number1=val(text1)
amaliyat="+"
Text1.text =""
برای دکمه های دیگر عمل های ریاضی (/،*،-) فقط باید علامت داخل " " را عوض کنید
دکمه مساوی با استفاده از دستور Select Case است
Private Sub Command10_Click()
number2=val(text1)
Select Case amaliyat
Case "+"
javab = number1+number2
Case "-"
javab = number1-number2
Case "*"
javab = number1*number2
Case "/"
javab = number1/number2
End Select
Text1.text =Str(javab)
Amaliyat=”"
End Sub
پروژه Toolbar(ساخت منو با استفاده از Toolbar)
اگر ابزار Toolbar درابزار شما نبود در Ctrl+T را فشار دهید تابه قسمت Components بروید و به دنبال گزینه Microsoft Windows Common Contorls 6.0 بگردید و آنرا را تیک برزنید و Ok کنید.بعد یک Toolbar را روی فرم خود قرار دهید همچنین یک Imageliste هم روی فرم قرار دهید imageList برای عکس دار کردن منوها است. بر روی آن راست کلیک کرده و به قسمت Prorertise آن بروید بعد Size آن را انتخاب کنید مثلاً 48×48 بعد به قسمت Iamge بروید و بر روی دکمه Insert Picture کلیک کنید عکس ها را انتخاب کنید باید توجه داشت که فرمت عکس ها باید Icon یا Bitmap باشد در غیر این صورت ویژوال بیسیک آنرا نمی پذیرد بعد بر روی Ok کلیک کنید .
بعد بر روی Toolbar راست کلیک کنید و به قسمت Prorertise آن بروید در قسمت ImageList و imagelist خود را که ساخته اید انتخاب کنید بعد به قسمت Button بروید هر بار که روی Insert Button بزنید یک شاخه منو ساخته میشود در قسمت Caption نام ان شاخه را مشخص کنید و در قسمت Image آن باید یک شماره را انتخاب کنید تا از بین آن عکس ها که در ImageList قرار دارند یک عکس انتخاب شود اگر شما مثلاً 10 تا عکس را وارد کردید هر عکس با یک شماره به ترتیب در IamgeList قرار می گیرد که اگر مثلاً عدد 2 را در Imageقرار دهید عکس شماره 2 برای آن منو انتخاب میشود.
اگر می خواهید منو شما زیر شاخه داشته باشد باید در قسمت Style حالت 5-tbrDropdown را انتخاب کنید تا زیر شاخه ، زیر منو اصلی قرار گیرند اما باید زیر شاخه ها را ساخت برای این کار باید در قسمت زیر به نام Button menus با هر بار زدن بر روی Menus Button Insert یک زیر شاخه ساخته میشود که نام آنرا در قسمت Text بنویسد اما قسمتی که خیلی مهم است قسمت Tag آن است انجا باید یک شماره را وارد کنید و هر شماره مختص یک زیر شاخه میشود مثلاً Tag :12 - نمایش پروندها Text: بعد از ساختن منوها و زیر شاخه های آن نوبت کد نویسی است که بتواند بر روی هر منو که کلیک کردیم دستور مورد نظر ما را انجام دهد دستور پروژه ما نمایش فرم هاست به وسیله منو Toolbar است به قسمت کد Toolbar بروید و کد زیر را در رویداد Button Menu Click وارد کنید البته باید نام فرم ها را و شماره Tag آنها را با کارتان صدق دهید
نام شاخه زیر اول : نمایش پرونده ها شماره Tag:12 دستور: نمایش Form2
نام زیر شاخه دوم: چاپ چرونده ها شماره Tag:13 دستور: نمایش Form3
Private Sub Toolbar1_ButtonMenuClick
Select Case ButtonMenu.Tag
Case 12
Form2.Show 1
Case 13
End
End Select
حلقه Do
با استفاده از حلقه می توان تعدادی دستور را به اندازه دلخواه تکرار کند.
درون حلقه دستورات تا زمانی که شرایط محیا نشده ، آن دستورات تکرار میشوند و زمانی که شرایط محیا شد دیگر دستورات تکرار نمی شوند.
حلقه Do While
شکل کلی حلقه Do While
Do While شرط
دستوراتي كه بايد انجام شوند
شكل دوم (شرط حلقه در انتها تست ميشود)
DO
دستوراتي كه بايد تكرار شوند
Loop While شرط
منظور از عبارت منطقي مثل a<1
مثال:
Dim a, b, sen As Integer
a = InputBox("سال تولد خود را وارد نماييد","محاسبه سن")
b = InputBox("سال امسال را وارد نماييد","محاسبه سن")
Do While a > b
a = InputBox("لطفاً سال تولد خود درست را وارد نماييد","خطا")
b = InputBox("لطفاً سال امسال را درست وارد نماييد","خطا")
sen = (b - a)
Label1.Caption = sen
توضيح مثال:
در مثال بالا سه متغير را تعريف مي كنيم a,b,sen كه a سال تولد است وb سال امسال است و sen سن فرد است . حلقه Do while مي گويد اگر سال امسال > سال تولد شود (a>b) دستور دوباره تكرار شود و تا وقتي كه شرايط لازم يعني (a<b) محيا نشود سن شما محاسبه نمي شود و دوباره دستورات تکرار می شود . اما اگر سال تولد > سال امسال شود حلقه دیگر تکرار نمی شود و سن شما محاسبه ميشود و در Label1 نمايش داده ميشود.
خودآزمايي:خروجي برنامه زير چيست؟
Dim L,K,Sum As Integer
Sum=0
L=2
K=-1
Do While K<1
Sum=sum+L^K
K=K+1
Print Sum
الف)1.5 ب)3.5 ج)7.5 د)صفر
گزينه الف درست است
توضیح خیلی مهم:
*نكته : محل تست شرط حلقه: اگر شرط در ابتدا آن تست شود امكان دارد اصلاً اجرا نشود اما اگر در انتهاي آن باشد ،حداقل حلقه يك بار تكرار مي شود
*نكته: خصلت تست حلقه: حلقه هايي كه While دارند زماني كه شرط درست است اجرا مي شوند ولي حلقه هايي كه Until دارند اگر شرط درست شود اجراي حلقه پايان خواهد يافت.
حلقه Do Until
Do Until شرط
دستوراتي كه بايد تكرار شود
شكل دوم (شرط حلقه در انتها تست ميشود)
Do
دستوراتي كه بايد تكرار شود
Loop Until شرط
مثال:
Dim y As Integer
y=0
Do Until y>1
y=y+1
Print y
توضيح مثال: در اين مثال متغير y=0 است و حلقه اين شرط را گذاشته كه تا وقتي كه y>1 نشده y=y+1 بشود و روي فرم برنامه تان چاپ شود. پس y=0 بود ميشود y=y+1 ← y=1 و بر روي فرم چاپ ميشود بازحلقه دوباره تست ميشود اما بازهم y>1 نيست و شرط را انجام نداده پس حلقه دوباره تكرار ميشود پس y=1 بود ميشود y=y+1 ←y=2 بر روي فرم چاپ ميشود و شرط بازهم تست ميشود اما اين بار y>1 است و شرط را انجام داده پس حلقه متوقف ميشود واگر ما بعد از دستور Loop دستور ديگري را مي نوشتيم آن اجرا مي شد.خروجي اين برنامه عدد 1 و2 است
اما اگر همين برنامه را اين گونه بنويسيم:
Dim y As Integer
y=0
Do
y=y+1
Print y
Loop Until y>1
اين حلقه آخر تست ميشود يعني y=0 ←y=y+1 ←y=1
y چاپ ميشود y>1 نيست پس حلقه دوباره تكرار شود y=1 ←y=y+1 ←y=2
y بر روي فرم چاپ ميشود y>1 است و شرط انجام شده واگر بعد
همین برنامه را با حلقه DO While می نویسیم:
Dim y As Integer
y=0
Do While y<1
y=y+1
Print y
این حلقه این را می گوید که اگر y<1 باشد y=y+1 شود و y برروی فرم چاپ شود و تا و قتی که y>1 نشود حلقه (همین دستورات بعد از Do While مثل y=y+1 وPrint y ) تکرار خواهد شد و زمانی که y>1 شد حلقه پایان خواهد یافت و اگر ما بعد از Loop دستوری می نوشتیم اجرا می شد.
حلقه For
حلقه For تعدادی دستور را به تعداد معین یا رسیدن به حالت خاص اجرا می کند
شکل کلی این دستور :
For متغیر شمارنده = مقدار اولیه To مقدار نهایی Step مقدار تغییر شمارنده
دستوراتی که باید تکرار شود
Next متغیر شمارنده
متغیر شمارنده یک متغیر عددی است که بدنه حلقه را کنترل می کند .اگر مقدار متغیر شمارنده از مقدار نهایی بیشتر شود حلقه پایان خواهد یافت و دیگر ویژوال بیسیک حلقه را تکرار نمی کند و برنامه را از دستورات بعد از next پی خواهد گرفت .اگر مقدار step مثبت باشد شمارش حلقه ها صعودی است و منفی باشد شمارش اعداد نزولی است.
مثال :
Dim Counter As Integer
For Counter = 20 To 0 Step- 4
Print Counter
Next Counter
خروجی مثال بالا به این صورت است 0 4 8 12 16 20
سوال:خروجی مثال زیر چیست؟
For A=1 To 5
B=B+3*A
IF A=3 Then 10
B=2*A
Next A
10 Print B*3
الف)12 ب)39 ج)21 د)18
گزینه ب صحیح است
یادآوری چند نکته:
· در حلقه Do بعد از پایان حلقه دستورات بعد از Loop تکرار میشود
· در حلقه Do until اگر شرط درست شود حلقه پایان می یابد مثلاً Do Until y>1 حلقه پایان یابد.
· در حلقه Do While اگر شرط درست شود اجرا میشود مثلاًDo While y<1 حلقه اجرا شود.
عملگرهای مقایسه ای:
در درس دادها و متغیرها عملگر های مقاسه ای توضیح داده شده اما باید چند نکته زیر را درآن رعایت کنیم:
· حروف بزرگ از حروف کوچکتر بزرگتر هستند پس باید متغیری که با حرف بزرگ نوشته شده را قبل از متغیری که با حرف کوچک آمده نوشت
· اعداد کوچکتر از حروف هستند مثلاً عدد 3 کوچکتر از "Hello " است
نویسنده : محمد جواد شخصی خدابخش
تاریخ :30/12/1388 شمسی 2010 February 20 میلادی
ایمیل :mjshakhsi@yahoo.com
وبلاگ: http://www.shakhsi7270.blogfa.com