آموزش متلب

اجرای دستورات شرطی در متلب

اجرای دستورات شرطی بر اساس حالت های مختلف مقدار یک متغیر، با دستور switch ، در متلب (MATLAB)

گاهی اوقات نیاز داریم که بر اساس حالت های مختلفی که برای مقدار یک متغیر (Variable) امکان پذیر است، دستورهای متفاوتی را اجرا نماییم. یعنی مقادیر مختلفی که برای آن متغیر، امکان پذیر است را در نظر گرفته و سپس تصمیم می گیریم که مقدار متغیر، معادل هر یک از آنها که باشد، آنگاه یک سری دستور خاص اجرا گردد. برای این منظور، دستور switch در متلب (MATLAB) به کار می رود.

برای درک بهتر این موضوع، به مثال زیر توجه کنید :

مثال

یک متغیر با نام Kelidestan_Number تعریف می کنیم و سپس دستور switch را بر اساس مقدار متغیر Kelidestan_Number می نویسیم، یعنی در حالت های مختلف برای مقدار این متغیر، دستور switch کدهای متفاوتی را اجرا خواهد کرد :

clear all
close all
clcKelidestan_Number = 5;

switch Kelidestan_Number
    case 3
        disp(‘kelidestan.com 3’);
    case 4
        disp(‘kelidestan.com 4’);
    case 5
        disp(‘kelidestan.com 5’);
    otherwise
        disp(‘kelidestan.com other value’);
end

سه خط اول کدها برای عدم تداخل برنامه فعلی با برنامه های قبلی اجرا شده در متلب (MATLAB) می باشد.

دستور disp برای نمایش یک متن (یا مقدار یک متغیر) در خروجی به کار می رود ( کلید شماره 32 ).

همان طور که مشاهده می کنید، در انتها، دستور end نوشته شده است.

نام متغیر Kelidestan_Number در جلوی دستور switch نوشته می شود تا بیان کنیم که باید مقدار متغیر Kelidestan_Number بررسی گردد :

switch Kelidestan_Number

درون دستور switch ، از دو عبارت case و otherwise استفاده می شود. ما می توانیم به تعداد دلخواه از case استفاده کنیم، به این صورت که مقدار مورد نظرمان برای متغیر Kelidestan_Number را در جلوی case می نویسیم :

case 3

و چون قصد داریم که اگر مقدار متغیر Kelidestan_Number برابر آن مقدار (یعنی عدد 3) بود، یک سری دستورات اجرا شود، باید این دستورات را دقیقا بعد از آن خط از کدها که شامل عبارت case است، بنویسیم :

case 3
    disp(‘kelidestan.com 3’);

بنابراین کد بالا بیان می کند که اگر مقدار متغیر Kelidestan_Number برابر 3 بود، آنگاه کد متلب (MATLAB) زیر اجرا گردد :

disp(‘kelidestan.com 3’);

بنابراین case ها ی نوشته شده در دستور switch ، بررسی می شوند و اگر مقدار متغیر Kelidestan_Number برابر یکی از آنها باشد، آنگاه دستورات مربوط به آن case اجرا شده و سپس از دستور switch خارج می شویم.

نکته

با اجرای دستورات اولین case ای که برابر مقدار متغیر Kelidestan_Number است، دیگر case های بعدی بررسی نمی شوند، بنابراین حتی اگر مقدار متغیر در case های بعدی ذکر شده باشد، آن case ها اجرا نخواهند شد.

پس از همه case ها، می توانیم otherwise را ذکر کنیم که دستوراتی نیز برای آن در نظر گفته می شود که آن دستورات تنها در حالتی اجرا می شوند که مقدار متغیر Kelidestan_Number برابر هیچیک از مقادیر مربوط به case ها نباشد :

otherwise
    disp(‘kelidestan.com other value’);

نتیجه :

اجرای کد متلب (MATLAB) مورد نظر، خروجی زیر را تولید می کند :

kelidestan.com 5

مثال

همان کدهای مثال قبل را این بار با تغییر مقدار متغیر Kelidestan_Number تکرار می کنیم (مقداری برای آن انتخاب می کنیم که در هیچیک از case ها ذکر نشده باشد) :

clear all
close all
clcKelidestan_Number = 63;

switch Kelidestan_Number
    case 3
        disp(‘kelidestan.com 3’);
    case 4
        disp(‘kelidestan.com 4’);
    case 5
        disp(‘kelidestan.com 5’);
    otherwise
        disp(‘kelidestan.com other value’);
end

نتیجه :

kelidestan.com other value

مثال

این بار همان کدهای مثال اول را به صورتی تغییر می دهیم که مقدار متغیر Kelidestan_Number در دو case ذکر شده باشد تا نشان دهیم که تنها دستورات مربوط به اولین case که مقدار متغیر در آن وجود دارد، اجرا خواهد شد (کدهای case بعدی اجرا نمی شود) :

clear all
close all
clcKelidestan_Number = 4;

switch Kelidestan_Number
    case 3
        disp(‘kelidestan.com 3’);
    case 4
        disp(‘kelidestan.com 4’);
    case 5
        disp(‘kelidestan.com 5’);
    case 4
        disp(‘kelidestan.com 4 repeat’);
    otherwise
        disp(‘kelidestan.com other value’);
end

نتیجه :

kelidestan.com 4

نکته

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

به مثال زیر توجه کنید :

مثال
clear all
close all
clcKelidestan_Number = (2>=5)

switch Kelidestan_Number
    case 0
        disp(‘False’);
    case 1
        disp(‘True’);
    otherwise
        disp(‘other value’);
end

نتیجه :

Kelidestan_Number =

     0

False

مثال
clear all
close all
clcKelidestan_Number = (8>=5)

switch Kelidestan_Number
    case 0
        disp(‘False’);
    case 1
        disp(‘True’);
    otherwise
        disp(‘other value’);
end

نتیجه :

Kelidestan_Number =

     1

True

نکته

اگر بخواهیم که برای یک case ، چند مقدار تعیین کنیم که اگر مقدار متغیر برابر هر یک از آن مقدارها بود، آنگاه کد مربوط به case اجرا شود، باید مقادیر آن case را مشابه کد زیر بنویسیم :

case {22, 25, 36}

به مثال زیر توجه کنید :

مثال
clear all
close all
clcKelidestan_Number = 25;

switch Kelidestan_Number
    case 14
        disp(‘kelidestan.com – 14’);
    case {22, 25, 36}
        disp(‘kelidestan.com – 22 or 25 or 36’);
    otherwise
        disp(‘other value’);
end

نتیجه :

kelidestan.com – 22 or 25 or 36

مثال
clear all
close all
clcKelidestan_String = ‘kelidestan.com’;

switch Kelidestan_String
    case ‘kelidestan.com’
        disp(‘Learn MATLAB’);
    case ‘city’
        disp(‘shiraz’);
    case 15
        disp(‘number’);
    otherwise
        disp(‘other value’);
end

نتیجه :

Learn MATLAB

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *