ساختارهای کنترلی در VB.NET

در زمان نوشتن يک برنامه کامپيوتری با استفاده از هر زبان برنامه نويسی نظير VB.NET می توان از ساختارهای متفاوتی به منظور کنترل روند اجرای کدها ، استفاده نمود . ساختارهای فوق را می توان به سه گروه عمده تقسيم نمود : • ساختارهای تصميم گيری ( اتخاذ تصميم در خصوص اجراء و يا عدم اجرای خط و يا خطوطی از برنامه )
يکشنبه، 11 اسفند 1387
تخمین زمان مطالعه:
موارد بیشتر برای شما
ساختارهای کنترلی در VB.NET
ساختارهای کنترلی  در VB.NET
ساختارهای کنترلی در VB.NET

در زمان نوشتن يک برنامه کامپيوتری با استفاده از هر زبان برنامه نويسی نظير VB.NET می توان از ساختارهای متفاوتی به منظور کنترل روند اجرای کدها ، استفاده نمود . ساختارهای فوق را می توان به سه گروه عمده تقسيم نمود :
• ساختارهای تصميم گيری ( اتخاذ تصميم در خصوص اجراء و يا عدم اجرای خط و يا خطوطی از برنامه )
• ساختارهای تکرار ( اجرای يک و يا مجموعه ای کد به دفعات مورد نياز )
• ساختارهای پرش ( توقف روند جاری اجرای يک برنامه و پرش به يک محل و اجرای يک بلاک کد خاص )
در مجموعه مقالاتی که در اين رابطه ارائه خواهد شد به بررسی هر يک از ساختارهای فوق در VB.NET و نحوه استفاده از آنان به منظور ايجاد صفحات ASP.NET خواهيم پرداخت .
در بخش اول اين مقاله با هر يک از ساختارهای فوق به صورت اجمالی آشنا خواهيم شد.

اسکريپت های ويژوال بيسيک

يک برنامه ويژوال بيسيک از مجموعه ای دستورات ( کدهائی با يک گرامر خاص مربوط به يک زبان ) که باعث انجام پردازش های لازم به منظور توليد اطلاعات می شود ، تشکيل می گردد . دستورات و يا عبارات فوق با يک اولويت منطقی سازماندهی می گردند تا کامپيوتر را قادر به انجام پردازش های لازم به صورت مرحله به مرحله و بر اساس يک نظم خاص نمايند . در برنامه های وب ، از عبارات ويژوال بيسيک با نام اسکريپت ياد می شود .
کدهای ويژوال بيسيک را می توان از لحاظ فيزيکی در دو مکان متفاوت مستقر نمود : کدهای همراه صفحات وب و يا کدهائی که در يک فايل جداگانه مستقر و امکان دستيابی آنان از طريق صفحاب وب وجود خواهد داشت . صرفنظر از مکانی که کدها مستقر خواهند شد ، اسکريپت های ويژوال بيسيک ، به منزله روتين هائی می باشند که می توان از آنان به منظور انجام پردازش های موردنياز و توليد نتايج به منظور نمايش بر روی صفحه ، استفاده نمود .

بلاک های اسکريپت

زمانی که کدهای ويژوال بيسيک همراه يک صفحه وب آورده می شوند ، می بايست توسط يک بلاک اسکريپت ، مشخص گردند . يک بلاک اسکريپت ، بخشی از يک صفحه است که توسط تگ <script > و با فرمت زير مشخص می گردد :

<script runat="server" [language="vb|Visual Basic"] >

...Visual Basic code

</script>

