matlab رد ﯽﺴﯾﻮﻧ...

75
Slide deck by Dr. Greg Reese Miami University MATLAB An Introduction With Applications, 6 th Edition Dr. Amos Gilat The Ohio State University ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ درMATLAB

Upload: others

Post on 28-May-2020

10 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: MATLAB رد ﯽﺴﯾﻮﻧ ﻪﻣﺎﻧﺮﺑresearch.iaun.ac.ir/pd/karimianerfan/pdfs/UploadFile_5005.pdfSlide deck by Dr. Greg Reese Miami University MATLAB An Introduction With

Slide deck byDr. Greg Reese

Miami University

MATLAB An Introduction With Applications, 6th EditionDr. Amos GilatThe Ohio State University

MATLABبرنامه نویسی در

Page 2: MATLAB رد ﯽﺴﯾﻮﻧ ﻪﻣﺎﻧﺮﺑresearch.iaun.ac.ir/pd/karimianerfan/pdfs/UploadFile_5005.pdfSlide deck by Dr. Greg Reese Miami University MATLAB An Introduction With

6.0

در این فصل خواهیم دید که چطور یک قسمتی از کد را اجرا MATLABبرنامه

کندچیزي درست باشد) if(اگر •چیزي درست باشد) while(زمانی که •دفعات مشخص) for(براي •

2

Page 3: MATLAB رد ﯽﺴﯾﻮﻧ ﻪﻣﺎﻧﺮﺑresearch.iaun.ac.ir/pd/karimianerfan/pdfs/UploadFile_5005.pdfSlide deck by Dr. Greg Reese Miami University MATLAB An Introduction With

6.0

همچنین خواهیم دید که چطور قسمتهاي مختلف کد اجرا شود بسته به این که

مقدار یک متغیر چقدر است•کدام شرط مشخص برقرار است•کدام ترکیب از شرطها برقرار است•

اگر این و)and (آن درست باشد اگر این یا)or (آن درست باشد

چه رابطه اي میان دو چیز برقرار است•ي با مثال چیزي کمتر از، بیشتر از، مساوي با یا نامساو

دیگري است3

Page 4: MATLAB رد ﯽﺴﯾﻮﻧ ﻪﻣﺎﻧﺮﺑresearch.iaun.ac.ir/pd/karimianerfan/pdfs/UploadFile_5005.pdfSlide deck by Dr. Greg Reese Miami University MATLAB An Introduction With

6.1 RELATIONAL AND LOGICAL OPERATORS

:عملگرهاي رابطه اي

رار دادبین عملگرهایی که دو کاراکتر دارند نمیتوان فاصله ق•عالمت مساوي نوشتهدومساوي براي مقایسه دو عدد با •

.، نه یکی(==)میشود یعنی قرار بده یا اختصاص بده "="میدانیم که

4

Page 5: MATLAB رد ﯽﺴﯾﻮﻧ ﻪﻣﺎﻧﺮﺑresearch.iaun.ac.ir/pd/karimianerfan/pdfs/UploadFile_5005.pdfSlide deck by Dr. Greg Reese Miami University MATLAB An Introduction With

6.1 RELATIONAL AND LOGICAL OPERATORS

نتیجه مقایسه با یک عملگر رابطه اي همیشه •است) false(یا غلط ) true(درست

،اگر درست باشدMATLAB را 1به مقایسه مقدارنسبت می دهد

،اگر غلط باشدMATLAB را نسبت 0به مقایسه مقداردهدمی

5

Page 6: MATLAB رد ﯽﺴﯾﻮﻧ ﻪﻣﺎﻧﺮﺑresearch.iaun.ac.ir/pd/karimianerfan/pdfs/UploadFile_5005.pdfSlide deck by Dr. Greg Reese Miami University MATLAB An Introduction With

6.1 RELATIONAL AND LOGICAL OPERATORS

در مقایسه آرایه هاباید داراي ابعاد برابر باشند•مقایسه به صورت درایه به درایه انجام خواهد•

شده نتیجه آرایه اي با ابعاد دو آرایه مورد مقایس•

است1و 0خواهد بود که تنها حاوي

6

Page 7: MATLAB رد ﯽﺴﯾﻮﻧ ﻪﻣﺎﻧﺮﺑresearch.iaun.ac.ir/pd/karimianerfan/pdfs/UploadFile_5005.pdfSlide deck by Dr. Greg Reese Miami University MATLAB An Introduction With

6.1 RELATIONAL AND LOGICAL OPERATORS

در مقایسه آرایه ها با اعدادعدد با همه درایه هاي آرایه مقایسه خواهد •

شده آرایه مورد مقایسابعاد نتیجه آرایه اي با •

است1و 0خواهد بود که تنها حاوي

7

Page 8: MATLAB رد ﯽﺴﯾﻮﻧ ﻪﻣﺎﻧﺮﺑresearch.iaun.ac.ir/pd/karimianerfan/pdfs/UploadFile_5005.pdfSlide deck by Dr. Greg Reese Miami University MATLAB An Introduction With

6.1 RELATIONAL AND LOGICAL OPERATORS

مثال>> x=8:12x = 8 9 10 11 12>> x>10ans = 0 0 0 1 1>> x==11ans = 0 0 0 1 0>> x>=7ans = 1 1 1 1 1

8

Page 9: MATLAB رد ﯽﺴﯾﻮﻧ ﻪﻣﺎﻧﺮﺑresearch.iaun.ac.ir/pd/karimianerfan/pdfs/UploadFile_5005.pdfSlide deck by Dr. Greg Reese Miami University MATLAB An Introduction With

6.1 RELATIONAL AND LOGICAL OPERATORS

در واقع نتیجه یک مقایسه منطقییک بردار است1.در آن وجود دارد1یا 0نظیر هر درایه بردار اصلی 2.

>> x=8:12

x = 8 9 10 11 12

>> x>10

ans = 0 0 0 1 1

9

T I P

Page 10: MATLAB رد ﯽﺴﯾﻮﻧ ﻪﻣﺎﻧﺮﺑresearch.iaun.ac.ir/pd/karimianerfan/pdfs/UploadFile_5005.pdfSlide deck by Dr. Greg Reese Miami University MATLAB An Introduction With

6.1 RELATIONAL AND LOGICAL OPERATORS

اگر نتیجه یک مقایسه رابطه اي در یک بردارذخیره شود، تعداد درایه هایی که در مقایسه تور نتیجه درست دارند را به راحتی میتوان با دس

sum که جمع درایه هاي یک بردار را میدهد بهدست آورد

این به آن علت است که درایه هایی که مقدار •هستند0و غلطها برابر 1درست دارند برابر

10

T I P

Page 11: MATLAB رد ﯽﺴﯾﻮﻧ ﻪﻣﺎﻧﺮﺑresearch.iaun.ac.ir/pd/karimianerfan/pdfs/UploadFile_5005.pdfSlide deck by Dr. Greg Reese Miami University MATLAB An Introduction With

6.1 RELATIONAL AND LOGICAL OPERATORS

مثالاول هستند؟20تا 1چه تعداد از اعداد

استفاده کنید که براي اعداد isprimeاز دستور •میدهد0و در غیر این صورت 1اول

>> numbers = 1:20;

>> sum( isprime(numbers) )

ans =

8

11

T I P

Page 12: MATLAB رد ﯽﺴﯾﻮﻧ ﻪﻣﺎﻧﺮﺑresearch.iaun.ac.ir/pd/karimianerfan/pdfs/UploadFile_5005.pdfSlide deck by Dr. Greg Reese Miami University MATLAB An Introduction With

6.1 RELATIONAL AND LOGICAL OPERATORS

میتوان عملگرهاي رابطه اي و حسابی را در یکعبارت ترکیب کرد

عملگرهاي حسابی از اولویتهاي معمول پیروي •میکنند ونسبت به عملگرهاي رابطه اي داراي

اولویت هستندعملگرهاي رابطه اي داراي اولویت یکسان هستند و•

از چپ به راست ارزیابی میشوند

12

T I P

Page 13: MATLAB رد ﯽﺴﯾﻮﻧ ﻪﻣﺎﻧﺮﺑresearch.iaun.ac.ir/pd/karimianerfan/pdfs/UploadFile_5005.pdfSlide deck by Dr. Greg Reese Miami University MATLAB An Introduction With

6.1 RELATIONAL AND LOGICAL OPERATORS

0آرایه اي است که تنها حاوي منطقییک آرایه منطقی باشد1و هاي ناشی از عملیات ریاضی منطقی محسوب 1و 0•

نمی شوندهاي ناشی از مقایسه، منطقی هستند1و 0تنها •ت، به محض استفاده از یک آرایه منطقی در محاسبا•

MATLABدآن را به یک آرایه عددي تبدیل می کن

13

Page 14: MATLAB رد ﯽﺴﯾﻮﻧ ﻪﻣﺎﻧﺮﺑresearch.iaun.ac.ir/pd/karimianerfan/pdfs/UploadFile_5005.pdfSlide deck by Dr. Greg Reese Miami University MATLAB An Introduction With

6.1 RELATIONAL AND LOGICAL OPERATORS

ري میتوان از بردارهاي منطقی براي بررسی مقادیط که به ازاي آنها رابطه اي درست است، و نه فق

ل به این عم. درستی کلی رابطه استفاده کرد.میگوینداندیس گذاري منطقی

شانی این کار را با استفاده از بردار منطقی به عنوان ن•نتیجه مقادیري . درایه هاي بردار مقادیر انجام دهید

ه است که در رابطه صدق میکنند، یعنی مقادیري ک.است1اندیس آنها

14

Page 15: MATLAB رد ﯽﺴﯾﻮﻧ ﻪﻣﺎﻧﺮﺑresearch.iaun.ac.ir/pd/karimianerfan/pdfs/UploadFile_5005.pdfSlide deck by Dr. Greg Reese Miami University MATLAB An Introduction With

6.1 RELATIONAL AND LOGICAL OPERATORS

مثالهستند؟3مضرب 10تا 1کدام اعداد از

>> numbers = 1:10

numbers = 1 2 3 4 5 6 7 8 9 10

>> multiples = rem( numbers, 3 ) == 0

multiples = 0 0 1 0 0 1 0 0 1 0

>> multiplesOf3 = numbers(multiples)

multiplesOf3 =

3 6 9

15

Page 16: MATLAB رد ﯽﺴﯾﻮﻧ ﻪﻣﺎﻧﺮﺑresearch.iaun.ac.ir/pd/karimianerfan/pdfs/UploadFile_5005.pdfSlide deck by Dr. Greg Reese Miami University MATLAB An Introduction With

6.1 RELATIONAL AND LOGICAL OPERATORS

مثالnumbers(multiples) را به عنوان بیرون

که درایه نظیر آنها در numbersکشیدن درایه هایی از multiples1 است در نظر بگیرید

numbers = 1 2 3 4 5 6 7 8 9 10

multiples = 0 0 1 0 0 1 0 0 1 0

numbers(multiples) = 3 6 9

16

Page 17: MATLAB رد ﯽﺴﯾﻮﻧ ﻪﻣﺎﻧﺮﺑresearch.iaun.ac.ir/pd/karimianerfan/pdfs/UploadFile_5005.pdfSlide deck by Dr. Greg Reese Miami University MATLAB An Introduction With

6.1 RELATIONAL AND LOGICAL OPERATORS

مثالاول هستند؟20تا 1کدام یک از اعداد

>> numbers = 1:20;>> numbers( isprime(numbers) )ans =

2 3 5 7 11 13 17 19

اندیس گذاري منطقی به خصوص وقتی مفیدخواهد بود که با عملگرهاي منطقی استفاده

در ادامه در مورد آن صحبت میشود. شود

17

Page 18: MATLAB رد ﯽﺴﯾﻮﻧ ﻪﻣﺎﻧﺮﺑresearch.iaun.ac.ir/pd/karimianerfan/pdfs/UploadFile_5005.pdfSlide deck by Dr. Greg Reese Miami University MATLAB An Introduction With

6.1 RELATIONAL AND LOGICAL OPERATORS

:عملگرهاي منطقی

باراتی منطق بولی سیستمی است براي ترکیب عکه درست یا غلط هستند

•MATLABعملگرها و دستورهایی براي انجامبسیاري از عملیات بولی دارد

ه اي عملیات بولی در ترکیب با دستورات رابط•امکان انجام انواع خاصی از محاسبات را به

آسانی و روشنی میدهند

18

Page 19: MATLAB رد ﯽﺴﯾﻮﻧ ﻪﻣﺎﻧﺮﺑresearch.iaun.ac.ir/pd/karimianerfan/pdfs/UploadFile_5005.pdfSlide deck by Dr. Greg Reese Miami University MATLAB An Introduction With

6.1 RELATIONAL AND LOGICAL OPERATORS

جدول صحت سنجی قوانین منطق بولی را این جدول نتیجه عملیات . تعریف میکند

منطقی را براي هر ترکیب ممکن از ورودي ها جدول صحت سنجی مرتبط با . میدهد

MATLABبه این صورت است

19

Page 20: MATLAB رد ﯽﺴﯾﻮﻧ ﻪﻣﺎﻧﺮﺑresearch.iaun.ac.ir/pd/karimianerfan/pdfs/UploadFile_5005.pdfSlide deck by Dr. Greg Reese Miami University MATLAB An Introduction With

6.1 RELATIONAL AND LOGICAL OPERATORS

جدول صحت سنجی به صورت تشریحی یعنی•AND ،درست است اگر هر دو ورودي درست باشند

وگرنه غلط است•OR درست است اگر حداقل یک ورودي درست

باشد، وگرنه غلط است•XOR (exclusive OR) درست است اگر تنها یک

ورودي درست باشد، وگرنه غلط است•NOT ط درست است اگر وروردي غلط باشد، وگرنه غل

است

20

Page 21: MATLAB رد ﯽﺴﯾﻮﻧ ﻪﻣﺎﻧﺮﺑresearch.iaun.ac.ir/pd/karimianerfan/pdfs/UploadFile_5005.pdfSlide deck by Dr. Greg Reese Miami University MATLAB An Introduction With

6.1 RELATIONAL AND LOGICAL OPERATORS

ه نمادي است ک–یا + یک عملگر حسابی مثل یک محاسبه با اعداد MATLABباعث میشود

یا عبارات دو طرف آن انجام دهد

کاراکتريعملگر منطقی به طور مشابه، یک یک MATLABاست که باعث میشود

عملیات منطقی روي یک یا دو عدد یا عبارت انجام دهد

21

Page 22: MATLAB رد ﯽﺴﯾﻮﻧ ﻪﻣﺎﻧﺮﺑresearch.iaun.ac.ir/pd/karimianerfan/pdfs/UploadFile_5005.pdfSlide deck by Dr. Greg Reese Miami University MATLAB An Introduction With

6.1 RELATIONAL AND LOGICAL OPERATORS

MATLAB سه عملگر منطقی دارد :&, |, ~•a&b عمل و)AND ( منطقی را رويaوb انجام میدهد•a|b عمل یا)OR ( منطقی را رويaوbانجام میدهد•~a عمل نقیض)NOT ( را رويaانجام میدهدورودي هاي همه عملگرهاي منطقی عدد هستند•

صفر غلط)false (است هر عدد به جز صفر درست)true (است

منطقی است0یا 1نتیجه یا خروجی یک عملگر منطقی •

22

Page 23: MATLAB رد ﯽﺴﯾﻮﻧ ﻪﻣﺎﻧﺮﺑresearch.iaun.ac.ir/pd/karimianerfan/pdfs/UploadFile_5005.pdfSlide deck by Dr. Greg Reese Miami University MATLAB An Introduction With

6.1 RELATIONAL AND LOGICAL OPERATORS

زمانی که عملگرهاي منطقی براي آرایه ها استفاده میشوند

باید داراي ابعاد برابر باشند••MATLAB ارزیابی عملگر را درایه به درایه انجام

میدهد1و 0نتیجه آرایه اي با همان ابعاد ولی تنها حاوي •

خواهد بود•not)تنها روي یک آرایه کار میکند) نقیض

