حلقه if در متلب — به زبان ساده و با مثال

۳۹۸۱ بازدید
آخرین به‌روزرسانی: ۱۳ اردیبهشت ۱۴۰۲
زمان مطالعه: ۲۱ دقیقه
حلقه if در متلب — به زبان ساده و با مثال

در این مطلب در مورد حلقه if در متلب صحبت می‌کنیم. بدین منظور ابتدا به صورت مختصر کار با متلب را توضیح می‌دهیم و سپس در مورد چگونگی نوشتن یک کلین کد در متلب صحبت می‌کنیم. در بخش بعدی این نوشتار در مورد حلقه‌های شرطی در متلب صحبت خواهیم کرد و حلقه if در متلب را توضیح می‌دهیم. بخش پایانی این نوشتار به معرفی دوره‌های آموزشی متلب در فرادرس خواهد پرداخت.

997696

شروع با نرم افزار متلب چگونه است؟

صفحه ابتدایی نرم افزار متلب
تصویر 1: صفحه ابتدایی نرم افزار متلب

وقتی متلب را باز می‌کنید به پنجره‌ای مانند تصویر بالا برخورد می‌کنید که در تصویر قسمت‌های مختلف این صفحه نمایش داده شده است. یکی از ویژگی‌های متلب این است که می‌تواند نحوه قرار گیری و ساختار شبکه را تغییر دهید. در صفحه Command ممکن است با دو نوع علامت در صفحه خالی Command مواجه شوید که به صورت زیر هستند:

<<در این حالت شما ورژن کامل متلب را دارید.
EDU>در این حالت ورژن آموزشی متلب در اختیار شما است.

اما نوتیشن رایج در صفحه Command همان >> است که در ادامه ما نیز از این رویه استفاده می‌کنیم.

استفاده از متلب به عنوان ماشین حساب

به عنوان یک مثال از محاسبات ساده در متلب تنها لازم است عبارتی که قصد دارید محاسبه کنید را در پنجره متلب تایپ کنید.

برای مثال عبارت ساده 1+2×31+2 \times 3 را می‌خواهیم محاسبه کنیم. بدین منظور کافی است عبارت را در صفحه دستورات یا cammand تایپ کنید و با استفاده از کلید Enter جواب را در خط بعد مشاهده می‌کنید.

12+1*3
2ans = 
3      7

همان طور که مشاهده می‌کنید اگر برای جواب متغیری تعریف نشده باشد، متلب به صورت پیش فرض از ans به عنوان متغیری که جواب را در آن ذخیره کند، استفاده خواهد کرد. ولی اگر برای عبارت خود، یک متغیر مانند x تعریف کنید جواب نهایی در x ذخیره می‌شود، یعنی داریم:

1>> x=1+2*3
2x = 
3   7

از x می‌توان به عنوان پارامتری که مقدار آن مشخص است مجدداً استفاده کرد و بدین ترتیب برای مثال داریم:

1>> 4*x
2ans =
3      28.0000

بدین ترتیب می‌توان گفت علامت‌های (+,,,/)(+,-,*,/) به ترتیب چهار عمل اصلی ریاضیات را در متلب انجام می‌دهد. برای اتمام یک session در متلب با تایپ کردن quit نرم افزار متلب بسته می‌شود یا می‌توانید مانند تمام پنجره‌ها این برنامه رو نیز با کلیک بر روی ضربدر قرمز ببندید.

Overwriting در متلب

هنگامی که یک متغیر را در متلب تعریف می‌کنید، آن متغیر مقداری که شما تعریف کرده‌اید را خواهد گرفت.

اگر مجدداً روی متغیر عملیات جبری انجام دهید در حافظه متلب آخرین مقدار متغیر باقی می‌ماند. این موضوع را در مثال زیر می‌توانید ببینید:

1>> t=5;
2>> t=t+1
3t=
4 6

اگر دقت کنید در معادله بالا مقدار 6 برای متغیر t در نظر گرفته شده است و این مقدار نهایی در نهایت برای محاسبات دیگر در نظر گرفته می‌شود.

پیام خطا

اگر یک عبارت را به اشتباه در متلب بنویسید، یک پیام خطا برای شما نمایش داده خواهد شد. برای مثال در کد زیر علامت * را ننوشته‌ایم.

1>> x = 10;
2>> ??? 5x
3       |
4Error: Unexpected MATLAB 
5expresion.

تصحیح خطا در متلب

در بسیاری از موقعیت‌هایی که با پیغام خطا رو به رو می‌شوید، مخصوصاً اگر عبارتی که نوشته‌اید طولانی باشد تایپ مجدد آن سخت است. به همین دلیل بهتر است در این مواقع دستورات قبلی را با استفاده از کلید رو به بالا (\uparrow) در صفحه کیبورد خود جستجو کنید و از این روش برای تصحیح خطای رخ داده در دستور خود استفاده کنید.

نوشتن کد تمیز یا کلین کد در متلب چگونه است؟

