دستورات شرطی

عملگرهای منطقی: با عملگرهل مقایسه ای می توان دو یا چند مقایسه شرطی را باهم تکرار کرد

 

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 شرط

دستوراتي كه بايد انجام شوند

Loop

شكل دوم (شرط حلقه در انتها تست ميشود)

DO

دستوراتي كه بايد تكرار شوند

Loop While شرط

منظور از عبارت منطقي مثل a<1

مثال:

Dim a, b, sen As Integer

a = InputBox("سال تولد خود را وارد نماييد","محاسبه سن")

b = InputBox("سال امسال را وارد نماييد","محاسبه سن")

Do While a > b

a = InputBox("لطفاً سال تولد خود درست را وارد نماييد","خطا")

b = InputBox("لطفاً سال امسال را درست وارد نماييد","خطا")

Loop

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

Loop

Print Sum

الف)1.5     ب)3.5    ج)7.5   د)صفر  

گزينه الف درست است

توضیح خیلی مهم:

*نكته : محل تست شرط حلقه: اگر شرط در ابتدا آن تست شود امكان دارد اصلاً اجرا نشود اما اگر در انتهاي آن باشد ،حداقل حلقه يك بار تكرار مي شود

*نكته: خصلت تست حلقه: حلقه هايي كه While دارند زماني كه شرط درست است اجرا مي شوند ولي حلقه هايي كه Until دارند اگر شرط درست شود اجراي حلقه پايان خواهد يافت.

 

 

 

حلقه Do Until

Do Until شرط

دستوراتي كه بايد تكرار شود

Loop

شكل دوم (شرط حلقه در انتها تست ميشود)

Do

دستوراتي كه بايد تكرار شود

Loop Until شرط

مثال:

Dim y As Integer

y=0

Do Until y>1

y=y+1

Print y

Loop

توضيح مثال: در اين مثال متغير 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 است و شرط انجام شده واگر بعد Loop Until دستور ديگري مينوشتيم آن اجرا مي شد.

همین برنامه را با حلقه DO While می نویسیم:

Dim y As Integer

y=0

Do While y<1

y=y+1

Print y

Loop

این حلقه این را می گوید که اگر 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

گزارش تخلف
بعدی