23

Page 24: MATLAB رد ﯽﺴﯾﻮﻧ ﻪﻣﺎﻧﺮﺑresearch.iaun.ac.ir/pd/karimianerfan/pdfs/UploadFile_5005.pdfSlide deck by Dr. Greg Reese Miami University MATLAB An Introduction With

6.1 RELATIONAL AND LOGICAL OPERATORS

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

انجام میدهد ها ولی تنبا ابعاد آرایه اولیه نتیجه آرایه اي •

خواهد بود1و 0حاوي

24

Page 25: MATLAB رد ﯽﺴﯾﻮﻧ ﻪﻣﺎﻧﺮﺑresearch.iaun.ac.ir/pd/karimianerfan/pdfs/UploadFile_5005.pdfSlide deck by Dr. Greg Reese Miami University MATLAB An Introduction With

6.1 RELATIONAL AND LOGICAL OPERATORS

را میتوان عملگرهاي حسابی، رابطه اي و منطقیاولویتها به این صورت هستند. ترکیب کرد

25

Page 26: MATLAB رد ﯽﺴﯾﻮﻧ ﻪﻣﺎﻧﺮﺑresearch.iaun.ac.ir/pd/karimianerfan/pdfs/UploadFile_5005.pdfSlide deck by Dr. Greg Reese Miami University MATLAB An Introduction With