دلایل زیادی وجود دارد که چرا کدی که فقط کار می‌کند به اندازه کافی خوب نیست. برای پاسخ به این سوال فهرست زیر را ببینید:

  • رفع اشکالات، افزودن ویژگی‌ها و کار با کد در تمام جنبه‌های دیگر وقتی کد تمیز باشد بسیار آسان‌تر است.
  • تصور کنید شخص دیگری به کد شما نگاه می‌کند و سعی می‌کند بفهمد که کد شما چه کاری انجام می‌دهد. در صورتی که کد شما اصطلاحاً کلین کد نباشد، آن فرد زمان زیادی را صرف می‌کند تا کد شما را درک کند.
  • ممکن است اکنون برای هدف خاصی برنامه نویسی و کد نویسی کنید و به نظر برسد هیچ گاه دیگر به کدی که نوشته‌اید باز نخواهید گشت. با این حال تجربه نشان داده است که عملاً هیچ کار محاسباتی وجود ندارد که فقط یک بار در زندگی برنامه‌نویسی خود با آن مواجه شوید. تصور کنید که یک هفته، یک ماه یا یک سال بعد به کد خود نگاه می‌کنید: آیا هنوز می‌توانید بفهمید که کد شما چگونه کار می‌کند؟ کلین کد به شما کمک می‌کند که همواره بفهمید کد شما چگونه کار می‌کند.

نمونه‌هایی زیادی ازکدهای نامرتب، بدون ساختار و به طور کلی کثیف وجود دارند. همچنین منابعی هستند که تقریباً تضمین می‌کنند که کدهایی با ساختار مناسب ارائه می‌دهند. برای مثال به ساختار متلب دقت کنید، در بسیاری از مواقع بسیاری از توابع که ممکن است استفاده کنید در خود سینتکس متلب تعریف شده‌اند. برای مثال دستور edit mean را در صفحه اجرای متلب تایپ کنید. فایلی که به شما نشان داده می‌شود می‌توان به شما نشان دهد که چگونه یک کلین کد با این تابع بنویسیم.

کد کثیف در متلب
تصویر 2:  کد بالا از نظر ساختار متلب کاملاً صحیح است اما تمام قوانین نوشتن کد نادیده گرفته شده است، آیا می‌توانید این تابع چه کاری انجام می‌دهد؟

چند تابع در یک فایل

این یک باور رایج و نادرست است که متلب نمی‌تواند با چندین تابع در هر فایل کار کند. حقیقت این است که ممکن است بیش از یک تابع در یک فایل وجود داشته باشد، اما تنها اولین تابع در فایل برای توابع موجود در فایل‌های دیگر یا خط فرمان قابل مشاهده است. از این نظر، آن دسته از توابع در یک فایل که موقعیت تابع اول را ندارند می‌توانند به عنوان کمک کننده برای تابع اول در کد عمل کنند. هنگام نوشتن کد، به این فکر کنید که آیا یک تابع خاص واقعاً فقط یک کمک کننده تابع اصلی است یا خیر، آیا می‌توان آن را از جای دیگری فراخوانی کرد؟ با انجام این کار، می‌توانید از آشفتگی و به هم ریختگی ده‌ها M فایل در پوشه برنامه خود جلوگیری کنید.

تابع در کدنویسی با متلب
تصویر ۳: این کد شامل سه تابع است. این روش نوشتن زمانی مفید است که helperFun1 و helperFun2 فقط برای topFun مورد نیاز هستند.

زیر تابع‌ها

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

توابع کمکی در متلب
تصویر ۴: در تصویر با کادر قرمز رنگ، به صورت روتین fun1، fun2، helpFun1 و helpFun2 به ترتیب پشت سر هم قرار گرفته‌اند و هیچ سلسله مراتبی قابل مشاهده نیست. اما در تصویر با کادر سبز رنگ به وضوح مشخص است که helpFun به fun1 کمک می‌کند و fun2 ارتباطی با fun1 ندارد.

به این ترتیب، این تابع کمکی فقط برای تابع اطراف قابل مشاهده خواهد بود و نام آن با نام هیچ تابع دیگری تداخل نخواهد داشت. با این حال بزرگترین مزیت نوشتن تابع فرعی در فایل تابع اصلی این است که تابع فرعی از نظر دستوری به وضوح با عملکرد والد یا تابع اصلی خود مرتبط است و هنگامی که برای اولین بار به کد نگاه می‌کنید، روابط بین توابع بلافاصله قابل مشاهده است.

نام متغیرها و توابع

یکی از عناصر کلیدی برای یک کد قابل اطمینان، استفاده از یک طرح کلی و ثابت برای نامگذاری توابع است. از آغاز پیدایش زبان‌های برنامه نویسی در دهه 1950، طرح‌هایی برای نامگذاری توسعه یافته یا از بین رفته‌اند، اما به طور کلی این طرح‌ها در معرض تکامل هستند. با این حال، برخی از قوانین کلی وجود دارد که در طول سال‌ها در انواع زمینه‌های مختلف مفید واقع شده‌اند. چند مورد از مفیدترین اصول نامگذاری در اینجا بیان شده است:

  • نام متغیرها نشان می‌دهد که متغیر چه کاری انجام می‌دهد. بدون شک این اولین و مهمترین قاعده در نامگذاری متغیرها است و متضمن چندین چیز است. برای مثال وقتی متغیر دارای مقدار 2٫718128 است نام آن را pi نمی‌گذارید. همچنین در ریاضیات و علوم کامپیوتر برخی از نام‌ها به مفاهیم خاص در علوم مرتبط می‌شود که در جدول (1) تعدادی از قراردادهای پرکاربرد فهرست شده‌اند.