خصلت runat=server ، نشاندهنده اين موضوع است که اسکريپت های نوشته شده می بايست توسط کامپيوتر سرويس دهنده وب وقبل از ارسال صفحه برای کامپيوتر سرويس گيرنده ، اجراء گردند. خصلت فوق ، همچنين بين اسکريپت های سرويس دهنده و اسکريپت های سرويس گيرنده و يا مرورگر ، تفاوت قائل می شود ( اسکريپت های سمت سرويس گيرنده معمولا" با استفاده از جاوااسکريپت نوشته می گردند ) .
خصلت Language ، زبان استفاده شده به منظور نوشتن اسکريپت ها را مشخص می نمايد . با توجه به اين که ويژوال بيسيک زبان پيش فرض برای نوشتن اسکريپت های سمت سرويس دهنده می باشد ، استفاده از خصلت فوق می تواند اختياری باشد ( در صورتی که از زبان ويژوال بيسيک برای نوشتن اسکريپت ها استفاده می نمائيم ) .
يک بلاک اسکريپت را می توان در هر محلی از صفحه وب مستقر و در صورت نياز از چندين بلاک اسکريپت استفاده نمود. (در اغلب موارد يک بلاک اسکريپت کفايت خواهد کرد). در اکثر موارد ، ترجيج داده می شود که اسکريپت ها در ابتدای صفحه مستقر گردند ( قبل از هر کد HTML ) . علت استقرار اسکريپت ها در ابتدای صفحه ، تشخيص اين موضوع است که سرويس دهنده در ابتدا اسکريپت ها را اجراء خواهد کرد ( قبل از انجام هر گونه عمليات مرتبط با عناصر موجود بر روی يک صفحه وب ) .

برنامه های جانبی

يک بلاک اسکريپت ، مکانی است که تمامی عبارات ويژوال بيسيک موجود بر روی يک صفحه را در خود نگهداری می نمايد . اکثر عبارات می بايست درون ساختارهای برنامه نويسی خاصی مستقر تا امکان اجرای صحيح آنان فراهم گردد . اين ساختارها ، دارای يک نام می باشند که با فراخوانی آنان ، تمامی دستورات موجود در ساختار به منظور انجام پردازش های مورد نياز ، فعال می گردند . متداولترين ساختار در اين رابطه ، برنامه های جانبی می باشند :

 

<script runat="server">

Sub Page_Load

...Visual Basic statements

End Sub

</script>

مروری بر ساختارهای شرطی

در ساختارهای شرطی ، در ابتدا يک و يا چندين شرط بررسی و بر اساس نتايج بدست آمده ، يک و يا چندين کد اجراء و از اجرای ساير خطوط صرفنظر خواهد شد .به منظور آشنائی با نحوه عملکرد اين نوع ساختارهای کنترلی به بررسی يک نمونه در دنيای واقعی می پردازيم . فرض کنيد در اتومبيل خود نشسته و در حال رانندگی می باشيد . در طول مسير با چراغ های راهنمائی متعددی برخورد می نمائيد . در صورتی که چراغ قرمز باشد ، می بايست اتومبيل خود را متوقف نموده و در انتظار سبز شدن چراغ راهنمائی بمانيد . در صورت سبز بودن ( شدن ) چراغ ، می توان بلافاصله به رانندگی خود ادامه داد . نوع عملياتی که می بايست انجام داده مستقيما" متاثر از نتيجه بررسی انجام شده ، می باشد . ( در اين مورد خاص رنگ چراغ راهنمائی ) .

انواع ساختار شرطی

در اين رابطه از دو ساختار عمومی استفاده می گردد :
• If ...Then ...Else : از ساختار فوق به منظور اجرای يک و يا چندين مجموعه خط کد پس از بررسی يک و يا چندين شرط ، استفاده می گردد . مثلا" فرض کنيد در يک صفحه وب که مسئوليت نمايش اخبار را برعهده دارد ، قصد داشته باشيم در خصوص نمايش اخبار بين المللی و يا ورزشی ، اتخاذ تصميم نمائيم . از ساختار If ...Then می توان به منظور انتخاب عباراتی به منظور اجراء که ماحصل مقايسه های پيچيده ای نظير عباراتی که از عملگرهای AND ,OR و يا NOT ، می باشند ، استفاده نمود .
• Select Case : از ساختار فوق به منظور اجرای يک و يا چندين مجموعه خط با توجه به وجود حالات متفاوتی که يک متغير می تواند داشته باشد ، استفاده می گردد . مثلا" در يک صفحه وب که مسئوليت نمايش اخبار را برعهده دارد ، می توان از چندين آيکون که نشاندهنده نوع اخبار می باشند ، استفاده نمود . پس از کليک نمودن کاربر بر روی هر يک از آيکون ها ، اخبار مربوط به آن گروه خاص نمايش داده می شود (سياسی ، تجاری ، ورزشی و يا اخبار مربوط به تکنولوژی) .

مروری بر ساختارهای تکرار

با استفاده از ساختارهای تکرار امکان اجرای مجموعه ای از خطوط ( کدها) به دفعات مورد نياز ، فراهم می گردد .

انواع ساختار تکرار

در اين رابطه از سه ساختار عمومی استفاده می گردد :
• For...Next : از ساختار فوق به منظور تکرار خط و يا مجموعه ای از خطوط استفاده می گردد . در اين ساختار ، در ابتدا نسبت به دفعاتی که می بايست کدهای مورد نظر تکرار گردند ، شناخت لازم وجود دارد . برای مشخص نمودن دفعاتی که می بايست دستورات تکرار گردند ، می توان از توابع متفاوتی نظير Sizeof استفاده نمود .
• Do While : از ساختار فوق به منظور تکرار خط و يا مجموعه ای از خطوط در مواردی که در زمان طراحی نسبت به دفعاتی که می بايست دستورات اجراء گردند ، آگاهی لازم وجود ندارد ، استفاده می گردد. در چنين مواردی لازم است که در ساختار تکرار نسبت به ادامه تکرار دستورات ، اتخاذ تصميم شود . بدين منظور شرط و يا شروط خاصی بررسی و ماداميکه نتيجه مثبت ( درست ) باشد ، دستورات تکرار می گردند .
• Fo ...Each : از ساختار فوق به عنوان گزينه ای مناسبتر نسبت به For...Next در مواردی که دارای مجموعه ای از آيتم ها می باشيم و نمی دانيم چند مرتبه می بايست عمليات تکرار انجام شود ، استفاده می گردد .

مروری بر ساختارهای پرش

با استفاده از ساختارهای پرش ، برنامه نويسان می توانند اجرای کد جاری را متوقف نموده و به يک محل ديگر ( يک بلاک ديگر )پرش نمايند . مثلا" می توانيم يک بلاک کد را با نام Showorder نوشته که مسئوليت نمايش مشخصات خريدار و کالاهای خريداری شده توسط وی را نمايش دهد . در صورتی که در طول برنامه لازم باشد به دفعات عمليات فوق را انجام دهيم ، ضرورتی به نوشتن مجدد کدها نخواهد بود . در چنين مواردی می توان اجرای برنامه را در محل مورد نظر متوقف نموده و به روتين Showorder پرش نمود . پس از اجرای مجموعه کدهای نوشته شده در روتين فوق ، مجددا" به محل فراخوانی روتين مراجعت و روند اجرائی برنامه دنبال می شود.

انواع ساختار پرش

در اين رابطه از دو ساختار عمومی استفاده می گردد :
• Subroutines : اين نوع برنامه ها را می توان با فراخوانی نام آنان به خدمت گرفت . پس از فراخوانی هر روتين مجموعه کدهای موجود در آنان اجراء شده و در ادامه کنترل به دستور پس از محل فراخوانی روتين برمی گردد .
• Function : عملکرد اين نوع روتين ها مشابه Subroutine بوده و تنها تفاوت موجود ، برگرداندن يک مقدار به برنامه و يا محل فراخوانی تابع است .
ساختارهای اشاره شده ، به منزله ستون فقرات هر برنامه ای می باشند که با ASP.NET نوشته می گردد .
در ادامه با انواع عملياتی که می توان توسط هر يک از ساختارهای فوق انجام داد ، بيشتر آشنا می شويم :

مثال يک  :

خواسته

می خواهيم در خصوص نمايش صفحه Aو يا صفحه Bاتخاذ تصميم نمائيم .

راه حل

استفاده از ساختار تصميم گيری

علت ؟

ما صرفا" می خواهيم يکی از دو احتمال موجود را بررسی نمائيم  .

مثال دوم :   

خواسته

 نمايش ليست اعضای يک کلوپ شامل نام ، نام خانوادگی ، آدرس و ساير اطلاعات ذيربط

راه حل

استفاده از ساختار تکرار

علت ؟

ما نيازمند اجرای مجموعه کد مشابهی ( بازيابی اطلاعات مربوط به هر يک از اعضاء )  به دفعات مشخص می باشيم . ( تکرار برای هر يک از اعضاء تا زمانيکه ليست تمامی اعضاء نمايش داده شود . )

مثال سوم   

خواسته

 نمايش داده در يک جدول

راه حل

 ساختار تکرار

علت ؟

 ما نيازمند اجرای کد مشابهی ( ايجاد يک سطر در جدول ) به منظور ايجاد تمامی سطرهای مورد نياز می باشيم .

مثال چهارم :

خواسته

 پس از استقرار يک آيتم که در صفحه مشخصات کالا تشريح شده است ، قصد داريم چندين خط اطلاعات در رابطه با نحوه ثبت سفارش را اضافه نمائيم . ممکن است ما دارای چندين آيتم می باشيم که در صفحات متعددی نمايش داده می شوند و لازم است که اطلاعات مربوط به نحوه ثبت سفارش برای هر يک از آنان نيز نمايش داده شود .

راه حل

 استفاده از يک Subroutine

علت ؟

 ما نيازمند توقف روند اجرای کد اصلی و اجرای کدهای لازم به منظور نحوه تشريح ثبت سفارش ، می باشيم . با توجه به اين که مجموعه خطوط لازم به منظور نمايش "نحوه ثبت سفارش " ، می بايست چندين مرتبه اجراء گردند ، بهتر است که آنان را يک مرتبه نوشته و به دفعات مورد نياز فراخوانده شوند.

مثال پنچم :

خواسته

فرض کنيد در يک برنامه لازم است که قيمت يک کالا که توسط کاربر انتخاب می گردد ، محاسبه و در چندين محل بر روی يک صفحه ، نمايش داده شود .

راه حل

 استفاده از يک تابع

علت ؟

ما نيازمند توقف روند اجرای صفحه  و پرش به محلی  می باشيم که کدهای مورد نظر به منظور محاسبه قيمت يک کالا را شامل می شود . پس از اجرای کدهای مورد نظر ، مجددا" به صفحه اوليه مراجعه می گردد . با توجه به اين که لازم است چندين مرتبه قيمت يک کالا ، محاسبه گردد ، بهتر است که فورمول لازم برای محاسبه قيمت را يک مرتبه نوشته و آن را به دفعات مورد نياز فراخواند .

همانگونه که قبلا" اشاره گرديد ، با استفاده از ساختارهای تصميم گيری ، يک و يا چندين شرط بررسی و بر اساس نتايج بدست آمده ، دستور و يا دستوراتی اجراء و يا از اجرای دستور و يا دستوراتی صرفنظر می گردد . در VB.NET از دو روش متفاوت در اين رابطه استفاده می گردد :
• If ...Then : تعداد مسيرهائی را که می توان پس از بررسی يک عبارت شرطی انتخاب نمود ، اندک است .
• Select Case :تعداد مسيرهائی را که می توان پس از بررسی يک عبارت شرطی انتخاب نمود ، زياد است .
مثلا" در صورتی که در يک برنامه قصد طرح اين پرسش از کاربران را داريم که : " آيا می خواهيد قرار ملاقات خود را از طريق تلفن ، نهائی نمائيد ؟"قطعا" پاسخ به سوال فوق دو گزينه بيشتر نخواهد داشت ( پاسخ مثبت ( True ) و منفی ( False ) ) . بنابراين می توان در چنين مواردی از ساختار If...Then استفاده نمود . ولی در صورتی که از کا ربر پرسش شود که : " آيا می خواهيد قرار ملاقات خود را از طريق تلفن ، فاکس و يا Email ، نهائی نمائيد ؟" ، با توجه به تعداد گزينه های موجود ، ترجيح داده می شود که از ساختار Select Case استفاده شود .
قبل از پرداختن با جزئيات نحوه استفاده از ساختارهای فوق ، لازم است با برخی عملگرها که از آنان به منظور ايجاد عبارات شرطی استفاده می شود،بيشتر آشنا شويم .

کاربرد

عملگر

 مساوی

 =

 کوچکتر از

> 

کوچکتر يا مساوی 

=>

 نامساوی

<> 

 بزرگتر

< 

 بزرگتر يا مساوی

 =>

عملگرهای منطقی

در 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 ازروش های متفاوتی استفاده می گردد . برای انتخاب گرامر مناسب می بايست به دو سوال فوق پاسخ داده شود :
• در مواردی که نتيجه عبارت شرطی False گردد ، قصد انجام کار( و يا کارهای ) خاصی را داريد ؟
• در صورتی که نتيجه عبارت شرطی درست باشد ، قصد اجرای بيش از يک دستور را داريد ؟
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>

توضيحات :

• با استفاده از کنترل <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>

توضيحات :

• با استفاده از کنترل <asp:radiobuttonlist> ، مجموعه ای از گزينه ها ارائه شده است .
• با استفاده از ساختار 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
     ..... دستورات تکرارشونده ....
Next LoopCounter

مثال زير نحوه استفاده از ساختار For...Next را نشان می دهد :

For   intCounter = 1 To 5
    Message1.Text = Message.Text1 & " Test Looping Structures " & "<br/>"
Next  intCounter

از ساختار For...Next در مواردی که تعداد دفعات اجرای حلقه تکرار از قبل مشخص است ، استفاده می گردد .

مثال : نحوه استفاده از ساختار For...Next

در اين مثال با ارائه يک DropDownlist و بر اساس انتخاب کاربر ، يک دستورالعمل تکرار می گردد .
: تايپ کد زير با استفاده از يک ويرايشگر

 <script language="vb" runat="server">
Sub Page_load()
  Dim number As Integer
  Dim counter As Integer
  If Page.IsPostBack then
    number = numberSelection.SelectedItem.value
    Message1.Text = ""
  For counter = 1 to number
    Message1.Text = Message1.Text & " نحوه استفاده از ساختار تکرار" & "<br/>"
  Next counter
 End If
End Sub
</script>

<html dir=rtl>
<head>
<title>Loop Example</title>
</head>
<body>
<form runat="server">
لطفا" يک عدد را انتخاب نمائيد: <br><br>
<asp:dropdownlist id="numberSelection" 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:dropdownlist>
<br><br>
<input type="Submit" Value="ارسال درخواست"><br><br>
<asp:label id="message1" runat="server"/>
</form>
</body>
</html>

ساختار Do...While

از ساختار فوق در مواردی استفاه می گردد که نسبت به تعداد دفعاتی که می بايست فرآيند تکرار انجام شود ، شناخت اوليه ای وجود نداشته باشد .در ابتدا عبارت شرطی بررسی و در صورتی که ارزش آن TRUE باشد ، حلقه تکرار خواهد شد.
شکل عمومی ساختار Do...While :

ِDo While  Expression test
     ..... دستورات تکرارشونده ....
Loop 

ساختار Do...Until

همانگونه که در ساختار Do...While مشاهده گرديد ، عبارت شرطی در ابتدای حلقه قرار گرفته و پس از بررسی و در صورت درست بودن ، دستورات موجود در حلقه اجراء خواهند شد . با استفاده از ساختار Do...Until می توان عمليات بررسی شرط را در انتهای حلقه و پس از يک بار اجرای قطعی دستورات تکرار شونده ، انجام داد.
شکل عمومی ساختار Do...Until :

ِDo While  
     ..... دستورات تکرارشونده ....
Loop  Until  Expression test

ساختار For...Each

ساختار فوق دارای عملکردی مشابه For...Next می باشد. با اين تفاوت که از آن به منظور انجام عمليات مورد نظر در ارتباط با هر يک از عناصر درون يک آرايه و يا يک Collection استفاده می گردد .
مثال : نحوه استفاده از ساختار For...Each
در اين مثال پس از تعريف يک آرايه و نسبت دهی مقدار به هر يک از عناصر آن ، با استفاده از For ...Each محتويات هر يک از عناصر آرايه در خروجی نمايش داده می شود.

 <script language="vb" runat="server">
Sub Page_load()
   Dim Item As String
   Dim StrArticles(2) As String
   StrArticles(0) = " ساختارهای کنترلی- بخش اول"
   StrArticles(1) = " ساختارهای کنترلی- بخش دوم"
   StrArticles(2) = " ساختارهای کنترلی- بخش سوم"
  For Each Item In StrArticles
       Message.Text = Message.Text & Item & "<BR>"
Next
End Sub
</script>

<html dir=rtl>
<head>
<title>Loop Example</title>
</head>
<body>
<form runat="server">
<asp:label id="message" runat="server"/>
</form>
</body>
</html>





نظرات کاربران
ارسال نظر
با تشکر، نظر شما پس از بررسی و تایید در سایت قرار خواهد گرفت.
متاسفانه در برقراری ارتباط خطایی رخ داده. لطفاً دوباره تلاش کنید.
مقالات مرتبط
موارد بیشتر برای شما