6.1 RELATIONAL AND LOGICAL OPERATORS

مثالسال یا کمتر12–کودك

سال20و کمتر از 12بیش از –نوجوان سال20بیش از –بزرگسال

>> age=[45 47 15 13 11]

age = 45 47 15 13 11

26

Page 27: MATLAB رد ﯽﺴﯾﻮﻧ ﻪﻣﺎﻧﺮﺑresearch.iaun.ac.ir/pd/karimianerfan/pdfs/UploadFile_5005.pdfSlide deck by Dr. Greg Reese Miami University MATLAB An Introduction With

6.1 RELATIONAL AND LOGICAL OPERATORS

مثالنوجوانها کدامها هستند؟

>> age=[45 47 15 13 11];

>> age>=13

ans = 1 1 1 1 0

>> age<=19

ans = 0 0 1 1 1

>> age>=13 & age<=19

ans = 0 0 1 1 0

دو نوجوان اینجا مشخص میشوند27

Page 28: MATLAB رد ﯽﺴﯾﻮﻧ ﻪﻣﺎﻧﺮﺑresearch.iaun.ac.ir/pd/karimianerfan/pdfs/UploadFile_5005.pdfSlide deck by Dr. Greg Reese Miami University MATLAB An Introduction With

6.1 RELATIONAL AND LOGICAL OPERATORS