نام متغیرکاربرد معمول متغیر
m,nm,nاندازه عددی که معمولاً برای نشان دادن سایز یک ماتریس استفاده می‌شود.
i,j,k,li, j, k,lمقادیر عددی و همچنین اندیس‌های یک حلقه
x,yx, yمقادیر حقیقی
zzمقدار مختلط یا محور z
ccمقدار مختلط یا ثابت
ttمقدار زمان
eeعدد اویلری یا بردار یکه
f,g,(,h)f, g, (, h)نام توابع اصلی
hhپارامتر گسسته سازی فضایی (در تحلیل عددی)
epsilon,deltaepsilon, deltaپارامترهای حقیقی و کوچک
alpha,betaalpha, betaزاویه یا پارامتر
theta,tautheta, tauپارامترهای گسسته زمانی
kappa,sigma,omegakappa, sigma, omegaپارامتر
u,v,wu, v, wبردار
A,MA, Mماتریس
bbقسمت سمت راست یک سیستم توابع
  • نامگذاری کوتاه و غیر توصیفی در محاسبات ریاضی کاملاً رایج است زیرا نام متغیرها در محاسبات دستی به سختی بلندتر از یک کاراکتر هستند، این مورد در جدول بالا نیز مشخص است. برای اینکه بتوان بین کمیت‌های برداری و ماتریس تمایز قائل شد، در برنامه نویسی و همچنین ریاضیات معمول است که ماتریس‌ها را با حروف بزرگ و بردارها و اسکالرها را با حروف کوچک نشان دهیم.
نامگذاری متغیرها در متلب
تصویر ۵: کادر قرمز رنگ یک نمونه از نامگذاری غیرمعمول و کادر سبز نامگذاری رایج در متلب است.
  • نامگذاری طولانی و توصیفی برای متغیرها بیشتر در C++ رایج است و معمولاً با حروف کوچک شروع می‌شود. همچنین در نامگذاری طولانی متغیرها معمولاً از خط تیره برای فاصله بین کلمات استفاده می‌شود اما باید دقت کرد که در متلب خط تیره بین کلمات به عنوان علامت تفاضل در نظر گرفته می‌شود. هر دو مورد در مثال زیر نمایش داده شده‌اند:

linearity , distanceToCircle , figureLabel

linearity , distance_to_circle , figure_label

  • نام متغیرهای منطقی اگر قرار باشد این متغیر فقط مقادیر 0 یا 1 را برای نشان دادن درست یا نادرست بودن عبارت نمایش دهد، باید بیانگر این موضوع باشد. یک تکنیک متداول این است که نام متغیر را با is و یک روش کمتر متداول استفاده از flag است. این موارد در ادامه نمایش داده شده‌اند:

isPrime , isInside , flagCircle

تورفتگی در کدنویسی

اگر تا به حال با ساختارهای تودرتوی  if و for سروکار داشته باشید، احتمالاً متوجه شده‌اید که ممکن است در نگاه اول تشخیص آن ساختارهای تودرتو از سایر قسمت‌های کد دشوار باشد. همچنین، اگر محتویات یک حلقه بیش از تنها چند خط باشد، یک ویژگی بصری ممکن است برای نشان دادن آنچه در داخل و خارج از حلقه است مفید باشد و اینجا است که تورفتگی وارد عمل می‌شود.

تو رفتگی در کد
تصویر ۶: در کادر قرمز رنگ عدم ایجاد تو رفتگی بین سطوح حلقه تشخیص اینکه حلقه اول به کجا ختم می‌شود را دشوار می‌کند. با ایجاد تو رفتگی، کد بسیار واضح‌تر به نظر می‌رسد.

معمولاً هر چیزی در یک حلقه یعنی یک تابع، یک شرط، یک دستور سوئیچ و غیره را با ایجاد تورفتگی در کد ایجاد می‌کنیم. بسته به شرایط مختلف تورفتگی را می‌توان با دو، سه یا چهار فاصله یا یک tab ایجاد کرد. به عنوان یک قاعده کلی، تورفتگی باید تمایز بصری واضحی داشته باشد در حالی که از تمام فضای شما در خط استفاده نمی‌کند. این موضوع را در پاراگراف بعدی مشاهده می‌کنید.

طول خط

عملاً هیچ محدودیتی برای میزان نوشتن روی یک خط کد متلب وجود ندارد. در واقع، می‌توانید هر کد متلب را با جدا کردن دو دستور با یک علامت ؛ یا ، به یک خط تبدیل کنید و هیچ خط دیگری بین آن‌ها تولید نکنید. با این حال، یک خط با یک میلیون کاراکتر به طور بالقوه چندان خوانا نخواهد بود. اما، به صورت کلی سوال این است که چند کاراکتر را می‌توانید در یک خط قرار دهید بدون اینکه محتوای آن را مبهم کنید؟

