درس نهم : شروط و تصمیم گیری با Select Case
درس نهم : شروط و تصمیم گیری با Select Case
9-1 مقدمه
در درس قبل با شروط و تصمیم گیری به کمک If … Then آشنا شدیم. همچنین آموختیم اگر شرایط تصمیم گیری متعددی وجود داشته باشد، میتوان از شروط تو در تو استفاده کرد. اما راه بهتر، بهینه تر و خوانا تری برای این کار وجود دارد. وقتی تعداد شرایط ممکن برای یک تصمیم به تعداد خیلی زیادی میرسد، استفاده از شروط تو در تو :
- خوانایی برنامه را کاهش میدهد.
- بازدهی و سرعت را کاهش میدهد.
- حجم کد را افزایش میدهد.
- احتمال خطا را افزایش میدهد.
- اشکال یابی آن دشوار میشود.
در همین راستا میتوان در مواقعی که تعدد شرایط وجود دارد، به جای IF … Then … Else از Select Case استفاده کرد. استفاده از Select Case مشکلات ذکر شده را رفع کرده و کد را معقول تر و با کیفیت تر میسازد.
9-2 سینتکس Select Case
سینتکس این کد به صورت زیر است:
Select Case (Statement)
Case (val 1)
Statement
…
Case else
Statement
End Select
ابتدا با عبارت کلیدی Select Case شروع و مقابل آن متغیر یا هر تارگتی که میخواهیم شرایط ممکن آن را مورد پیشبینی قرار دهیم مینویسیم. سپس Case های مختلف را با ارزش های معین تعیین میکنیم. زیر هر Case کدهایی که میخواهیم در صورت اتفاق افتادن آن Case اجرا شوند مینویسیم. بعد از اتمام همه ی Case ها با کلمه ی کلیدی End Select بلاک کد را میبندیم.
9-2-1 Case Else
Case Else درست مانند Else در بلاک IF عمل میکند. وقتی هیچ یک از شرایط پیش بینی شده صادق نبود میخواهیم دستورات مربوط به این قسمت اجرا شوند. Case Else یعنی اگر هر اتفاقی جز موارد تعریف شده رخ داد دستورات زیر را اجرا کن.
9-2-2 یک تفاوت عمده ی Select Case با دستور مشابه در زبانهای C-Style
اگر با زبانهای سی استایل آشنا باشید، میدانید که دستور Select Case در ویژوال بیسیک در واقع معادلی برای دستور Switch در این زبانهاست. اگر با Switch آشنا هستید ممکن است به اشتباه در Select Case از دستور Break استفاده کنید. باید دانست که Select Case نیازی به دستور Break ندارد. همچنین دقت کنید که بر حسب عادت از دستور Default استفاده نکنید. در ویژوال بیسیک به جای دستور Default از Case Else استفاده میشود.
9-3 تعیین بازه ی شرط در Select Case
9-3-1 دستور TO
با این عبارت کلیدی میتوان یک بازه برای شرط تعیین کرد. Case 40 To 50 یعنی از 40 تا 50 به مثال زیر توجه فرمایید:
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load Dim mark As Single = 19 Select Case mark Case 0 To 10 MsgBox(“افتضاح”) Case 11 To 14 MsgBox(“ضعیف”) Case 15 To 16 MsgBox(“خوب”) Case 17 To 20 MsgBox(“عالی”) Case Else MsgBox(“ارور”) End Select End Sub
در مثال بالا متغیر مارک با مقدار اولیه ی 19 و از نوع اعشاری تعریف شده است. شرط اول بیان میکند که اگر نمره از عدد صفر تا 14 و هر عددی مابین این دو عدد بود، پیغام "افتضاح" را چاپ کن. و همینطور تا پایان کد. Case Else هم با پیغام "ارور" قرار داده شده که اگر مقداری جز بین 0 تا 20 وارد شد برنامه بلاتکلیف نماند.
تمرین : مثال درس قبل یعنی محاسبه گر شاخص توده بدنی را با Select Case بنویسید.