مثال>> age=[45 47 15 13 11]

age = 45 47 15 13 11

چه کسی نوجوان نیست؟>> ~(age>=13 & age<=19)

ans = 1 1 0 0 1

چه کسی بزرگسال یا کودك است؟>> age>19 | age<13

ans = 1 1 0 0 1

28

Page 29: MATLAB رد ﯽﺴﯾﻮﻧ ﻪﻣﺎﻧﺮﺑresearch.iaun.ac.ir/pd/karimianerfan/pdfs/UploadFile_5005.pdfSlide deck by Dr. Greg Reese Miami University MATLAB An Introduction With

6.1 RELATIONAL AND LOGICAL OPERATORS

:توابع منطقی داخلی

MATLAB داراي چند تابع داخلی یا دستورطه براي انجام عملیات منطقی و محاسبات مربو

سه تاي آنها معادل عملگرهاي منطقی . استهستند

• and(A,B) – A&Bمعادل• or(A,B) – A|Bمعادل• not(A) – A~معادل

29

Page 30: MATLAB رد ﯽﺴﯾﻮﻧ ﻪﻣﺎﻧﺮﺑresearch.iaun.ac.ir/pd/karimianerfan/pdfs/UploadFile_5005.pdfSlide deck by Dr. Greg Reese Miami University MATLAB An Introduction With

6.1 RELATIONAL AND LOGICAL OPERATORS

MATLAB توابع بولی دیگري نیز دارد

30

Page 31: MATLAB رد ﯽﺴﯾﻮﻧ ﻪﻣﺎﻧﺮﺑresearch.iaun.ac.ir/pd/karimianerfan/pdfs/UploadFile_5005.pdfSlide deck by Dr. Greg Reese Miami University MATLAB An Introduction With

6.2 CONDITIONAL STATEMENTS

دستوري است که به جمله شرطی یک MATLAB امکان تصمیم گیري براي اجرا یا

عدم اجراي دستوراتی که پس از آن می آید را می دهد

د جمالت شرطی تقریبا در تمام کدها یا توابع وجو•دارند

:این جمالت داراي سه صورت کلی هستند• if-end

if-else-end

if-elseif-else-end

31

Page 32: MATLAB رد ﯽﺴﯾﻮﻧ ﻪﻣﺎﻧﺮﺑresearch.iaun.ac.ir/pd/karimianerfan/pdfs/UploadFile_5005.pdfSlide deck by Dr. Greg Reese Miami University MATLAB An Introduction With

6.2.1 The if-end Structure

نموداري است که روند اجراي کد را نشانفلوچارتبه خصوص براي نشان دادن نحوه عملکرد. میدهد

ایج برخی از عالئم ر. دستورات شرطی مناسب است:در فلوچارتها عبارتند از

• نشان دهنده اجراي دستورات به ترتیب است• است if نشان دهنده یک جمله• مسیر اجراي کد را نشان میدهد

32

Page 33: MATLAB رد ﯽﺴﯾﻮﻧ ﻪﻣﺎﻧﺮﺑresearch.iaun.ac.ir/pd/karimianerfan/pdfs/UploadFile_5005.pdfSlide deck by Dr. Greg Reese Miami University MATLAB An Introduction With

6.2.1 The if-end Structure

MATLABاگر عبارت شرطی درست باشد، و خط ifخطوطی از کد که بین خط حاوي جمله

سپس روند کد . است را اجرا میکندendحاوي با اجراي دستورات قرار گرفته پس از خط حاوي

endدنبال می شود.

33

Page 34: MATLAB رد ﯽﺴﯾﻮﻧ ﻪﻣﺎﻧﺮﺑresearch.iaun.ac.ir/pd/karimianerfan/pdfs/UploadFile_5005.pdfSlide deck by Dr. Greg Reese Miami University MATLAB An Introduction With

6.2.1 The if-end Structure

MATLABاگر عبارت شرطی غلط باشد، و خط حاوي ifخطوطی از کد که بین خط حاوي

end ا سپس روند کد ب. میگیرداست را ندیدهاجراي دستورات قرار گرفته پس از خط حاوي

endدنبال می شود.

34

Page 35: MATLAB رد ﯽﺴﯾﻮﻧ ﻪﻣﺎﻧﺮﺑresearch.iaun.ac.ir/pd/karimianerfan/pdfs/UploadFile_5005.pdfSlide deck by Dr. Greg Reese Miami University MATLAB An Introduction With

6.2.1 The if-end Structure

عبارت شرطی زمانی درست است که حاصل آن عبارت . منطقی یا یک عدد غیر صفر باشد1

منطقی 0شرطی زمانی غلط است که حاصل آن یا صفر عددي باشد

35

Page 36: MATLAB رد ﯽﺴﯾﻮﻧ ﻪﻣﺎﻧﺮﺑresearch.iaun.ac.ir/pd/karimianerfan/pdfs/UploadFile_5005.pdfSlide deck by Dr. Greg Reese Miami University MATLAB An Introduction With

6.2.2 The if-else-end Structure

این امکان را میدهد که if-else-endساختارقسمتی از کد زمانی که شرط درست است اجرا شود و

.قسمت دیگري از آن زمانی که شرط غلط استجواب دادن تلفن–مثال

if تماس گیرنده دوست شماستمدت زمان طوالنی صحبت کن

elseمدت زمان کوتاه صحبت کن

end

36

Page 37: MATLAB رد ﯽﺴﯾﻮﻧ ﻪﻣﺎﻧﺮﺑresearch.iaun.ac.ir/pd/karimianerfan/pdfs/UploadFile_5005.pdfSlide deck by Dr. Greg Reese Miami University MATLAB An Introduction With

6.2.2 The if-else-end Structure

کد و فلوچارت ساختار 6-2تصویر if-else-endرا نشان میدهد.

37

Page 38: MATLAB رد ﯽﺴﯾﻮﻧ ﻪﻣﺎﻧﺮﺑresearch.iaun.ac.ir/pd/karimianerfan/pdfs/UploadFile_5005.pdfSlide deck by Dr. Greg Reese Miami University MATLAB An Introduction With