طول خط در متلب
تصویر ۷: کادر سبز رنگ طول خط ۷۵ کاراکتری در متلب و کادر قرمز طول خط بلندتر از ۷۵ کاراکتر است.

این موضوعی است که باید در مورد آن بحث کرد. به صورت معمول تعداد کاراکتر روی یک خط معمولاً بین 70 تا 80 کاراکتر است. ویرایشگر متن متلب، ۷۵ کاراکتر در هر خط را پیشنهاد می‌دهد. بدین ترتیب، فرد مطمئن است که برای نمایش کد بدون شکستگی خط به صورت مصنوعی یا اسکرول کردن افقی در ویرایشگر، نیازی به داشتن یک نمایشگر عریض نیست. البته ممکن است گاهی اوقات طول خطوط شما بیشتر از ۷۵ کاراکتر باشد، در این مواقع از علامت ... استفاده می‌شود تا نشان داده شود که ادامه خط در سطر بعدی نوشته شده است.

فاصله و تراز

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

شکست معنادار در متلب
تصویر ۸: شکست خط غیر معنایی خوانایی کد را کاهش می‌دهد. در تصویر با کادر قرمز نه شکل ماتریس و نه تعداد جمع در عبارت دوم مشخص نیست. در تصویر با کادر سبز شکل و محتویات ماتریس و همچنین عناصر عبارت دوم بلافاصله برای برنامه نویس قابل مشاهده است.

فاصله در عبارات

این ویژگی استفاده از فاصله در عبارات است. قانون این موضوع قرار دادن فاصله در جایی است که در سینتکس متلب تعریف شده است. این موضوع به خوبی در تصویر زیر نشان داده شده است:

فاصله در عبارات
تصویر ۹: عدم وجود فاصله بین جمع دو عدد در کادر قرمز نتیجه ۱۱/۱2 را به عنوان خروجی می‌دهد در حالی که با ایجاد فاصله جواب به ۵٫۵ تغییر می‌کند.

اعداد جادویی

هنگام کدنویسی، گاهی اوقات یک مقدار را ثابت در نظر می‌گیرید زیرا قصد ندارید آن را تغییر دهید. به عنوان مثال، برنامه‌ای را در نظر بگیرید که تعیین می‌کند آیا یک نقطه داده شده خارج از یک دایره با شعاع 1 با مرکز (1،1) و به طور همزمان در داخل مربعی به طول یال 2 قرار دارد یا نه، که دایره در سمت راست مربع قرار دارد.

پس از نوشتن کد، برنامه شامل چند 1 است که مشخص نیست که آیا آن‌ها متمایز هستند یا به یک مقدار یکسان اشاره دارند. این اعداد رمزگذاری شده اغلب اعداد جادویی نامیده می‌شوند، زیرا آن‌ها کاری را که قرار است انجام دهند انجام می‌دهند، اما نمی توان به راحتی دلیل آن را تشخیص داد. در همین برنامه اگر بخواهید شعاع دایره را تغییر دهید، تشخیص و تغییر ۱ هایی که به شعاع اشاره دارند دشوار خواهد بود. راه حل این موضوع در کادر سبز رنگ نمایش داده شده است.

اعداد جادویی در متلب
تصویر ۱۰: در کادر قرمز رنگ بلافاصله مشخص نیست که آیا یک‌های مختلفی که در کد وجود دارند به یک کمیت اشاره دارند یا خیر. به این اعداد اعداد جادویی می‌گویند. در کادر سبز رنگ مفهوم شعاع مشخص است و می‌توان فوراً مشاهده کرد و مقدار آن را به راحتی تغییر داد.

توضیحات

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

عناصر ساختاری

همیشه مفید است که ابتدا و انتهای تابع نه تنها با کلمات کلیدی مربوطه نشان داده شود، بلکه با چیزی قابل مشاهده‌تر مشخص شوند. برای جداسازی ظاهری بخش‌های متمایز کد، علائمی را با کاراکترهای #، = یا - در نظر می‌گیریم. این علائم به عنوان مثال زمانی که چندین تابع در یک فایل سورس وجود دارد، یا زمانی که یک حلقه for وجود دارد که روی تعداد زیادی از خطوط اثر می‌گذارد که دیگر به راحتی نمی‌توانید دستور end را پیدا کنید، بسیار مفید است.

تقسیم کردن قسمت‌های مختلف کد
تصویر ۱۱: قسمت‌های مختلف کد از یکدیگر با توضیحات متفاوت جدا شده‌اند و در نتیجه کد خوانا است.

استفاده از پرانتز و براکت

لیست اولویت عملگرها در متلب به صورت مشخص و واضح وجود دارد که می‌توانید اطمینان حاصل کنید که برای هر عبارت در متلب، که شامل هر عملگر یونری یا باینری است، یک روش منحصر به فرد برای ارزیابی وجود دارد. به صورت طبیعی، متلب ضرب (*) را قبل از جمع (+) بررسی می‌کند، اما ممکن است زمانی که صحبت از عملگرهای منطقی یا ترکیبی از عملگرهای عددی و منطقی به میان می‌آید، این موارد کمتر واضح باشند.

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

