|
در بخش اول اين مقاله با اسکريپت های ويژوال بيسيک و ساختارهای کنترلی در VB.NET به صورت اجمالی آشنا شديم . در بخش دوم به بررسی ساختارهای تصميم گيری ، خواهيم پرداخت . همانگونه که قبلا" اشاره گرديد ، با استفاده از ساختارهای تصميم گيری ، يک و يا چندين شرط بررسی و بر اساس نتايج بدست آمده ، دستور و يا دستوراتی اجراء و يا از اجرای دستور و يا دستوراتی صرفنظر می گردد .
در VB.NET از دو روش متفاوت در اين رابطه استفاده می گردد :
مثلا" در صورتی که در يک برنامه قصد طرح اين پرسش از کاربران را داريم که : " آيا می خواهيد قرار ملاقات خود را از طريق تلفن ، نهائی نمائيد ؟"قطعا" پاسخ به سوال فوق دو گزينه بيشتر نخواهد داشت ( پاسخ مثبت ( True ) و منفی ( False ) ) . بنابراين می توان در چنين مواردی از ساختار If...Then استفاده نمود . ولی در صورتی که از کا ربر پرسش شود که : " آيا می خواهيد قرار ملاقات خود را از طريق تلفن ، فاکس و يا Email ، نهائی نمائيد ؟" ، با توجه به تعداد گزينه های موجود ، ترجيح داده می شود که از ساختار Select Case استفاده شود . قبل از پرداختن با جزئيات نحوه استفاده از ساختارهای فوق ، لازم است با برخی عملگرها که از آنان به منظور ايجاد عبارات شرطی استفاده می شود،بيشتر آشنا شويم .
عملگرهای مقايسه ای عملگرهای مقايسه ای در VV.NET عبارتند از :
|
کاربرد |
عملگر |
|
مساوی |
= |
|
کوچکتر از |
> |
| کوچکتر يا مساوی |
=> |
| نامساوی |
<> |
|
بزرگتر |
< |
| بزرگتر يا مساوی |
=> |
عملگرهای منطقی در VB.NET از عملگرهای منطقی متعددی استفاده می شود. جدول زير برخی از متداولترين آنان را نشان می دهد :
|
مثال |
کاربرد |
عملگر |
|
If A=1 AND B=2 Then |
در صورت درست بودن تمامی عملوندها ، شرط مورد نظر ارزش درست را پيدا خواهد کرد . |
AND |
|
If A=1 OR B=2 Then |
درصورت درست بودن يکی از عملوندها ، شرط مورد نظر ارزش درست را پيدا خواهد کرد |
OR |
|
If NOT A=1 Then |
مقدار مخالف شرط را بر می گرداند . در صورتی که شرط مورد نظر ارزش درست را داشته باشد ، NOT آن مقدار نادرست را برمی گرداند . |
NOT |
اولويت عملگرهای فوق به ترتيب OR,AND,NOT می باشد .
ساختار If...Then
ساختار فوق دارای چهار بخش اساسی است :
-
يک عبارت که شامل يک و يا چندين شرط است که ماحصل آن True و يا False خواهد بود .
-
کد لازم در صورتی که نتيجه عبارت شرطی ، درست باشد .
-
کد لازم در صورتی که نتيجه عبارت شرطی نادرست باشد ( اختياری )
-
يک عبارت که نشاندهنده پايان ساختار است .
برای ايجاد ساختار If...Then ازروش های متفاوتی استفاده می گردد . برای انتخاب گرامر مناسب می بايست به دو سوال فوق پاسخ داده شود :
If..Then : ساده ترين روش استفاده ازساختار تصميم گيری است . در صورت استفاده از ساختار فوق و در مواردی که نتيجه عبارت شرطی نادرست ( False ) باشد ، نمی توان دستور ويا دستوراتی را اجراء نمود .
|
If A=1 Then TestMessage.Text = " نتيجه عبارت شرطی ، درست است " |
در صورتی که قصد داشته باشيم پس از بررسی عبارت شرطی و درست بودن آن بيش از يک دستور را اجراء نمائيم ، می بايست پس از درج دستورات مورد نظر ، از يک End If در قسمت پايانی دستورات ، استفاده نمائيم .
|
If A=1 Then TestMessage.Text = " در صورت درست بودن شرط ، دو دستور اجراء می گردد " B = 2 End If |
If...Then...Else : از ساختار فوق در مواردی که قصد داشته باشيم پس ازبررسی عبارت شرطی و با توجه به نتيجه آن ( درست و يا نادرست ) دستورات خاصی را اجراء نمائيم ، استفاده می شود .
|
If A=1 Then TestMessage.Text = " در صورت درست بودن شرط ، اجراء می گردد" Else TestMessage.Text = " در صورت نادرست بودن شرط ، اجراء می گردد" End If |
If...Then ...ElseIf : با اين که استفاده از ساختار فوق به منظور تصميم گيری بندرت انجام می شود ، ولی در موارد خاصی لازم است که از اين ساختار استفاده شود. با استفاده از ساختار فوق می توان عبارات شرطی متفاوتی را با يکديگر ترکيب و بر اساس نتايج بدست آمده ، دستور و يا دستورات خاصی را با توجه به وضعيت بوجود آمده ، اجراء نمود . بدين منظور لازم است که هر يک از حالات موجود را با استفاده از ElseIf از يکديگر جدا نموده و در نهايت تمامی ساختار را با استفاده از End If به پايان رساند .
|
If A=1 Then TestMessage.Text = " A=1" ElseIf A=2 Then TestMessage.Text = " A=2 " ElseIf A=3 Then TestMessage.Text = " A=3 " End If |
مثال : نحوه استفاده از ساختار If...Then در اين مثال کامپيوتر عددی را به صورت تصادفی توليد نموده و از شما درخواست می شود که اين عدد را تشخيص دهيد .
مرحله اول : تايپ کد زير با استفاده از يک ويرايشگر
|
<script language="vb" runat="server"> Sub Page_Load() Dim theNumber As Integer Dim theGuess As Integer
theNumber = int(10 * rnd) + 1
If Page.IsPostBack Then theGuess = Guess.SelectedItem.Valu
If theGuess > theNumber then Message.Text = "<BR><BR>شما عدد بزرگتری را تشخيص داده ايد <BR>عدد مورد نظر " &_ "<B>" & theNumber & " </B>" & " می باشد " End If
If theGuess < theNumber then Message.Text = "<BR><BR>شما عدد کوچکتری را تشخيص داده ايد <BR>عدد مورد نظر " &_ "<B>" & theNumber & " </B>" & " می باشد " End If
If theGuess = theNumber then Message.Text = "<BR><BR>حدس شما صحيح است" End If End If End Sub </script>
<html dir=rtl> <head></head> <body> <form runat="server"> چه عددی را بخاطر سپرده ام ؟ <asp:dropdownlist id="Guess" runat="server"> <asp:listitem>1</asp:listitem> <asp:listitem>2</asp:listitem> <asp:listitem>3</asp:listitem> <asp:listitem>4</asp:listitem> <asp:listitem>5</asp:listitem> <asp:listitem>6</asp:listitem> <asp:listitem>7</asp:listitem> <asp:listitem>8</asp:listitem> <asp:listitem>9</asp:listitem> <asp:listitem>10</asp:listitem> </asp:dropdownlist><br><br> <input type="submit" value="تشخيص عدد"> <asp:label id="message" runat="server"/> </form></body></html> |
مرحله دوم : پس از ذخيره کد فوق در فايلی با نام ifthen.aspx و مشاهده آن در مرورگر ، خروجی زير را خواهيم داشت :

