دستور if در متلب
در این جلسه از آموزش رایگان متلب هوسم ، عبارت شرطی در متلب را بررسی خواهیم کرد. با کمک عبارت شرطی در متلب میتوان تصمیمگیری را به کدهایمان اضافه کنیم! سادهترین عبارت شرطی ، دستور if در متلب است. با استفاده از دستور if در متلب ، میتوان کدهایی را فقط در صورت برقرار بودن شرط یا شرطهایی خاص، اجرا کرد.
ساختار تصمیمگیری در متلب
یک کامپیوتر به تنهایی نمیتواند تصمیمگیری کند. برنامهنویس باید تصمیمگیری را در قالب یک کد به کامپیوتر بفهماند! به طور کلی، بلوکدیاگرام تصمیمگیری در یک زبان برنامهنویسی به شکل زیر است:
معمولا برای تصمیمگیری، یک شرط باید وجود داشته باشد. اگر آن شرط برآورده شود، یک کد خاص اجرا میشود. اگر شرط برآورده نشود، طبیعتا آن کد خاص اجرا نخواهد شد. یکی از ابزارهایی که میتوان تصمیمگیری را به کامپیوتر فهماند دستور if است. در بخش بعدی با دستور if در متلب آشنا خواهیم شد. این جلسه یکی از جدیترین و مهمترین جلساتی است که تاکنون داشتهایم. پس تمام تمرکز و انرژی خود را برای یادگیری آن بگذارید لطفا.
دستور if در متلب
سادهترین عبارت شرطی در متلب، دستور if است. ساختار دستور if را میتوان به سه بخش تقسیم نمود. این سه بخش در تصویر زیر نشان داده شدهاند.
شرط در دستور if در متلب
بخش اول، <if <condition است. عبارت if، یک کلیدواژه است. این کلیدواژه شروعِ یک عبارت شرطی را نشان میدهد. در یک عبارت شرطی عبارت if حتما حتما باید وجود داشته باشد. قسمت دوم در این بخش عبارت <condition> است. در این قسمت شرطی که موردنظرمان هست را باید بنویسیم. شرطی که وارد میکنیم یک عبارت منطقی باید باشد که یا صفر است یا یک. دقت کنید که بین if و شرط حتما حداقل یک فاصله (space) باید وجود داشته باشد.
statement در دستور if در متلب
بخش دوم یک عبارت شرطی، <statement> است. هرچیزی که در این قسمت بنویسیم در صورت برقرار بودن شرط، اجرا میشود. یعنی اگر شرط ما یک باشد، statement اجرا میشود. در این بخش هرچقدر که دلمان بخواهد میتوانیم کد بنویسیم و از این جهت محدودیتی وجود ندارد. تنها آدابی که باید در این بخش رعایت کنیم، indentation است. یعنی کدهایی که در این بخش مینویسیم از سرِ خط شروع نمیشوند. بلکه بعد از 4 فاصله باید نوشته شوند! شاید پیش خودتان بگویید، این دیگر چه قانون عجیب و غریبی است! اما این کار به منظور خوانایی بهتر کدها انجام شده است. بعدها خواهید دید که همین 4 فاصله چه کمکی به درک سریعتر کدها میکند.
end در دستور if در متلب
بخش سوم end است. عبارت end هم مانند if یک کلیدواژه است. این عبارت پایان یک عبارت شرطی را مشخص میکند. حتما حتما هر if باید با یک end، به اصطلاح بسته شود. اگر end را نگذاریم متلب از کد ما خطا میگیرد. پس حتما یادتان باشد که هر if باید با یک end بسته شود.
چطور یک عبارت شرطی در متلب بنویسیم ؟
تا اینجا به صورت تئوری با ساختار تصمیمگیری و سپس با ساختار دستور if در متلب آشنا شدیم. حالا وقت این است که کد بزنیم. اما قبل از شروع، لازم است کاری انجام دهیم! در جلسه آشنایی با محیط متلب 2 ما با m-file آشنا شدیم. تا اینجا شاید هیچ نیازی به آن احساس نشد. اما از اینجا به بعد ضروری است برای دستوراتی مثل if که در چند خط نوشته میشوند از m-file استفاده کنیم. پس یک m-file با نام conditional_statements بسازید.
مثال عملی از نوشتن دستور if در متلب (بخش تئوری)
خب بیایید یک مثال حل کنیم. ابتدا یک متغیر به نام x تعریف میکنیم. میخواهیم x یک متغیر تصادفی بین 0 و 100 باشد. برای این کار کافی است بنویسیم:
x = rand * 100;
لطفا حتما کد را در m-file بنویسید. خب تا اینجا ما یک عدد تصادفی به نام x داریم. فرض کنید x، نمره یک دانشجو در درس برنامهنویسی باشد! از ما خواسته شده کدی بنویسیم که اگر x بزرگتر یا مساوی با 50 بود، عبارت passed نمایش داده شود. بیایید این جمله را تجزیه و تحلیل کرده و اجزای مختلف عبارت شرطی را در آن مشخص کنیم. گفته شده «اگر»، خب این همان if است! «x بزرگتر یا مساوی با 50 بود»، میتوانید حدس بزنید این کدام قسمت از عبارت شرطی است؟
این عبارت همان شرط یا condition است. سپس گفته شده « عبارت passed نمایش داده شود»، این همان statement است. در نهایت نقطه گذاشته شده که معادل با end است!
مثال عملی از نوشتن دستور if در متلب (بخش کدنویسی)
خب با توجه به توضیحاتی که داده شد، فکر نمیکنم نوشتن این کد برایتان کار سختی باشد. برای حل این مسئله کافی است بنویسیم:
if x >= 50 disp('passed') end
سپس Run را بزنید. بعد از Run کردن ممکن است با پیغامی شبیه به پیغام زیر مواجه شویم:
در این صورت گزینه Change Folder را انتخاب کنید. اگر دلیل انجام این کار را نمیدانید به جلسه آشنایی با متلب 2 مراجعه کنید. خب بعد از اجرای m-file، نتیجه در Command Window نمایش داده خواهد شد. من که چیزی در Command Window نمیبینم! شما چطور؟ اگر در Command Window شما هم چیزی نشان داده نشده است، مقدار x را چک کنید. کجا میتوانید مقدار x را چک کنید؟ این متغیر در workspace وجود دارد. همچنین بهسادگی میتوانید در Command Window تایپ کنید x. خب احتمالا دیدید که مقدار x کمتر از 80 است. خب درست است دیگر، شرط برآورده نشده است. کد را آنقدر اجرا کنید تا عبارت passed را در Command Window ببینید!
a = rand * 10; if a <= 4 disp('small') end
شرط if else در متلب
در مثالی که قبلا گفتیم، از ما خواسته شده که افراد مردود را هم مشخص کنیم. کد ما باید طوری نوشته شود اگر نمره دانشجو کمتر از 50 باشد عبارت “failed” نمایش داده شود. چطور با if این کار را انجام دهیم؟ خب میتوانیم دوتا دستور if در متلب بنویسیم:
x = rand*100; if x >= 50 disp('passed') end if x < 50 disp('failed') end
این کد را Run کنید و نتیجه را ببینید. اما متلب یک امکان دیگر در اختیار ما گذاشته است. آن هم استفاده از if else end است. خب همانطور که از عنوان مشخص است، else هم به دستور if اضافه شد. با ترکیب if و else میتوان دو شرط همزمان بگذاریم. یعنی چه؟ فرض کنید، برای خرید ماست به مغازه رفتهاید. اگر ماست داشت که هیچ، اما اگر نداشت دست خالی برمیگردید! این میشود همان دستور if بخش قبل. اما معمولا اینطور است که با خودتان میگویید که اگر ماست نداشت، دوغ میخرم! دستور if else end یعنی همین. بیایید کدی که با دو if نوشتیم را این بار با if else بنویسیم:
x = rand*100; if x >= 50 disp('passed') else disp('failed') end
a = rand * 10; if a <= 4 disp('small') else disp('medium') end
شرط if elseif else در متلب
در مثالی که قبلا گفتیم، از ما خواسته شده که یک تشویق برای دانشجویانی که نمرهشان بالای 90 شده است، نمایش داده شود. یعنی اگر نمره کمتر از 50 بود، “failed”، اگر بالای 50 بود، “passed” نوشته شود. همچنین در صورتی که از 90 بالاتر باشد، عبارت “Good Job! you passed the exam with a high score” نمایش داده شود. برای این کار باز هم میتوانیم چند if بنویسیم:
x = rand*100; if x < 50 disp('failed') end if x >= 50 & x <90 disp('passed') end if x >= 90 disp('Good Job! you passed the exam with a high score') end
با Run کردن کد بالا میبینید که کاملا درست کار میکند. اما متلب یک امکان دیگری نیز در اختیار ما میگذارد و آن هم if elseif else end است! خب یک کلیدواژه دیگر بنام elseif هم به دستور if اضافه شد. دقیقا زمانی که چند شرط داریم، میتوانیم از elseif استفاده کنیم. با استفاده از این دستور هر تعداد شرط و تصمیم که داشته باشیم میتوانیم در قالب یک عبارت شرطی بنویسیم:
x = rand*100; if x < 50 disp('failed') elseif x >= 50 & x <90 disp('passed') else disp('Good Job! you passed the exam with a high score') end
کد را Run کنید و نتیجه را ببینید. درست کار میکند؟
a = rand * 10; if a <= 4 disp('small') elseif a > 4 & a <= 8 disp('medium') else disp('large') end
دریافت PDF جلسه دستور if در متلب
برای دریافت pdf این جلسه، لطفا ایمیل خود را در باکس زیر وارد کرده و روی دکمه «دریافت pdf» کلیک کنید.
منابع آموزش متلب
در فهرست زیر، تعدادی از منابع خوب آموزش متلب را معرفی کردهایم. ضرورتی وجود ندارد که اینها را نگاه کنید. چون ما برای آموزش متلب، این منابع را مطالعه و استفاده کردهایم.
در این جلسه با سادهترین عبارت شرطی در متلب یعنی if آشنا شدیم. امیدوارم این آموزش مورد توجه شما قرار گرفته باشد. سوالات خود را پایین 👇 برایمان کامنت کنید. حتما سوالات شما پاسخ داده خواهد شد.
مطالب زیر را حتما مطالعه کنید
تعریف متغیر در متلب
آموزش متلب رایگان
دستور max در متلب
دستور محاسبه انتگرال در متلب
دستور input در متلب
دستور ezplot در متلب
8 دیدگاه
به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.
مرسی از شما بابت این اموزش های مفیدتون تشکرررررررررررررررررررررررررررررررررررررررررررررر فروان
سلام وقتتون بخیر ، با تشکر از مطالب خوبتون.
من وقتی RUN میکنم تو command window بجای نتیجه شرط ، اسم فایل رو نشون میده . میشه توضیح بدید چیکار کنم؟
سلام
خسته نباشید
فکر کنم باید جای passed و failed را در مثال دستور if عوض کنید.
ممنون محمدرضا عزیز که اطلاع دادید، اصلاح شد🙏🌹
سلام خسته نباشید هنگامی که run کردم یه فایل دیگه ای ایجاد شد به اسم همون فایلم ولی فرمتش asv هست دقیقا کنار m-file که درست کردم میخواستم ببینم چبه دقیقا چه کاربردی داره و چجوری ایجاد میشه
متشکرم
سلام
چه سوال خوبی 👌
asv مخفف autosave هست. حین کدنویسی، ممکن هست شما یادتون بره تغییراتی که توی mfile ایجاد میکنید رو ذخیره کنید. اما متلب حواسش هست و در فایل asv آخرین تغییرات شما رو نگه میداره. مثلا، کامپیوتر خاموش شه، برق بره و …
عرض سلام خدمت اساتید محترم
از اینکه برای ما نوآموزان مطالب را بهصورت پایهای یاد میدهید و نکات مهم را هم گوشزد میکنید،بسیار ممنونیم 🙂
سلام
سپاس بابت پیام پرمهرتون 🌹