استفاده از پرانتز در کد
تصویر ۱۲: بدون دانستن اینکه متلب ابتدا عملگر && یا عملگر || را ارزیابی می‌کند، نمی‌توان مقدار isGood را در کادر قرمز پیش‌بینی کرد. با قرار دادن پرانتزهای (غیر ضروری) در کادر سبز رنگ، نتیجه مشخص است.
  1.  پرانتز ()
  2. ترانهاده (.')، توان (.^)، ترانهاده مزدوج مختلط(')، توان ماتریس (^)
  3. مقدار مثبت یک کمیت (+)، مقدار منفی یک کمیت (-)، نفی منطقی (~)
  4. ضرب (.*)، تقسیم راست (./)، تقسیم چپ (.\)، ضرب ماتریس (*)،
    تقسیم سمت راست ماتریس (/)، تقسیم ماتریس چپ (\)
  5. جمع (+)، تفریق (-)
  6. عملگر کولون (:) که برای ایجاد بردار، ایجاد آرایه پایین و تکرار در متلب استفاده می‌شود.
  7. کمتر از (<)، کمتر یا مساوی (<=)، بزرگتر از (>)، بزرگتر یا مساوی
    (>=)، برابر با (==)، غیرمساوی با (~=)
  8. عملگر و (&)
  9. عملگر یا (|)
  10. عملگر و (&&)
  11. عملگر یا (||)

خطاها و هشدارها

مهم نیست که چقدر دقیق کد خود را طراحی می‌کنید، زیرا همواره کاربرانی وجود خواهند داشت که می‌توانند با دادن داده‌های ورودی بد جواب‌های اشتباهی از برنامه بگیرند. در حقیقت، این در محاسبات عددی غیرمعمول نیست که کارها اساساً اشتباه پیش می‌روند.

برای مثال شما برنامه‌ای می‌نویسید که یک فرآیند تکرار شونده را روی سیستم معادلات خطی که به صورت u=A1bu^*=A^{-1}b تعریف شده، انجام می‌دهد. این محاسبات برای یک مقدار ورودی مربوط به uu انجام می‌شود و شما می‌خواهید مقدار uu^* را به دست آورید. با این حال همگرایی برای معادله فقط برای مقادیر مشخصی از AA صورت می‌گیرد و اگر مقدار AA در آن بازه نباشد رفتار تابع نیز غیرمعمولی است.

در این مواقع باید کاربر را با استفاده از عملگرهای ftprintf () یا disp () متوجه اشتباه صورت گرفته در برنامه کنید. با این حال روش بهتر این است که از warning () یا error () استفاده کنید. تفاوت دو دستور آخری با ابتدایی در این است که به محض اجرای دستورهای error یا warning اجرای برنامه متوقف می‌شود.

استفاده از دستور warning
تصویر ۱۳: تکرار روی یک متغیر r که قرار است بعد از تعدادی تکرار کوچکتر از tol باشد.در کد در کادر قرمز رنگ اگر شرط کوچکتری رخ ندهد، برنامه هرگز از حلقه هرگز خارج نمی‌شود و CPU را برای همیشه اشغال می‌کند. در کادر سبز رنگ حداکثر تعداد تکرار وجود دارد. وقتی تعداد تکرارها به آن تعداد می‌رسد و شرط کوچکتر بودن ایجاد نمی‌شود با یک دستور اخطار از حلقه خارج می‌شویم.

سوییچ کردن حالت‌ها

دستورهای سوییچ زمانی استفاده می‌شوند که غیر از آن مجبور باشید یک دستور شرطی را با چندین دستور if دیگر بنویسید. آن‌ها همچنین زمانی که شرط ها برای مقایسه عبارت‌های string باشند، بسیار محبوب هستند.

دستورهای شرطی و حلقه if در متلب

عبارات شرطی شما را قادر می‌سازد در زمان اجرا انتخاب کنید کدام بلوک کد اجرا شود.

ساده ترین دستور شرطی یک دستور if است. به عنوان مثال داریم:

1% Generate a random number
2a = randi(100, 1);
3
4% If it is even, divide by 2
5if rem(a, 2) == 0
6    disp('a is even')
7    b = a/2;
8end

عبارت‌های if می‌توانند شامل گزینه‌های جایگزین نیز باشند که این مهم با استفاده از کلمات کلیدی elseif یا else ایجاد می‌شود. برای مثال داریم:

1a = randi(100, 1);
2
3if a < 30
4    disp('small')
5elseif a < 80
6    disp('medium')
7else
8    disp('large')
9end

از طرف دیگر، هنگامی که می‌خواهید برابری یا تساوی را در برابر مجموعه‌ای از مقادیر مشخص آزمایش کنید، از دستور switch استفاده کنید. این موضوع را در مثال زیر نشان داده‌ایم:

1[dayNum, dayString] = weekday(date, 'long', 'en_US');
2
3switch dayString
4   case 'Monday'
5      disp('Start of the work week')
6   case 'Tuesday'
7      disp('Day 2')
8   case 'Wednesday'
9      disp('Day 3')
10   case 'Thursday'
11      disp('Day 4')
12   case 'Friday'
13      disp('Last day of the work week')
14   otherwise
15      disp('Weekend!')
16end

