در زمان نوشتن يک برنامه کامپيوتري با استفاده از هر زبان برنامه نويسي نظير 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> |