عبارت Select-Case در ویژوال بیسیک

در مقالات قبلی با ساختار شرطی If آشنا شدیم، یادگرفتیم که چگونه برای رویدادهای مختلف برنامه ریزی کنیم، عبارت Select-Case در ویژوال بیسیک بسیار مشابه ساختار If عمل مینماید. در واقع تمام اموری که با عبارت Select-Case میتوان انجام داد توسط ساختار If هم قابل انجام هستند.

عبارت Select-Case در ویژوال بیسیک

کاربرد عبارت Select-Case در ویژوال بیسیک

فرض کنید میخواهیم برای یک رویداد برنامه ریزی کنیم، مثلاً میخواهیم برنامه ای بنویسیم که میزان پاداش کارکنان یک شرکت را با توجه به حقوق دریافتی هریک تعیین نماید، در نظر بگیرید سه بازه ی حقوقی در شرکت وجود دارد و میزان پاداش با توجه به اینکه حقوق فرد در کدام بازه قرار داشته باشد تعیین میگردد، نوشتن چنین کدی با استفاده از ساختار شرطی If بسیار ساده است. برای نوشتن کد مورد نظر با استفاده از عبارت Select-Case کافیست حقوق فرد مورد نظر را به عنوان Case به برنامه معرفی نماییم، سپس برای سه Case متفاوت که در واقع سه بازه ی حقوقی مختلف میباشند مقدار متغیر پاداش را مشخص کنیم.

به بیان واضح تر، عبارت Select-Case زمانی کاربرد دارد که تعداد رویدادها و اتفاقاتی که قرار است برای Case رخ دهد محدود میباشد، مانند مثال بالا که برای Case حقوق تنها سه حالت وجود داشت.

ساختار عبارت Select-Case در ویژوال بیسیک

ساختار یا Syntax عبارت Select-Case به صورت زیر است:

در ساختار بالا TestExpression در واقع همان متغیری است که در مورد رویداد های آن تصمیم گیری میکنیم، در مثال بالا میزان حقوق فرد را میتوان به عنوان TestExpression به برنامه معرفی کرد، عبارات اختیاری بعدی همگی رویداد ها و تصمیم برنامه در قبال هر رویداد را معرفی میکنند.

TestExpression میتواند یک متغیر عددی یا یک متغیر رشته ای باشد.

برای فهم بیشتر مطلب، مثال ذکر شده در ابتدای مقاله را با استفاده از عبارت Select-Case مینویسیم:

در کد بالا (که کاملتر آن در انتهای مقاله آورده شده است)، متغیر Salary یک متغیر عددی در برگیرنده میزان حقوق هر فرد میباشد و متغیر Award در واقع پاداش تعلق گرفته به هر فرد است که با استفاده از عبارت Select-Caseو با توجه به میزان حقوق هر فرد تعیین میگردد.

برای تکمیل کد بالا نیاز به دریافت میزان حقوق هر فرد و نمایش میزان پاداش متعلقه داریم، در انتهای این مقاله کد بالا به صورت کامل و قابل اجرا آورده شده است، لطفاً برای تمرین بیشتر این کد را اجرا نمایید.

عبارت Select-Case در ویژوال بیسیک

در ساختار عبارت Select-Case، در برابر کلمه ی کلیدی Case معمولاً از سه ساختار استفاده میگردد:

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

در مقابل عبارت Case میتوان حتی از چندین شرط به صورت همزمان استفاده نمود، البته شروط نباید همپوشانی داشته باشند، مانند مثال زیر:

این Case مقدار متغیر از ۱ تا ۴، از ۷ تا ۹، یازده، سیزده و مقادیر بیشتر از MaxNumber را شامل میشود. از ساختار مشابه میتوان برای متغیرهای رشته ای هم استفاده نمود.

ساختار عبارت Select-Case در ویژوال بیسیک

عملکرد عبارت Select-Case در ویژوال بیسیک

در حالی که کدها از بالا به پایین اجرا میشوند، سه حالت اتفاق میافتد:

  • اگر متغیر مورد بررسی (در مثال بالا Salary) منطبق با شرایط ذکر شده در یک Case باشد آنگاه کدهای قرار گرفته در ذیل آن Case اجرا میشوند و اجرای کدها تا انتهای برنامه صورت میگیرد،
  • اگر متغیر مورد بررسی (در مثال بالا Salary) شرایطی منطبق با چند Case را دارا بود تنها کدهای ذیل Case اولین انطباق اجرا میشوند و بقیه ی موارد صرفه نظر میشوند
  • و اگر هیچکدام از Case ها برای متغیر مورد بررسی مناسب نبود برنامه بدون توقف ادامه مییابد.

کاربرد عبارت Case Else

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

مثال استفاده از عبارت Select-Case

کد زیر متغیر Number را دریافت میکند و با توجه به مقدار آن یک پیام در Immediate Window چاپ میکند، مقدار Number برابر با ۸ قرار داده شده است، این کد را اجرا کرده، به دلخواه خود تغییر داده و استفاده نمایید تا مطلب را کاملاً متوجه شوید:

کد زیر در واقع کد کامل مثال ذکر شده در ابتدای مقاله میباشد، در این کد میزان حقوق فرد به عنوان یک متغیر توسط تابع Inputbox دریافت میگردد و مقدار پاداش تعلق گرفته به ایشان توسط یک تابع Msgbox نمایش داده میشود:

عبارت Select-Case در ویژوال بیسیک

اشتراک گذاری در شبکه های اجتماعی: share on facebook share on google plus share on linkedin

۲ نظر

دیدگاهتان را بنویسید؟