برای هر دو دستور switch و if در متلب، کد مربوطه به محض اینکه شرایط لازم در دستور ایجاد می‌شود از حلقه خارج می‌شود. هر عبارت شرطی به کلمه کلیدی end نیز نیاز دارد. به طور کلی هنگامی که مقادیر زیادی از مقادیر گسسته و شناخته شده را دارید، خواندن دستورات سوئیچ راحت‌تر از if است. با این حال، شما نمی‌توانید نابرابری را توسط دستور سوئیچ نشان دهید، یعنی نمی‌توانید برنامه زیر را توسط دستور switch اجرا کنید:

1yourNumber = input('Enter a number: ');
2
3if yourNumber < 0
4    disp('Negative')
5elseif yourNumber > 0
6    disp('Positive')
7else
8    disp('Zero')
9end

حلقه if در متلب

کد مربوط به دستور حلقه if در متلب، زمانی که شرط درست باشد پایان می یابد. شکل کلی حلقه if در متلب به صورت زیر است:

1if expression
2    statements
3elseif expression
4    statements
5else
6    statements
7end

سه عضو اصلی حلقه if در متلب عبارت از if، عبارت یا statment و end است. همچنین نوشتن دستورهای elseif و else اختیاری هستند. در ادامه چندین مثال مربوط به حلقه if در متلب را بررسی می‌کنیم. این مثال‌ها قابل اجرا در صفحه command یا دستورات است.

در مثال اول یک ماتریس یکه با تعداد ۴ سطر و ۶ ستون ایجاد می‌کنیم و سپس با استفاده از حلقه if در متلب قطر اصلی را ۲ و به قطر همسایه قطر اصلی مقدار 1-1 را می‌دهیم. بدین ترتیب داریم:

1>> nrows = 4;
2ncols = 6;
3A = ones(nrows,ncols);
4>> for c = 1:ncols
5    for r = 1:nrows
6        
7        if r == c
8            A(r,c) = 2;
9        elseif abs(r-c) == 1
10            A(r,c) = -1;
11        else
12            A(r,c) = 0;
13        end
14        
15    end
16end
17A
18
19A =
20
21     2    -1     0     0     0     0
22    -1     2    -1     0     0     0
23     0    -1     2    -1     0     0
24     0     0    -1     2    -1     0

برای مقایسه مقادیر یک بردار با یک حد مشخص نیز به صورت زیر می‌توان با استفاده از حلقه if در متلب این مقایسه را انجام داد:

1>> limit = 0.75;
2A = rand(10,1)
3
4A =
5
6    0.8147
7    0.9058
8    0.1270
9    0.9134
10    0.6324
11    0.0975
12    0.2785
13    0.5469
14    0.9575
15    0.9649
16
17>> if any(A > limit)
18    disp('There is at least one value above the limit.')
19else
20    disp('All values are below the limit.')
21end
22There is at least one value above the limit.

سایز دو ماتریس دلخواه که تعریف کردیم را نیز می‌توانیم با استفاده از عبارت isequal و استفاده از حلقه if در متلب به صورت زیر مقایسه کنیم و داریم:

1>> A = ones(2,3);
2B = rand(3,4,5);
3>> if isequal(size(A),size(B))
4   C = [A; B];
5else
6   disp('A and B are not the same size.')
7   C = [];
8end
9A and B are not the same size

استفاده از strcmp برای مقایسه کاراکترهای بردار استفاده می‌شود. معمولاً استفاده از == برای آزمایش برابر بودن زمانی که بردارهای کاراکتر اندازه‌های متفاوتی دارند، منجر به خطا می‌شود.

1>> reply = input('Would you like to see an echo? (y/n): ','s');
2if strcmp(reply,'y')
3  disp(reply)
4end

برای مشخص کردن این موضوع که آیا یک مقدار در یک بازه مشخص قرار می‌گیرد یا خیر نیز می‌توان از حلقه if در متلب استفاده کرد و بدین ترتیب داریم:

1>> x = 10;
2minVal = 2;
3maxVal = 6;
4
5>> if (x >= minVal) && (x <= maxVal)
6    disp('Value within specified range.')
7elseif (x > maxVal)
8    disp('Value exceeds maximum value.')
9else
10    disp('Value is below minimum value.')
11end
12
13Value exceeds maximum value.

به عنوان آخرین مثال از حلقه if در متلب می‌خواهیم این حلقه را در یک تابع در متلب استفاده کنیم. برای آشنایی با تابع نویسی در متلب می‌توانید مقاله چگونه در متلب تابع بنویسیم؟ — به زبان ساده را بخوانید. در این مثال کاربر مقدار x را به متلب می‌دهد و با اجرای تابع compare مشخص می‌شود که مقداری که داده‌ایم مثبت، منفی یا صفر است. تابع compare به صورت زیر تعریف می‌شود:

1function com = compare(x)
2
3if x > 0
4   disp('The number is positive')
5elseif x == 0
6    disp('The number is zero')
7else
8    disp ('Kidding! obviously it is negative:)')
9end
10com=x;
11end

برای اجرای برنامه به صورت زیر در صفحه command عمل می‌کنیم و داریم:

1>> z=6;
2>> com=compare(z)

مطالب آموزش متلب در مجله فرادرس