مرحله سوم : انتخاب عدد مورد نظر و کليک بر روی دکمه "تشخيص عدد "

توضيحات :
-
با استفاده از کنترل <asp:dropdownlist> که اعداد يک تا ده را نمايش می دهد از کاربر خواسته ايم که عددی را انتخاب نمايد .
-
در کد نوشته شده دو متغير به اسامی theNumber و theGuess تعريف که از آنان به منظور ذخيره عدد توليد شده تصادفی و عدد حدس زده شده توسط کاربر استفاده می گردد .
-
برای توليد اعداد تصادفی از تابع ()rnd استفاده شده است. تابع فوق ، يک عدد اعشاری بين صفر و يک را توليد می نمايد . برای داشتن يک عدد تصادفی بين يک تا ده ، می بايست عدد توليد شده را در ده ضرب نمود . بدين ترتيب يک عدد بين صفر تا ده توليد می شود .
-
با استفاده از ساختار If...Then بررسی لازم در خصوص عدد انتخاب شده توسط کاربر و مقايسه آن با عدد تصادفی توليد شده انجام و بر اساس آن پيام مناسبی به کاربر ارائه خواهد شد .
ساختار Select Cast يکی از چالش های استفاده از ساختار If...Then در مواردی است که قصد داشته باشيم تعداد سه و يا بيش از سه وضعيت را بکمک آن مقايسه نمائيم . مثلا" در صورتی که بخواهيم يک کاربر را بر اساس انتخاب انجام شده به شش صفحه وب مجزاء هدايت نمائيم ، استفاده از ساختار If...then علاوه بر اين که کد برنامه را ناخوانا خواهد کرد ، سرعت اجرای کد نوشته شده نيز کندتر می گردد. در چنين مواردی می توان از ساختار Select Case استفاده نمود .
مثال : نحوه استفاده از ساختار Select Case
مرحله اول : تايپ کد زير با استفاده از يک ويرايشگر
|
<script language="vb" runat="server"> Sub Page_Load() If Page.IsPostBack Then Select Case(Destination.SelectedItem.Value) Case "تهران": Message.Text = "شما شهرستان تهران را برای مسافرت انتخاب نموده ايد" Case "اهواز": Message.Text = "شما شهرستان اهواز را برای مسافرت انتخاب نموده ايد" Case "شيراز": Message.Text = "شما شهرستان شيراز را برای مسافرت انتخاب نموده ايد" Case else Message.Text = "شما شهرستان مورد نظر را انتخاب ننموده ايد" End Select End If End Sub </script>
<html dir=rtl> <head></head> <body> <form runat="server"> کدام شهرستان را برای مسافرت انتخاب می نمائيد ؟ <br><br> <asp:radiobuttonlist id="destination" runat="server"> <asp:listitem>تهران</asp:listitem> <asp:listitem>اهواز</asp:listitem> <asp:listitem>شيراز</asp:listitem> </asp:radiobuttonlist><br><br> <input type="submit" value="ارسال درخواست"><br><br> <asp:label id="message" runat="server"/> </form> </body> </html> |
مرحله دوم : پس از ذخيره کد فوق در فايلی با نام selectcase.aspx و مشاهده آن در مرورگر ، خروجی زير را خواهيم داشت :

مرحله سوم : انتخاب گزينه مورد نظر و کليک بر روی دکمه " ارسال درخواست "

توضيحات :
-
با استفاده از کنترل <asp:radiobuttonlist> ، مجموعه ای از گزينه ها ارائه شده است .
-
با استفاده از ساختار Select Case بررسی لازم در خصوص گزينه انتخاب شده توسط کاربر انجام و متناسب با آن پيام خاصی در کنترل lablel نمايش داده می شود .
-
در صورتی که به هر دليلی يکی از گزينه های ارائه شده، انتخاب نشود و يا خطای خاصی اتفاق افتاده باشد که داده انتخابی با هيچيک از موارد ذکر شده در ساختار Select Case مطابقت ننمايد ، بخش Case else ساختار Select Case انتخاب و دستورات موجود در اين بخش اجراء خواهند شد .
در بخش سوم اين مقاله به بررسی ساختارهای تکرار خواهيم پرداخت .
منبع: http://www.srco.ir/Articles/DocView.asp?ID=293
|