اجرای دستورات شرطی بر اساس حالت های مختلف مقدار یک متغیر (Variable)، با دستورهای switch و case ، در متلب (MATLAB)
گاهی اوقات نیاز داریم که بر اساس حالت های مختلفی که برای مقدار یک متغیر (Variable) امکان پذیر است، دستورهای متفاوتی را اجرا نماییم. یعنی مقادیر مختلفی که برای آن متغیر، امکان پذیر است را در نظر گرفته و سپس تصمیم می گیریم که مقدار متغیر، معادل هر یک از آنها که باشد، آنگاه یک سری دستور خاص اجرا گردد. برای این منظور، دستورهای switch و case در متلب (MATLAB) به کار می روند.
برای درک بهتر این موضوع، به مثال زیر توجه کنید :
یک متغیر با نام Kelidestan_Number تعریف می کنیم و سپس دستور switch را بر اساس مقدار متغیر Kelidestan_Number می نویسیم، یعنی در حالت های مختلف برای مقدار این متغیر، دستور switch کدهای متفاوتی را اجرا خواهد کرد :
سه خط اول کدها برای عدم تداخل برنامه فعلی با برنامه های قبلی اجرا شده در متلب (MATLAB) می باشد.
دستور disp برای نمایش یک متن (یا مقدار یک متغیر) در خروجی به کار می رود ( کلید شماره 32 ).
همان طور که مشاهده می کنید، در انتها، دستور end نوشته شده است.
نام متغیر Kelidestan_Number در جلوی دستور switch نوشته می شود تا بیان کنیم که باید مقدار متغیر Kelidestan_Number بررسی گردد :
درون دستور switch ، از دو عبارت case و otherwise استفاده می شود. ما می توانیم به تعداد دلخواه از case استفاده کنیم، به این صورت که مقدار مورد نظرمان برای متغیر Kelidestan_Number را در جلوی case می نویسیم :
و چون قصد داریم که اگر مقدار متغیر Kelidestan_Number برابر آن مقدار (یعنی عدد 3) بود، یک سری دستورات اجرا شود، باید این دستورات را دقیقا بعد از آن خط از کدها که شامل عبارت case است، بنویسیم :
بنابراین کد بالا بیان می کند که اگر مقدار متغیر Kelidestan_Number برابر 3 بود، آنگاه کد متلب (MATLAB) زیر اجرا گردد :
بنابراین case ها ی نوشته شده در دستور switch ، بررسی می شوند و اگر مقدار متغیر Kelidestan_Number برابر یکی از آنها باشد، آنگاه دستورات مربوط به آن case اجرا شده و سپس از دستور switch خارج می شویم.
با اجرای دستورات اولین case ای که برابر مقدار متغیر Kelidestan_Number است، دیگر case های بعدی بررسی نمی شوند، بنابراین حتی اگر مقدار متغیر در case های بعدی ذکر شده باشد، آن case ها اجرا نخواهند شد.
پس از همه case ها، می توانیم otherwise را ذکر کنیم که دستوراتی نیز برای آن در نظر گفته می شود که آن دستورات تنها در حالتی اجرا می شوند که مقدار متغیر Kelidestan_Number برابر هیچیک از مقادیر مربوط به case ها نباشد :
نتیجه :
اجرای کد متلب (MATLAB) مورد نظر، خروجی زیر را تولید می کند :
همان کدهای مثال قبل را این بار با تغییر مقدار متغیر Kelidestan_Number تکرار می کنیم (مقداری برای آن انتخاب می کنیم که در هیچیک از case ها ذکر نشده باشد) :
نتیجه :
این بار همان کدهای مثال اول را به صورتی تغییر می دهیم که مقدار متغیر Kelidestan_Number در دو case ذکر شده باشد تا نشان دهیم که تنها دستورات مربوط به اولین case که مقدار متغیر در آن وجود دارد، اجرا خواهد شد (کدهای case بعدی اجرا نمی شود) :
نتیجه :
ما می توانیم یک عبارت شرطی را اجرا نموده و نتیجه آن را در یک متغیر ذخیره نماییم و سپس با استفاده از دستور switch در متلب (MATLAB)، حالت های مختلفی که ممکن بوده اجرای آن عبارت شرطی، نتیجه دهد را در نظر گرفته و تصمیم می گیریم که برای هر یک از آن حالت ها چه دستوراتی اجرا گردد.
به مثال زیر توجه کنید :
نتیجه :
نتیجه :
اگر بخواهیم که برای یک case ، چند مقدار تعیین کنیم که اگر مقدار متغیر برابر هر یک از آن مقدارها بود، آنگاه کد مربوط به case اجرا شود، باید مقادیر آن case را مشابه کد زیر بنویسیم :
به مثال زیر توجه کنید :