6.2.3 The if-elseif-else-end Structure

امکان انتخاب if-elseif-else-endساختار قسمت از کد را براي اجرا می دهد) یا چند(بین سه

جواب دادن تلفن–مثال if تماس گیرنده دوست شماست

مدت زمان طوالنی صحبت کنelseif تماس گیرنده هم گروه درسی شماست

تا زمانی که پاسخ اشکالها را بفهمی صحبت کنelse

بگو بعدا تماس میگیريend

38

Page 39: MATLAB رد ﯽﺴﯾﻮﻧ ﻪﻣﺎﻧﺮﺑresearch.iaun.ac.ir/pd/karimianerfan/pdfs/UploadFile_5005.pdfSlide deck by Dr. Greg Reese Miami University MATLAB An Introduction With

6.2.3 The if-elseif-else-end Structure

داشته باشید elseifمیتوانید به تعداد دلخواه جمله مثال

if تماس گیرنده دوست شماستمدت زمان طوالنی صحبت کن

elseif تماس گیرنده دوست صمیمی شماستکمی صحبت کن و قرار مالقات بگذار

elseif تماس گیرنده هم گروه درسی شماستتا زمانی که پاسخ اشکالها را بفهمی صحبت کن

elseبگو بعدا تماس میگیري

end

39

Page 40: MATLAB رد ﯽﺴﯾﻮﻧ ﻪﻣﺎﻧﺮﺑresearch.iaun.ac.ir/pd/karimianerfan/pdfs/UploadFile_5005.pdfSlide deck by Dr. Greg Reese Miami University MATLAB An Introduction With

6.2.3 The if-elseif-else-end Structure

کد و فلوچارت مربوط به ساختار 6-3تصویر if-elseif-else-endرا نشان میدهد

40

Page 41: MATLAB رد ﯽﺴﯾﻮﻧ ﻪﻣﺎﻧﺮﺑresearch.iaun.ac.ir/pd/karimianerfan/pdfs/UploadFile_5005.pdfSlide deck by Dr. Greg Reese Miami University MATLAB An Introduction With

6.2.3 The if-elseif-else-end Structure

را حذف کردelseمیتوان جمله یا ifدر این حالت، اگر شرایط جمالت •

elseifبرقرار نباشد، کدي اجرا نخواهد شد

41

Page 42: MATLAB رد ﯽﺴﯾﻮﻧ ﻪﻣﺎﻧﺮﺑresearch.iaun.ac.ir/pd/karimianerfan/pdfs/UploadFile_5005.pdfSlide deck by Dr. Greg Reese Miami University MATLAB An Introduction With

6.3 THE switch-case STATEMENT

در if-elseif-else-endساختارelseifصورت استفاده از تعداد زیادي

از یک راه حل بهتر استفاده. نامفهوم خواهد شداستswitch-caseساختار

قدري متفاوت switch-caseساختار•ر است زیرا در این حالت انتخاب کد براي اجرا ب

اساس مقدار یک عدد یا رشته است، نه درستیا غلط

42

Page 43: MATLAB رد ﯽﺴﯾﻮﻧ ﻪﻣﺎﻧﺮﺑresearch.iaun.ac.ir/pd/karimianerfan/pdfs/UploadFile_5005.pdfSlide deck by Dr. Greg Reese Miami University MATLAB An Introduction With

6.3 THE switch-case STATEMENT

اساس کار به این صورت استswitch namecase 'Bobby'

مدت زمان طوالنی صحبت کنcase 'Susan'

تا زمانی که پاسخ اشکالها را بفهمی صحبت کنcase 'Hubert'

کمی صحبت کن و قرار مالقات بگذار case ‘David'

صحبت کنکوتاه مدت زمان otherwise

بگو بعدا تماس میگیريend

43

Page 44: MATLAB رد ﯽﺴﯾﻮﻧ ﻪﻣﺎﻧﺮﺑresearch.iaun.ac.ir/pd/karimianerfan/pdfs/UploadFile_5005.pdfSlide deck by Dr. Greg Reese Miami University MATLAB An Introduction With

6.3 THE switch-case STATEMENT

44

Page 45: MATLAB رد ﯽﺴﯾﻮﻧ ﻪﻣﺎﻧﺮﺑresearch.iaun.ac.ir/pd/karimianerfan/pdfs/UploadFile_5005.pdfSlide deck by Dr. Greg Reese Miami University MATLAB An Introduction With

6.3 THE switch-case STATEMENT

switch عبارت سوییچرا بررسی میکند

اگر مقدار آن برابرValue1 باشد، همه

endیا case ،otherwiseدستورات را تا سپس . 1بعدي اجرا میکند، یعنی دستورات گروه

اجرا میشودendکد بعد از اگر مقدار آن برابرvalue2 باشد دستورات

را اجرا میکند2گروه و به همین ترتیب

45

Page 46: MATLAB رد ﯽﺴﯾﻮﻧ ﻪﻣﺎﻧﺮﺑresearch.iaun.ac.ir/pd/karimianerfan/pdfs/UploadFile_5005.pdfSlide deck by Dr. Greg Reese Miami University MATLAB An Introduction With

6.3 THE switch-case STATEMENT

اگر عبارت سوییچ برابر با هیچ•کدام از مقادیر مشخص شده در

نباشد، دستوراتcaseجمالت .اجرا میشودotherwiseبعد از

وجود نداشتهotherwiseاگر باشد، دستوري اجرا نخواهد شد

باشد، caseاگر عبارت سوییچ برابر با بیش از یک مقدار •اجرا خواهد شدcaseتنها اولین

46

Page 47: MATLAB رد ﯽﺴﯾﻮﻧ ﻪﻣﺎﻧﺮﺑresearch.iaun.ac.ir/pd/karimianerfan/pdfs/UploadFile_5005.pdfSlide deck by Dr. Greg Reese Miami University MATLAB An Introduction With

6.3 THE switch-case STATEMENT

در بررسی رشته هاي متنی، حروف کوچک و بزرگupperو lowerاز دستورات .مهم هستند

میتوانید براي بزرگ یا کوچک کردن حروف یکعبارت استفاده کنید

caller = lower( name );

switch caller

case 'bobby'

some codecase 'susan'

some codecase 'mom'

some codeend

47

T I P

Page 48: MATLAB رد ﯽﺴﯾﻮﻧ ﻪﻣﺎﻧﺮﺑresearch.iaun.ac.ir/pd/karimianerfan/pdfs/UploadFile_5005.pdfSlide deck by Dr. Greg Reese Miami University MATLAB An Introduction With

6.4 LOOPS

روش دیگري براي کنترل روند اجراي کد حلقهم حلقه گروهی از دستورات را پشت سر ه. است

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

حلقه دستورات را به تعداد دفعات –1روش •مشخصی اجرا میکند

حلقه دستورات را تا زمانی که شرط –2روش •مشخصی برقرار باشد اجرا میکند

48

Page 49: MATLAB رد ﯽﺴﯾﻮﻧ ﻪﻣﺎﻧﺮﺑresearch.iaun.ac.ir/pd/karimianerfan/pdfs/UploadFile_5005.pdfSlide deck by Dr. Greg Reese Miami University MATLAB An Introduction With

6.4.1 for-end Loops

forکه اغلب حلقه (for-endیک حلقه گروهی از دستورات را به ) میشودنامیده

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

49

Page 50: MATLAB رد ﯽﺴﯾﻮﻧ ﻪﻣﺎﻧﺮﺑresearch.iaun.ac.ir/pd/karimianerfan/pdfs/UploadFile_5005.pdfSlide deck by Dr. Greg Reese Miami University MATLAB An Introduction With

6.4.1 for-end Loops

د متغیر اندیس حلقه میتواند هر نامی داشته باش•)استفاده میشودi,j,k,m,nمعموال از (

زمانی که با اعداد مختلط کار میکنید ازi وj استفاده)جایگزینهاي مناسبی هستندjjو ii. (نکنید

50

Page 51: MATLAB رد ﯽﺴﯾﻮﻧ ﻪﻣﺎﻧﺮﺑresearch.iaun.ac.ir/pd/karimianerfan/pdfs/UploadFile_5005.pdfSlide deck by Dr. Greg Reese Miami University MATLAB An Introduction With

6.4.1 for-end Loops

قرار دادهfرا برابر kحلقه 1.و forو دستورات بین

end یعنی بدنه حلقه را ،اجرا میکند

قرار داده و بدنه را اجرا میکندf+sرا برابر kحلقه 2.

اجرا میشودk > tروند تا زمانی که 3.ادامه endسپس برنامه با اجراي دستورات پس از 4.

می یابد•f وtمعموال اعداد صحیح هستند•s1ام در این حالت حلقه با گ. معموال استفاده نمیشود

تکرار میشود51

Page 52: MATLAB رد ﯽﺴﯾﻮﻧ ﻪﻣﺎﻧﺮﺑresearch.iaun.ac.ir/pd/karimianerfan/pdfs/UploadFile_5005.pdfSlide deck by Dr. Greg Reese Miami University MATLAB An Introduction With

6.4.1 for-end Loops

میتواند منفی باشدsگام • ،مثالk=25:-5:10 چهار بار با مقادیر

k=25,20,15,10تکرار میشودحلقه یک بار اجرا میشودf=tاگر •، حلقه اجرا s<0و f<t، یا اگر s>0و f>tاگر •

نمیشود

52

Page 53: MATLAB رد ﯽﺴﯾﻮﻧ ﻪﻣﺎﻧﺮﺑresearch.iaun.ac.ir/pd/karimianerfan/pdfs/UploadFile_5005.pdfSlide deck by Dr. Greg Reese Miami University MATLAB An Introduction With

6.4.1 for-end Loops

نتواند kبه گونه اي باشند که k,s,tاگر مقادیر •باشد، آنگاهtبرابر اگرs مثبت باشد، آخرین تکرار زمانی است کهk

را داشته باشدtبزرگترین مقدار کمتر از مثالk=8:10:50 پنج تکرار باk=8,18,28,38,48

ایجاد میکند اگرs منفی باشد، آخرین تکرار زمانی است کهk

را داشته باشدtکمترین مقدار بزرگتر از

53

Page 54: MATLAB رد ﯽﺴﯾﻮﻧ ﻪﻣﺎﻧﺮﺑresearch.iaun.ac.ir/pd/karimianerfan/pdfs/UploadFile_5005.pdfSlide deck by Dr. Greg Reese Miami University MATLAB An Introduction With

6.4.1 for-end Loops

k، میتوان مقادیر مشخصی را به forدر دستور •)که به صورت یک بردار وارد میشوند(اختصاص داد

مثال:for k = [7 9 –1 3 3 5]

را تغییر دهدkدر حالت کلی، بدنه حلقه نباید مقدار •endدر یک برنامه باید حتما یک دستور forهر دستور •

داشته باشد

54

Page 55: MATLAB رد ﯽﺴﯾﻮﻧ ﻪﻣﺎﻧﺮﺑresearch.iaun.ac.ir/pd/karimianerfan/pdfs/UploadFile_5005.pdfSlide deck by Dr. Greg Reese Miami University MATLAB An Introduction With

6.4.1 for-end Loops

به طور خودکار ) k(مقدار متغیر اندیس حلقه •نمایش داده نمیشود

مقدارk را در هر تکرار میتوان با نوشتنk به عنوانیکی از دستورات حلقه نمایش داد

قه زمانی که حلقه پایان می یابد، متغیر اندیس حل•)k ( برابر آخرین مقدار تخصیص داده شده به آن

است

55

Page 56: MATLAB رد ﯽﺴﯾﻮﻧ ﻪﻣﺎﻧﺮﺑresearch.iaun.ac.ir/pd/karimianerfan/pdfs/UploadFile_5005.pdfSlide deck by Dr. Greg Reese Miami University MATLAB An Introduction With

6.4.1 for-end Loops

مثالScriptfor k=1:3:10

k

x = k^2

end

fprintf('After loop k = %d\n', k);

56

Outputk = 1

x = 1

k = 4

x = 16

k = 7

x = 49

k = 10

x = 100

After loop k = 10

Page 57: MATLAB رد ﯽﺴﯾﻮﻧ ﻪﻣﺎﻧﺮﺑresearch.iaun.ac.ir/pd/karimianerfan/pdfs/UploadFile_5005.pdfSlide deck by Dr. Greg Reese Miami University MATLAB An Introduction With

6.4.1 for-end Loops

اغلب براي محاسبات میتوان از یکی از دو روشردیا عملیات درایه به درایه استفاده کforحلقه

:عملیات درایه به درایهاغلب سریع تر است•اغلب خواناتر است•مناسب تر استMATLABبراي •

از عملیات درایه به درایه هر –پیشنهاد کلی تنها forحلقه . زمان که میتوانید استفاده کنید

.براي زمانی است که مجبور باشید57

T I P

Page 58: MATLAB رد ﯽﺴﯾﻮﻧ ﻪﻣﺎﻧﺮﺑresearch.iaun.ac.ir/pd/karimianerfan/pdfs/UploadFile_5005.pdfSlide deck by Dr. Greg Reese Miami University MATLAB An Introduction With

6.4.2 while-end Loops

زمانی استفاده میشود کهwhile-endحلقهتعداد تکرار حلقه را نمی دانید•شرطی دارید که میتوانید آن را امتحان کنید و هر زمان •

مثال. غلط بود اجراي حلقه را متوقف کنید داده ها را از یک فایل بخوانید تا زمانی که به انتهاي فایل

برسیدجمله جمالتی را به یک جمع اضافه کنید تا زمانی که تفاضل دو

انتهایی کمتر از مقدار مشخصی شود

58

Page 59: MATLAB رد ﯽﺴﯾﻮﻧ ﻪﻣﺎﻧﺮﺑresearch.iaun.ac.ir/pd/karimianerfan/pdfs/UploadFile_5005.pdfSlide deck by Dr. Greg Reese Miami University MATLAB An Introduction With

6.4.2 while-end Loops

حلقه عبارت1.شرطی را ارزیابی

میکنداگر عبارت شرطی درست باشد، کد بدنه را اجرا 2.

باز میگردد1میکند، سپس به گام رده اگر عبارت شرطی غلط باشد، از کد بدنه عبور ک3.

می رودendو به کد بعد از جمله

59

Page 60: MATLAB رد ﯽﺴﯾﻮﻧ ﻪﻣﺎﻧﺮﺑresearch.iaun.ac.ir/pd/karimianerfan/pdfs/UploadFile_5005.pdfSlide deck by Dr. Greg Reese Miami University MATLAB An Introduction With

6.4.2 while-end Loops

while-endجمله شرطی یک حلقهداراي یک متغیر است•

بدنه حلقه باید مقدار آن متغیر را تغییر دهدها باید مقادیري از متغیر وجود داشته باشد که به ازاي آن

جمله شرطی غلط باشد

60

Page 61: MATLAB رد ﯽﺴﯾﻮﻧ ﻪﻣﺎﻧﺮﺑresearch.iaun.ac.ir/pd/karimianerfan/pdfs/UploadFile_5005.pdfSlide deck by Dr. Greg Reese Miami University MATLAB An Introduction With

6.4.2 while-end Loops

مثالاین کدx = 1

while x <= 15

x = 2*x

end

61

این خروجی را میدهدx =

1

x =

2

x =

4

x =

8

x =

16

Page 62: MATLAB رد ﯽﺴﯾﻮﻧ ﻪﻣﺎﻧﺮﺑresearch.iaun.ac.ir/pd/karimianerfan/pdfs/UploadFile_5005.pdfSlide deck by Dr. Greg Reese Miami University MATLAB An Introduction With

6.4.2 while-end Loops

ه اگر عبارت شرطی هیچ گاه غلط نباشد، حلقاین نوع حلقه! براي همیشه تکرار خواهد شد

لی نامیده شده است، وحلقه نامعین در کتاب ه برنام. می نامندحلقه بینهایت اغلب آن را

شما همچنان اجرا خواهد شد، و اگر حلقه ، )که اغلب اینطور است(خروجی نداشته باشد

هنگ MATLABاین گونه به نظر میرسد که کرده است

62

Page 63: MATLAB رد ﯽﺴﯾﻮﻧ ﻪﻣﺎﻧﺮﺑresearch.iaun.ac.ir/pd/karimianerfan/pdfs/UploadFile_5005.pdfSlide deck by Dr. Greg Reese Miami University MATLAB An Introduction With

6.4.2 while-end Loops

:علل شایع ایجاد حلقه هاي نامعینمتغیري در جمله شرطی وجود نداشته باشد•

distance1 = 1;

distance2 = 10;

distance3 = 0;

while distance1 < distance2

fprintf('Distance = %d\n',distance3);

end

63

distance1 وdistance2هیچگاه تغییر نمیکنند

Page 64: MATLAB رد ﯽﺴﯾﻮﻧ ﻪﻣﺎﻧﺮﺑresearch.iaun.ac.ir/pd/karimianerfan/pdfs/UploadFile_5005.pdfSlide deck by Dr. Greg Reese Miami University MATLAB An Introduction With

6.4.2 while-end Loops

:علل شایع ایجاد حلقه هاي نامعینمتغیر جمله شرطی هیچ گاه تغییر نمیکند•

minDistance = 42;

distanceIncrement = 0;

distance = 0;

while distance < minDistance

distance = distance+distanceIncrement;

end

64

باشد10باید –غلط تایپی

Page 65: MATLAB رد ﯽﺴﯾﻮﻧ ﻪﻣﺎﻧﺮﺑresearch.iaun.ac.ir/pd/karimianerfan/pdfs/UploadFile_5005.pdfSlide deck by Dr. Greg Reese Miami University MATLAB An Introduction With

6.4.2 while-end Loops

:علل شایع ایجاد حلقه هاي نامعینمتغیر اشتباهی در جمله شرطی تغییر کند•

minDistance = 42;

delta = 10;

distance = 0;

while distance < minDistance

minDistance = minDistance + delta;

end

65

باشدdistanceباید -غلط تایپی

Page 66: MATLAB رد ﯽﺴﯾﻮﻧ ﻪﻣﺎﻧﺮﺑresearch.iaun.ac.ir/pd/karimianerfan/pdfs/UploadFile_5005.pdfSlide deck by Dr. Greg Reese Miami University MATLAB An Introduction With

6.4.2 while-end Loops

:علل شایع ایجاد حلقه هاي نامعینجمله شرطی هیچ گاه غلط نشود•

minDistance = 42;

x = 0;

y = 0;

while -sqrt( x^2+y^2 ) < minDistance

x = x + 1;

y = y + x;

end

66

عالمت منفی -غلط تایپینباید وجود داشته باشد

Page 67: MATLAB رد ﯽﺴﯾﻮﻧ ﻪﻣﺎﻧﺮﺑresearch.iaun.ac.ir/pd/karimianerfan/pdfs/UploadFile_5005.pdfSlide deck by Dr. Greg Reese Miami University MATLAB An Introduction With

6.4.2 while-end Loops

اگر برنامه در یک حلقه نامعین گیر افتاد،

نشانگر را در پنجره فرمان قرار دهید••CTRL+Cرا بزنید

67

T I P

Page 68: MATLAB رد ﯽﺴﯾﻮﻧ ﻪﻣﺎﻧﺮﺑresearch.iaun.ac.ir/pd/karimianerfan/pdfs/UploadFile_5005.pdfSlide deck by Dr. Greg Reese Miami University MATLAB An Introduction With

6.5 NESTED LOOPS AND NESTED CONDITIONAL STATEMENTS

ا اگر یک حلقه یا جمله شرطی درون یک حلقه یجمله شرطی دیگر قرار گیرد، به آن حالت

گفته میشودتو در توحلقه هاي تو در تو رایج تر هستند•

اغلب در مسائل دوبعدي به کار می روندداراي یک بایدهر کدام از حلقه ها و جمالت شرطی •

باشندendجمله

68

Page 69: MATLAB رد ﯽﺴﯾﻮﻧ ﻪﻣﺎﻧﺮﺑresearch.iaun.ac.ir/pd/karimianerfan/pdfs/UploadFile_5005.pdfSlide deck by Dr. Greg Reese Miami University MATLAB An Introduction With

6.5 NESTED LOOPS AND NESTED CONDITIONAL STATEMENTS

مثال

69

Page 70: MATLAB رد ﯽﺴﯾﻮﻧ ﻪﻣﺎﻧﺮﺑresearch.iaun.ac.ir/pd/karimianerfan/pdfs/UploadFile_5005.pdfSlide deck by Dr. Greg Reese Miami University MATLAB An Introduction With

6.6 THE break AND continue COMMANDS

:breakدستور

دستور ) whileیا for(در داخل یک حلقه •breakاجراي حلقه را متوقف میکند

MATLAB ازbreak به دستورend ،حلقه میرودبه (ند سپس اجراي برنامه با دستور بعدي ادامه پیدا میک

)آن حلقه باز نمیگرددwhileیا forدستور breakر کل اجراي حلقه را متوقف میکند، نه فقط دو

.جاري را اگرbreakلی در یک حلقه تو در تو باشد، فقط حلقه داخ

)نه حلقه هاي بیرونی(متوقف میشود

70

Page 71: MATLAB رد ﯽﺴﯾﻮﻧ ﻪﻣﺎﻧﺮﺑresearch.iaun.ac.ir/pd/karimianerfan/pdfs/UploadFile_5005.pdfSlide deck by Dr. Greg Reese Miami University MATLAB An Introduction With

6.6 THE break AND continue COMMANDS

اگر دستورbreak در یک کد یا تابع و نه داخلیک حلقه باشد، اجراي فایل را متوقف میکند

دستورbreak معموال همراه با یک دستورشرطی استفاده میشود

این حالت در حلقه ها راهی براي توقف اجراي حلقه درصورت برقراري یک شرط خاص است

71

Page 72: MATLAB رد ﯽﺴﯾﻮﻧ ﻪﻣﺎﻧﺮﺑresearch.iaun.ac.ir/pd/karimianerfan/pdfs/UploadFile_5005.pdfSlide deck by Dr. Greg Reese Miami University MATLAB An Introduction With

6.6 THE break AND continue COMMANDS

مثالکدwhile( 1 )

name = input( 'Type name or q to quit: ', 's' );

if length( name ) == 1 && name(1) == 'q'

break;

else

fprintf( 'Your name is %s\n', name );

end

end

72

"Greg", "quentin", "q"خروجی براي ورودي هاي Type name or q to quit: Greg

Your name is Greg

Type name or q to quit: quentin

Your name is quentin

Type name or q to quit: q

>>

ر شودهمیشه درست است بنابراین باعث میشود حلقه همیشه تکرا1–نکته

و اگر کاربر تنها یک حرف وارد کرداست، از حلقه خارج شوqآن

را چاپ کنnameوگرنه

!تنها راه خروج از حلقه

Page 73: MATLAB رد ﯽﺴﯾﻮﻧ ﻪﻣﺎﻧﺮﺑresearch.iaun.ac.ir/pd/karimianerfan/pdfs/UploadFile_5005.pdfSlide deck by Dr. Greg Reese Miami University MATLAB An Introduction With

6.6 THE break AND continue COMMANDS

:continueدستور

) whileو for(داخل یک حلقه continueاز براي متوقف کردن تکرار جاري و رفتن به دور بعدي

تکرار استفاده کنیدcontinue معموال قسمتی از یک جمله شرطی

به آن میرسد، بقیه MATLABزمانی که . استحلقه رفته و یک endدستورات حلقه را اجرا نمیکند، به

دور تکرار جدید را آغاز میکند

73

Page 74: MATLAB رد ﯽﺴﯾﻮﻧ ﻪﻣﺎﻧﺮﺑresearch.iaun.ac.ir/pd/karimianerfan/pdfs/UploadFile_5005.pdfSlide deck by Dr. Greg Reese Miami University MATLAB An Introduction With

6.6 THE break AND continue COMMANDS

مثالfor ii=1:100

if rem( ii, 8 ) == 0

count = 0;

fprintf('ii=%d\n',ii);

continue;

end

% code

% more code

end

74

را صفر countهر هشت تکرار ز کن، شماره تکرار را بنویس، و ا

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

Page 75: MATLAB رد ﯽﺴﯾﻮﻧ ﻪﻣﺎﻧﺮﺑresearch.iaun.ac.ir/pd/karimianerfan/pdfs/UploadFile_5005.pdfSlide deck by Dr. Greg Reese Miami University MATLAB An Introduction With

شماره تمرین هاي منتخب•23•24•26•27•28•30•31•32•33•34•35

•7•9•11•12•14•15•17•18•19•21•22