در مجله فرادرس نوشتارهای فراوانی برای آموزش زبان برنامه نویسی متلب وجود دارد که با مطالعه آن‌ها می‌توانید به راحتی به این نرم افزار مسلط شوید و با آن‌ کار کنید. برخی از این مطالب را در ادامه معرفی می‌کنیم:

معرفی فیلم‌های آموزش متلب فرادرس

منابع آموزشی نرم افزار متلب بسیار فراوان هستند اما بسیاری از منابع به زبان انگلیسی بوده که این موضوع آموزش را برای کسانی که ممکن است به زبان انگلیسی آشنایی کامل نداشته باشند دشوار می‌کند. همچنین با توجه به اینکه دسترسی به وبسایت متلب به صورت کامل برای کاربران ایرانی فراهم نیست، ممکن است فرآیند آموزش و شبیه سازی با این نرم افزار دشوارتر شود. به این دلیل فرادرس مجموعه دوره‌های آموزش متلب را برای کاربران با کاربردهای مختلف ضبط و آماده کرده است. این آموزش‌ها را به صورت فهرست وار در ادامه معرفی می‌کنیم و برخی از آن‌ها را به صورت جزئی‌تر برای شما توضیح می‌دهیم. مجموعه آموزش متلب فرادرس شامل موارد زیر هستند:

معرفی فیلم آموزش برنامه نویسی متلب (MATLAB)

آموزش برنامه نویسی متلب (MATLAB) آموزش برنامه نویسی متلب (MATLAB)

مجموعه فرادرس در تولید و تهیه محتوای آموزشی خود اقدام به تهیه فیلم آموزش برنامه نویسی متلب (MATLAB) کرده است. این مجموعه آموزشی از شش درس تشکیل شده و برای دانشجویان رشته‌های مهندسی و علوم پایه مفید است. پیش نیاز این مجموعه آموزش اصول و مبانی برنامه نویسی – (رایگان) است.

درس اول این مجموعه به مقدمات و آشنایی با نرم افزار و زبان برنامه نویسی متلب می‌پردازد و درس دوم انواع داده در متلب را آموزش می‌دهد. درس سوم به ساختارهای کنترل برنامه در متلب و درس چهارم به تعریف و استفاده از توابع در متلب اختصاص دارد. در درس پنجم گرافیک و ترسیم نمودار در متلب را خواهید آموخت و در نهایت در درس ششم و آخر این مجموعه با مدیریت فایل ها و اطلاعات در متلب آشنا خواهید شد.

معرفی فیلم آموزش برنامه نویسی متلب برای علوم و مهندسی

معرفی فیلم آموزش برنامه نویسی متلب برای علوم و مهندسی

مجموعه فرادرس در تولید و تهیه محتوای آموزشی خود اقدام به تهیه فیلم آموزش برنامه نویسی متلب برای علوم و مهندسی کرده است. این مجموعه آموزشی از هشت درس تشکیل شده و برای دانشجویان رشته علوم پایه و فنی مهندسی مفید است. پیش‌نیاز این درس آموزش برنامه نویسی متلب (MATLAB) است.

درس اول این مجموعه به حل معادلات جبری و ریشه‌یابی در متلب اختصاص دارد. درس دوم شامل اعداد تصادفی، محاسبات و تحلیل آماری در متلب است. درس سوم به انتگرال گیری و مشتق گیری عددی در متلب می‌پردازد و درس چهارم به محاسبات نمادین در متلب اختصاص دارد. در درس پنجم در مورد جبرخطی در متلب خواهید آموخت و در درس ششم درون یابی، تقریب تابع و برازش منحنی و سطح در متلب بررسی می‌شود. در نهایت در درس هفتم بهینه سازی کلاسیک در متلب آموزش داده می‌شود و درس هشتم به حل انواع مختلف معادلات دیفرانسیل (Differential Equations) در متلب اختصاص دارد.

معرفی فیلم مجموعه آموزش‌های برنامه نویسی متلب پیشرفته

معرفی فیلم مجموعه آموزش‌های برنامه نویسی متلب پیشرفته

مجموعه فرادرس در تولید و تهیه محتوای آموزشی خود اقدام به تهیه فیلم مجموعه آموزش‌های برنامه نویسی متلب پیشرفته کرده است. این مجموعه آموزشی از هفت درس تشکیل شده و برای دانشجویان رشته‌های علوم پایه و مهندسی مفید است. پیش‌نیاز این درس آموزش برنامه نویسی متلب (MATLAB) است.

درس اول این مجموعه به معرفی و آشنایی با ساختارها و آرایه‌های سلولی در متلب می‌پردازد و درس دوم عبارات قانونمند (Regular Expressions) و کاربردهای آن‌ها در متلب را معرفی می‌کند. درس سوم به رویکردهای پیشرفته تعریف و پیاده سازی توابع در متلب اختصاص دارد. در درس چهارم تعریف آرایه‌های توسعه یافته با Container Map را در متلب خواهید آموخت و در درس پنجم این مجموعه ‌مدیریت خطا و حالات استثنائی برنامه‌ها در متلب آموزش داده می‌شود. درس ششم به تایمرها (Timer) و کاربرد آن‌ها در متلب اختصاص دارد و در نهایت در درس هفتم این مجموعه برنامه نویسی شی گرا (Object-Oriented Programming) در متلب آموزش داده می‌شود.

  • برای دیدن فیلم مجموعه آموزش‌های برنامه نویسی متلب پیشرفته +‌ اینجا کلیک کنید.

