menusearch
javapro.ir

جلسه سیزدهم | حلقه ها و دستورات شرطی در متلب

جستجو
پنج شنبه ۱۱ آذر ۱۴۰۰ | ۰:۲۷:۴۶
۱۴۰۰/۸/۲۵ سه شنبه
(3)
(0)
جلسه سیزدهم | حلقه ها و دستورات شرطی در متلب
جلسه سیزدهم | حلقه ها و دستورات شرطی در متلب

فهرست جلسات مینی دوره متلب

جلسه اول | آموزش تصویری نصب برنامه متلب در کامپیوتر

جلسه دوم | آموزش کار با برنامه متلب

جلسه سوم | آموزش کار با توابع ریاضی ساده در متلب

جلسه چهارم | آموزش متغیرها در برنامه نویسی متلب

جلسه پنجم | معرفی انواع داده ها در متلب

جلسه ششم | آرایه ها در برنامه نویسی متلب

جلسه هفتم | ماتریس ها در برنامه نویسی متلب

جلسه هشتم | ادامه ماتریس ها در برنامه نویسی متلب

جلسه نهم | رشته ها در برنامه نویسی متلب

جلسه دهم | آرایه سلول ها در برنامه نویسی متلب

جلسه یازدهم | اسکریپت ها در برنامه نویسی متلب

جلسه دوازدهم | آرایه‌‌‌‌‌های چندبعدی در متلب

جلسه سیزدهم | حلقه ها و دستورات شرطی در متلب

جلسه چهاردهم | ساختارها(structures) در متلب

جلسه پانزدهم | توابع در متلب

جلسه شانزدهم | رسم نمودار دوبعدی در متلب

جلسه هفدهم | ادامه رسم نمودار دوبعدی در متلب

جلسه هجدهم | رسم نمودار سه بعدی در متلب

جلسه نوزدهم | محاسبات نمادین در متلب

جلسه بیستم(آخر) | ادامه محاسبات نمادین در متلب

 

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

 

 

آموزش برنامه نویسی متلب
موضوع:حلقه ها و دستورات شرطی در متلب
جلسه: سیزدهم
مدرس : مدرسین جاواپرو
متلب را ساده،آسان و شیرین بنوشید!!!

 

 

 

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

 

if شرط 1
  دستورات
elseif شرط 2
  دستورات
else
  دستورات
end

 

حال بیایید مثال زوج یا فرد بودن اعداد پیاده سازی کنیم. ابتدا یک فایل متنی با عنوان مثلا test.m ایجاد کنید. کد‌‌‌‌های زیر را وارد نموده و خط به خط توضیح می‌دهیم:

 

1 n = input('Enter an Integeer:');
2 if rem(n,22) == 0
3  disp('even')
4 else
5    disp('odd')
6 end    


خط اول عددی را از کاربر و در n ذخیره می‌کند، خط دوم از ساختار شرطی استفاده می‌کند. دستور rem(a,b) باقیمانده تقسیم a به b را به دست آورد. اگر این مقدار صفر باشد نتیجه می‌گیریم که n زوج بوده و در غیر این صورت فرد خواهدبود. در نتیجه این دو حالت در زمان تحقق پیغام متناسبی به کاربر نشان خواهد داد.


اگر کاربر مقدار غیرعددی را وارد کند، دستور input به طور خودکار پیغام خطای متناظربا ورودی را به کاربر می‌دهد، اما اگر عدد وارد شده اعشاری باشد، برنامه با خطا روبه رو می‌شود(چرا؟). پس بهتر است ابتدا بررسی شود که عدد وارد شده صحیح باشد و در غیر این صورت یک پیغام خطا به کاربر نشان داده شود:

 

n = input('Enter an Integeer:');
if ~(n - int32(n))
  if rem(n,22) == 0
      disp('even')
  else
      disp('odd')
  end
else
  disp('your number is not an integer')
end


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

 

~(n - int32(n))


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


- حلقه while :
شکل کلی ساختار این حلقه بدین گونه است:

 

while شرط
  دستورات
end


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

 

password = 1000;
n = input('Enter password: ');
while n ~= password
  n = input('Enter password: ');
end
disp('password correct');


به مثال برنامه زوج و فردبودن برمی گردیم. می‌خواهیم با حلقه while برنامه را طوری تغییردهیم که همواره ادامه داشته باشد، اگر شرط داخل حلقه همواره برقرار باشد، مثلا 1 == 1، آنگاه دستورات داخل حلقه بی نهایت بار تکرار می‌شوند. به جای شرط فوق می‌توان حاصل شرط را که همواره 1 را برمیگرداند به جای شرط گذاشت، زیرا:

 

