ساختارهای کنترلی در VB.NET
• ساختارهای تصميم گيری ( اتخاذ تصميم در خصوص اجراء و يا عدم اجرای خط و يا خطوطی از برنامه )
• ساختارهای تکرار ( اجرای يک و يا مجموعه ای کد به دفعات مورد نياز )
• ساختارهای پرش ( توقف روند جاری اجرای يک برنامه و پرش به يک محل و اجرای يک بلاک کد خاص )
در مجموعه مقالاتی که در اين رابطه ارائه خواهد شد به بررسی هر يک از ساختارهای فوق در VB.NET و نحوه استفاده از آنان به منظور ايجاد صفحات ASP.NET خواهيم پرداخت .
در بخش اول اين مقاله با هر يک از ساختارهای فوق به صورت اجمالی آشنا خواهيم شد.
اسکريپت های ويژوال بيسيک
کدهای ويژوال بيسيک را می توان از لحاظ فيزيکی در دو مکان متفاوت مستقر نمود : کدهای همراه صفحات وب و يا کدهائی که در يک فايل جداگانه مستقر و امکان دستيابی آنان از طريق صفحاب وب وجود خواهد داشت . صرفنظر از مکانی که کدها مستقر خواهند شد ، اسکريپت های ويژوال بيسيک ، به منزله روتين هائی می باشند که می توان از آنان به منظور انجام پردازش های موردنياز و توليد نتايج به منظور نمايش بر روی صفحه ، استفاده نمود .
بلاک های اسکريپت
<script runat="server" [language="vb|Visual Basic"] > |
خصلت runat=server ، نشاندهنده اين موضوع است که اسکريپت های نوشته شده می بايست توسط کامپيوتر سرويس دهنده وب وقبل از ارسال صفحه برای کامپيوتر سرويس گيرنده ، اجراء گردند. خصلت فوق ، همچنين بين اسکريپت های سرويس دهنده و اسکريپت های سرويس گيرنده و يا مرورگر ، تفاوت قائل می شود ( اسکريپت های سمت سرويس گيرنده معمولا" با استفاده از جاوااسکريپت نوشته می گردند ) .
خصلت Language ، زبان استفاده شده به منظور نوشتن اسکريپت ها را مشخص می نمايد . با توجه به اين که ويژوال بيسيک زبان پيش فرض برای نوشتن اسکريپت های سمت سرويس دهنده می باشد ، استفاده از خصلت فوق می تواند اختياری باشد ( در صورتی که از زبان ويژوال بيسيک برای نوشتن اسکريپت ها استفاده می نمائيم ) .
يک بلاک اسکريپت را می توان در هر محلی از صفحه وب مستقر و در صورت نياز از چندين بلاک اسکريپت استفاده نمود. (در اغلب موارد يک بلاک اسکريپت کفايت خواهد کرد). در اکثر موارد ، ترجيج داده می شود که اسکريپت ها در ابتدای صفحه مستقر گردند ( قبل از هر کد HTML ) . علت استقرار اسکريپت ها در ابتدای صفحه ، تشخيص اين موضوع است که سرويس دهنده در ابتدا اسکريپت ها را اجراء خواهد کرد ( قبل از انجام هر گونه عمليات مرتبط با عناصر موجود بر روی يک صفحه وب ) .
برنامه های جانبی
<script runat="server"> |
مروری بر ساختارهای شرطی
انواع ساختار شرطی
• If ...Then ...Else : از ساختار فوق به منظور اجرای يک و يا چندين مجموعه خط کد پس از بررسی يک و يا چندين شرط ، استفاده می گردد . مثلا" فرض کنيد در يک صفحه وب که مسئوليت نمايش اخبار را برعهده دارد ، قصد داشته باشيم در خصوص نمايش اخبار بين المللی و يا ورزشی ، اتخاذ تصميم نمائيم . از ساختار If ...Then می توان به منظور انتخاب عباراتی به منظور اجراء که ماحصل مقايسه های پيچيده ای نظير عباراتی که از عملگرهای AND ,OR و يا NOT ، می باشند ، استفاده نمود .
• Select Case : از ساختار فوق به منظور اجرای يک و يا چندين مجموعه خط با توجه به وجود حالات متفاوتی که يک متغير می تواند داشته باشد ، استفاده می گردد . مثلا" در يک صفحه وب که مسئوليت نمايش اخبار را برعهده دارد ، می توان از چندين آيکون که نشاندهنده نوع اخبار می باشند ، استفاده نمود . پس از کليک نمودن کاربر بر روی هر يک از آيکون ها ، اخبار مربوط به آن گروه خاص نمايش داده می شود (سياسی ، تجاری ، ورزشی و يا اخبار مربوط به تکنولوژی) .
مروری بر ساختارهای تکرار
انواع ساختار تکرار
• For...Next : از ساختار فوق به منظور تکرار خط و يا مجموعه ای از خطوط استفاده می گردد . در اين ساختار ، در ابتدا نسبت به دفعاتی که می بايست کدهای مورد نظر تکرار گردند ، شناخت لازم وجود دارد . برای مشخص نمودن دفعاتی که می بايست دستورات تکرار گردند ، می توان از توابع متفاوتی نظير Sizeof استفاده نمود .
• Do While : از ساختار فوق به منظور تکرار خط و يا مجموعه ای از خطوط در مواردی که در زمان طراحی نسبت به دفعاتی که می بايست دستورات اجراء گردند ، آگاهی لازم وجود ندارد ، استفاده می گردد. در چنين مواردی لازم است که در ساختار تکرار نسبت به ادامه تکرار دستورات ، اتخاذ تصميم شود . بدين منظور شرط و يا شروط خاصی بررسی و ماداميکه نتيجه مثبت ( درست ) باشد ، دستورات تکرار می گردند .
• Fo ...Each : از ساختار فوق به عنوان گزينه ای مناسبتر نسبت به For...Next در مواردی که دارای مجموعه ای از آيتم ها می باشيم و نمی دانيم چند مرتبه می بايست عمليات تکرار انجام شود ، استفاده می گردد .
مروری بر ساختارهای پرش
انواع ساختار پرش
• Subroutines : اين نوع برنامه ها را می توان با فراخوانی نام آنان به خدمت گرفت . پس از فراخوانی هر روتين مجموعه کدهای موجود در آنان اجراء شده و در ادامه کنترل به دستور پس از محل فراخوانی روتين برمی گردد .
• Function : عملکرد اين نوع روتين ها مشابه Subroutine بوده و تنها تفاوت موجود ، برگرداندن يک مقدار به برنامه و يا محل فراخوانی تابع است .
ساختارهای اشاره شده ، به منزله ستون فقرات هر برنامه ای می باشند که با ASP.NET نوشته می گردد .
در ادامه با انواع عملياتی که می توان توسط هر يک از ساختارهای فوق انجام داد ، بيشتر آشنا می شويم :
مثال يک : | |
خواسته | می خواهيم در خصوص نمايش صفحه Aو يا صفحه Bاتخاذ تصميم نمائيم . |
راه حل | استفاده از ساختار تصميم گيری |
علت ؟ | ما صرفا" می خواهيم يکی از دو احتمال موجود را بررسی نمائيم . |
مثال دوم : | |
خواسته | نمايش ليست اعضای يک کلوپ شامل نام ، نام خانوادگی ، آدرس و ساير اطلاعات ذيربط |
راه حل | استفاده از ساختار تکرار |
علت ؟ | ما نيازمند اجرای مجموعه کد مشابهی ( بازيابی اطلاعات مربوط به هر يک از اعضاء ) به دفعات مشخص می باشيم . ( تکرار برای هر يک از اعضاء تا زمانيکه ليست تمامی اعضاء نمايش داده شود . ) |
مثال سوم | |
خواسته | نمايش داده در يک جدول |
راه حل | ساختار تکرار |
علت ؟ | ما نيازمند اجرای کد مشابهی ( ايجاد يک سطر در جدول ) به منظور ايجاد تمامی سطرهای مورد نياز می باشيم . |
مثال چهارم : | |
خواسته | پس از استقرار يک آيتم که در صفحه مشخصات کالا تشريح شده است ، قصد داريم چندين خط اطلاعات در رابطه با نحوه ثبت سفارش را اضافه نمائيم . ممکن است ما دارای چندين آيتم می باشيم که در صفحات متعددی نمايش داده می شوند و لازم است که اطلاعات مربوط به نحوه ثبت سفارش برای هر يک از آنان نيز نمايش داده شود . |
راه حل | استفاده از يک Subroutine |
علت ؟ | ما نيازمند توقف روند اجرای کد اصلی و اجرای کدهای لازم به منظور نحوه تشريح ثبت سفارش ، می باشيم . با توجه به اين که مجموعه خطوط لازم به منظور نمايش "نحوه ثبت سفارش " ، می بايست چندين مرتبه اجراء گردند ، بهتر است که آنان را يک مرتبه نوشته و به دفعات مورد نياز فراخوانده شوند. |
مثال پنچم : | |
خواسته | فرض کنيد در يک برنامه لازم است که قيمت يک کالا که توسط کاربر انتخاب می گردد ، محاسبه و در چندين محل بر روی يک صفحه ، نمايش داده شود . |
راه حل | استفاده از يک تابع |
علت ؟ | ما نيازمند توقف روند اجرای صفحه و پرش به محلی می باشيم که کدهای مورد نظر به منظور محاسبه قيمت يک کالا را شامل می شود . پس از اجرای کدهای مورد نظر ، مجددا" به صفحه اوليه مراجعه می گردد . با توجه به اين که لازم است چندين مرتبه قيمت يک کالا ، محاسبه گردد ، بهتر است که فورمول لازم برای محاسبه قيمت را يک مرتبه نوشته و آن را به دفعات مورد نياز فراخواند . |
همانگونه که قبلا" اشاره گرديد ، با استفاده از ساختارهای تصميم گيری ، يک و يا چندين شرط بررسی و بر اساس نتايج بدست آمده ، دستور و يا دستوراتی اجراء و يا از اجرای دستور و يا دستوراتی صرفنظر می گردد . در VB.NET از دو روش متفاوت در اين رابطه استفاده می گردد :
• If ...Then : تعداد مسيرهائی را که می توان پس از بررسی يک عبارت شرطی انتخاب نمود ، اندک است .
• Select Case :تعداد مسيرهائی را که می توان پس از بررسی يک عبارت شرطی انتخاب نمود ، زياد است .
مثلا" در صورتی که در يک برنامه قصد طرح اين پرسش از کاربران را داريم که : " آيا می خواهيد قرار ملاقات خود را از طريق تلفن ، نهائی نمائيد ؟"قطعا" پاسخ به سوال فوق دو گزينه بيشتر نخواهد داشت ( پاسخ مثبت ( True ) و منفی ( False ) ) . بنابراين می توان در چنين مواردی از ساختار If...Then استفاده نمود . ولی در صورتی که از کا ربر پرسش شود که : " آيا می خواهيد قرار ملاقات خود را از طريق تلفن ، فاکس و يا Email ، نهائی نمائيد ؟" ، با توجه به تعداد گزينه های موجود ، ترجيح داده می شود که از ساختار Select Case استفاده شود .
قبل از پرداختن با جزئيات نحوه استفاده از ساختارهای فوق ، لازم است با برخی عملگرها که از آنان به منظور ايجاد عبارات شرطی استفاده می شود،بيشتر آشنا شويم .
کاربرد | عملگر |
مساوی | = |
کوچکتر از | > |
کوچکتر يا مساوی | => |
نامساوی | <> |
بزرگتر | < |
بزرگتر يا مساوی | => |
عملگرهای منطقی
مثال | کاربرد | عملگر |
If A=1 AND B=2 Then | در صورت درست بودن تمامی عملوندها ، شرط مورد نظر ارزش درست را پيدا خواهد کرد . | AND |
If A=1 OR B=2 Then | درصورت درست بودن يکی از عملوندها ، شرط مورد نظر ارزش درست را پيدا خواهد کرد | OR |
If NOT A=1 Then | مقدار مخالف شرط را بر می گرداند . در صورتی که شرط مورد نظر ارزش درست را داشته باشد ، NOTآن مقدار نادرست را برمی گرداند . | NOT |
ساختار If...Then
• يک عبارت که شامل يک و يا چندين شرط است که ماحصل آن True و يا False خواهد بود .
• کد لازم در صورتی که نتيجه عبارت شرطی ، درست باشد .
• کد لازم در صورتی که نتيجه عبارت شرطی نادرست باشد ( اختياری )
• يک عبارت که نشاندهنده پايان ساختار است .
برای ايجاد ساختار If...Then ازروش های متفاوتی استفاده می گردد . برای انتخاب گرامر مناسب می بايست به دو سوال فوق پاسخ داده شود :
• در مواردی که نتيجه عبارت شرطی False گردد ، قصد انجام کار( و يا کارهای ) خاصی را داريد ؟
• در صورتی که نتيجه عبارت شرطی درست باشد ، قصد اجرای بيش از يک دستور را داريد ؟
If..Then : ساده ترين روش استفاده ازساختار تصميم گيری است . در صورت استفاده از ساختار فوق و در مواردی که نتيجه عبارت شرطی نادرست ( False ) باشد ،
If A=1 Then TestMessage.Text = " نتيجه عبارت شرطی ، درست است" |
در صورتی که قصد داشته باشيم پس از بررسی عبارت شرطی و درست بودن آن بيش از يک دستور را اجراء نمائيم ، می بايست پس از درج دستورات مورد نظر ، از يک End If در قسمت پايانی دستورات ، استفاده نمائيم .
If A=1 Then |
If...Then...Else : از ساختار فوق در مواردی که قصد داشته باشيم پس ازبررسی عبارت شرطی و با توجه به نتيجه آن ( درست و يا نادرست ) دستورات خاصی را اجراء نمائيم ، استفاده می شود .
If A=1 Then |
If...Then ...ElseIf : با اين که استفاده از ساختار فوق به منظور تصميم گيری بندرت انجام می شود ، ولی در موارد خاصی لازم است که از اين ساختار استفاده شود. با استفاده از ساختار فوق می توان عبارات شرطی متفاوتی را با يکديگر ترکيب و بر اساس نتايج بدست آمده ، دستور و يا دستورات خاصی را با توجه به وضعيت بوجود آمده ، اجراء نمود . بدين منظور لازم است که هر يک از حالات موجود را با استفاده از ElseIf از يکديگر جدا نموده و در نهايت تمامی ساختار را با استفاده از End If به پايان رساند .
If A=1 Then |
مثال : نحوه استفاده از ساختار If...Then
در اين مثال کامپيوتر عددی را به صورت تصادفی توليد نموده و از شما درخواست می شود که اين عدد را تشخيص دهيد .
: تايپ کد زير با استفاده از يک ويرايشگر
<script language="vb" runat="server"> |
توضيحات :
• در کد نوشته شده دو متغير به اسامی theNumber و theGuess تعريف که از آنان به منظور ذخيره عدد توليد شده تصادفی و عدد حدس زده شده توسط کاربر استفاده می گردد .
• برای توليد اعداد تصادفی از تابع ()rnd استفاده شده است. تابع فوق ، يک عدد اعشاری بين صفر و يک را توليد می نمايد . برای داشتن يک عدد تصادفی بين يک تا ده ، می بايست عدد توليد شده را در ده ضرب نمود . بدين ترتيب يک عدد بين صفر تا ده توليد می شود .
• با استفاده از ساختار If...Then بررسی لازم در خصوص عدد انتخاب شده توسط کاربر و مقايسه آن با عدد تصادفی توليد شده انجام و بر اساس آن پيام مناسبی به کاربر ارائه خواهد شد .
ساختار Select Cast
مثال : نحوه استفاده از ساختار Select Case
: تايپ کد زير با استفاده از يک ويرايش
<script language="vb" runat="server"> |
توضيحات :
• با استفاده از ساختار Select Case بررسی لازم در خصوص گزينه انتخاب شده توسط کاربر انجام و متناسب با آن پيام خاصی در کنترل lablel نمايش داده می شود .
• در صورتی که به هر دليلی يکی از گزينه های ارائه شده، انتخاب نشود و يا خطای خاصی اتفاق افتاده باشد که داده انتخابی با هيچيک از موارد ذکر شده در ساختار Select Case مطابقت ننمايد ، بخش Case else ساختار Select Case انتخاب و دستورات موجود در اين بخش اجراء خواهند شد .
VB.NET دارای چندين ساختار تکرار است :
• For...Next
• Do...While
• Do...Until
• For...Each
در اغلب موارد صرفا" از دو ساختار فوق ، استفاده می گردد . Do...While و Do...Until دارای عملکردی مشابه با يک تفاوت اساسی می باشند. از ساختار For...Each در زمان کار با آرايه ها و يا Collections ، استفاده می شود. ( Collection يک شی است که خود شامل اشياء ديگری است ) .
ساختار For...Next
• بخش اول ، خطی است که مسئوليت مشخص نمودن تعداد دفعات اجرای حلقه تکرار را برعهده دارد .
• بخش دوم ، مجموعه دستوراتی که می بايست تکرار گردند را مشخص می نمايد .
• بخش سوم ، خطی است که انتهای حلقه تکرار را مشخص خواهد کرد.
شکل عمومی ساختار For...Next :
For LoopCounter = StartValue To EndValue |
مثال زير نحوه استفاده از ساختار For...Next را نشان می دهد :
For intCounter = 1 To 5 |
مثال : نحوه استفاده از ساختار For...Next
: تايپ کد زير با استفاده از يک ويرايشگر
<script language="vb" runat="server"> |
ساختار Do...While
شکل عمومی ساختار Do...While :
ِDo While Expression test |
ساختار Do...Until
شکل عمومی ساختار Do...Until :
ِDo While |
ساختار For...Each
مثال : نحوه استفاده از ساختار For...Each
در اين مثال پس از تعريف يک آرايه و نسبت دهی مقدار به هر يک از عناصر آن ، با استفاده از For ...Each محتويات هر يک از عناصر آرايه در خروجی نمايش داده می شود.
<script language="vb" runat="server"> |