معرفی فیلم مجموعه آموزش های واقعیت مجازی و ساخت انیمیشن برای کاربران متلب و سیمولینک

معرفی فیلم مجموعه آموزش های واقعیت مجازی و ساخت انیمیشن برای کاربران متلب و سیمولینک

مجموعه فرادرس در تولید و تهیه محتوای آموزشی خود اقدام به تهیه فیلم مجموعه آموزش‌های واقعیت مجازی و ساخت انیمیشن برای کاربران متلب و سیمولینک کرده است. این مجموعه آموزشی از هفت درس تشکیل شده و پیش‌نیاز آن آشنایی با برنامه نویسی متلب، فیزیک و ریاضیات دانشگاهی است.

درس اول این مجموعه مقدمه‌ای بر واقعیت مجازی در محیط MATLAB و Simulink است و درس دوم آشنایی با نرم افزار V – Realm Builder را آموزش می‌دهد. درس سوم شامل شبیه سازی انتقال یک مکعب است و درس چهارم به نحوه شبیه سازی نوسان سیستم دو درجه آزادی جرم – فنر – میراگر اختصاص دارد. در درس پنجم و ششم انیمیشن انتقال یک مکعب با استفاده از مدل Simulink و انیمیشن نوسان سیستم جرم – فنر – میراگر با استفاده از مدل سیمولینک آموزش داده می‌شود. در نهایت، در درس هفتم و آخر این مجموعه آشنایی با مدل‌های از پیش آماده شده جعبه ابزار واقعیت مجازی آموزش داده خواهد شد.

  • برای دیدن فیلم مجموعه آموزش‌های واقعیت مجازی و ساخت انیمیشن برای کاربران متلب و سیمولینک +‌ اینجا کلیک کنید.

معرفی فیلم آموزش نکات و ترفندهای متلب

آموزش رایگان نکات و ترفندهای متلب

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

درس اول این مجموعه به آشنایی با محیط متلب، توابع clc و clear و متغیر ans و درس دوم توابع سازنده ماتریس‌های مهم مانند zeros ،ones و eye آموزش داده می‌شود. درس سوم ثابت‌ها و علامت‌های مهم و پرکاربرد در متلب را آموزش می‌دهد و درس چهارم شامل تشخیص محدود، نامحدود و نامعین بودن توابع (توابع ifinite ،isinf و isnan) است. درس پنجم و ششم به ترتیب عملگرهای مهم برای تعریف ماتریس‌ها و کلمات کلیدی متلب و تابع iskeyword را پوشش می‌دهد. درس هفتم و هشتم شامل صفحه‌بندی خروجی‌های طولانی با تابع more و قالب‌بندی خروجی با تابع format است. درس نهم و دهم شامل آموزش نمادها و توابع true و false برای مقادیر منطقی و استخراج قطر ماتریس و ساخت ماتریس قطری با تابع diag هستند.

در درس یازدهم ساخت ماتریس‌های قطری بلوکی با تابع blkdiag و در درس دوازدهم کاربردهای عملگر کولون یا دو نقطه و قواعد اندیس‌گذاری آموزش داده می‌شود. کاربرد کلمه end به عنوان اندیس و محاسبه ترانهاده و ترانهاده مزدوج ماتریس‌ها در درس سیزدهم و چهاردهم بررسی می‌شود. در درس پانزدهم و شانزدهم آموزش دستورهای مربوط به آینه‌ای کردن ماتریس‌ها با تابع flip و حالات خاص آن با دو تابع flipud و fliplr و ساخت دنباله حسابی با تابع linspace پوشش داده می‌شود. درس هفدهم به ساخت دنباله هندسی با تابع logspace اختصاص دارد و درس هجدهم کامنت‌گذاری و بلوک‌های کامنت در متلب را آموزش می‌دهد. در نهایت نیز در درس نوزدهم و بیستم فراخوانی فرمان‌های سیستمی در متلب با عملگر ! و الحاق ماتریس‌ها با تابع cat و حالات خاص آن horzcat و vertcat آموزش داده می‌شود.

جمع‌بندی

در این نوشتار در مورد حلقه if در متلب صحبت کردیم. بدین منظور ابتدا توضیحات مختصری در مورد شروع کار با متلب بیان کردیم، سپس نکات مهم در نوشتن یک کد تمیز در متلب را ارائه دادیم و در نهایت عبارات شرطی در متلب را معرفی کردیم و مثال‌های مختلفی از حلقه if در متلب را در صفحه دستورات و به صورت تابع اجرا کردیم.

بر اساس رای ۰ نفر
آیا این مطلب برای شما مفید بود؟
اگر بازخوردی درباره این مطلب دارید یا پرسشی دارید که بدون پاسخ مانده است، آن را از طریق بخش نظرات مطرح کنید.
منابع:
MathWorksMATLABCleanCode
نظر شما چیست؟

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