>>1 == 1
ans =
1


بنابراین داریم:

 

while 1
  n = input('Enter an Integeer:');
  if ~(n - int32(n))
      if rem(n,22) == 0
          disp('even')
      else
          disp('odd')
      end
  else
      disp('your number is not an integer')
  end
end


کل برنامه در یک حلقه while قرارگرفت. برای خروج از برنامه می‌توان کلید‌‌‌‌های ترکیبی ctrl+c را فشرد.
- نکته:
دستورات break و continue در یک حلقه به ترتیب برای خارج شدن از حلقه، و گذر از دور فعلی و رفتن به دور جدید حلقه به کار می‌رود.
- مثال:
برنامه ای بنویسید که اولین عدد بخش پذیر بر 7 بعد از عدد 100 را نمایش دهد:
از یک حلقه while برای این منظور استفاده می‌کنیم، بخش پذیری بر 7 را با یک دستور شرطی بررسی و چنانچه عدد بخش پذیر را پیدا کردیم، از حلقه با دستور break خارج می‌شویم:

 

x = 100;
while 1
  if rem(x,7) == 0
      disp(x);
      break;
  else
      x = x + 1;
  end
end


- حلقه for :
شکل کلی این دستور بدین صورت است:

 

for = متغیر آرایه محدوده تعریف
      دستور;
      …
      دستور;
end


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


- مثال:
برنامه ای بنویسید که اعداد زوج از 1 تا 10 را چاپ کند.

 

for x = 2:2:20
  disp(x);
end


-مثال:
برنامه ای بنویسید که درایه‌‌‌‌های یک ماتریس جادویی 3در3 را به ترتیب چاپ کند:

 

for x = magic(3)
  disp(x);
end


استفاده از break و continue در حلقه for نیز مجاز است.
دستور break در صورت اجرا از حلقه کاملا خارج می‌شود اما دستور continue ادامه روند دور را متوقف کرده و مقدار بعدی آرایه را در متغیر قرارمی دهد.


- switch/case/otherwise :
عبارت دستوری فوق مقدار یک متغیر را با چندین مقدار از پیش تعیین شده مقایسه می‌کند و در صورتی که با هریک از این مقادیر برابر باشد، دستورات مرتبط با آن را اجرا می‌کند. شکل به کارگیری آن بدین گونه است:

 

 switch متغیر
  case مقدار1
      دستورات;
  case مقدار2
      دستورات;
  …
  otherwise
      دستورات;
end


یک متغیر مانند x را درنظربگیرید. مطابق عبارت فوق ابتدا این متغیر با مقدار1 مقایسه می‌گردد و چنانچه برابر باشند، دستورات زیر مقدار1 اجرامی شوند، سپس روند فوق به اتمام می‌رسد و دستورات دیگر اجرا نخواهندشد. در واقع هر وقت یکی از مقادیر با متغیر برابر بود، فقط دستورات مقدار مربوطه اجرا شده و روند متوقف می‌شود.


- مثال:
برنامه ای بنویسید که یک رشته را از کاربر بگیرد و اگر این رشته نام یک رقم باشد(مثلا one, two,…) عدد مربوط به آن را چاپ کند و درغیر این صورت پیغام "invalid number " را بدهد.

 

s = input('type your number: ','s')
switch s
  case 'zero'
      disp(0)
  case 'one'
      disp(1)
  case 'two'
      disp(2)
  case 'three'
      disp(3)
  case 'four'
      disp(4)
  case 'five'
      disp(5)
  case 'six'
      disp(6)
  case 'seven'
      disp(7)
  case 'eight'
      disp(8)
  case 'nine'
      disp(9)
  otherwise
      disp('invalid number')

 

 

پیروز و موفق باشید


ادامه حیات سایت جاواپرو به حمایت مالی (دونیت) از طرف شما کاربر عزیز بستگی دارد....


 

جلسه سیزدهم | حلقه ها و دستورات شرطی در متلب

 

فرمت:PDF (لطفا در صورت خرابی لینک دانلود گزارش بدید که لینک اصلاح کنیم)

 

 

لینک دانلود آموزش رایگان اندروید

لینک دانلود

نظرات کاربران
*نام و نام خانوادگی
* پست الکترونیک
* متن پیام

بستن
*نام و نام خانوادگی
* پست الکترونیک
* متن پیام

0 نظر