3 שיעור - בקרת זרימה פונקציות וכתיבת פונקציות התנייה 1. if, else, elseif, switch, case. פונקציות לולאה 2. for, while, break.logical expressions.3 פונקציות. 4. תרגילי כיתה. 5.
התנייה פונקציות ו- elseif else,if The if statement evaluates a logical expression and executes a group of statements when the expression is true. The optional elseif and else keywords provide for the execution of alternate groups of statements. An keyword, which matches the if, terminates the last group of statements. The groups of statements are delineated by the four keywords no braces or brackets are involved. 2 בקרת זרימה וכתיבת פונציות
ו- elseif else,if הצורה הבסיסית ביותר של if היא: if logical condition statements אם התנאי הלוגי הוא,true אז כל הפקודות עד ה- יבוצעו. הה- לאחר הפקודות יבוצעו ואז אם התנאי הלוגי הוא,false אז הפקודות עד ה- לא. לפקודות שלאחר ה- עובר ישר עת מבוצעות ו- matlab ab else ו- elseif מוסיפות התנייה נוספת. לפקודת elseif אין התנייה לוגית. 3 בקרת זרימה וכתיבת פונציות
ו- - דוגמא elseif else,if A=5; B=3; if A>B disp( A>B ) elseif A<B disp( A<B ) elseif A==B disp( A=B ) else disp( unexpected situation ) 4 בקרת זרימה וכתיבת פונציות
true של ערך 1. if a~=0 disp( a is not zero ); ככל ערך השונה מאפס. מוגדר true,matlab בב- שני הרישומים הבאים שקולים: 2. if a disp( a is not zero ); if התנאיהלג הלוגי של להיות להת יכול כל המטריצה. גם 5 בקרת זרימה וכתיבת פונציות
switch פונקצית פונקצית switch מבצעת פקודות על-סמך ערך של משתנה מחרוזת). המבנה הכללי של פונקצית switch הוא: (סקלר או switch expression case value1 statements1 % executes if the expression is equal to value1 case value2 statements2 % executes if the expression is equal to value2... otherwise statements_otherwise % executes if the expression doesn't match to any case 6 בקרת זרימה וכתיבת פונציות
- switch פונקצית דוגמא switch ( (-1)^n +1) case 0 disp( n is odd ) case 2 disp( n is even ) otherwise disp( this is impossible ) 7 בקרת זרימה וכתיבת פונציות
switch פונקצית מספר תנאים ביטוי לבדוק מספר תנאים בו זמנית, כאשר יכולה switch פונקציה התנאי הוא מערך. לדוגמא: switch a case 1 disp( a is 1 ); case {2,3,4,5,6,7,8,9} disp( a is one of 2,3,4,5,6,7,8,9 9 ); otherwise disp( Otherwise ); 8 בקרת זרימה וכתיבת פונציות
לולאה פונקציות for לולאת מבצעת מספר לל לולאת for פעמים. צורתה הכללית: פקודות מראש קבוע מספר של for i = s:d:f statements לא חייב אפילו מספר לשלם. להיות אינדקס או i שאפשר. כמה עד for להימנע מלולאות מאד מומלץ Matlab היא שפה הפועלת באופו מהיר ויעיל על שימוש בפונקציות סטנדרטיות הפועלות על מטריצות מהירות ההרצה בכמה סדרי גודל. מטריצות. ישפר את 9 בקרת זרימה וכתיבת פונציות
while לולאת לולאת while חוזרת על הפקודות הנמצאות בין פקודת ה- while לבין לל- הופך הלוגי שהתנאי עד פעמים של מוגבל בלתי מספר - ה.true הרישום הכללי של לולאת while הוא: while logical_condition statements ביצוע פקודות בסוף פעם כל הלוגי מחושב בתנאי העמידה אאי- כאשר ה-.statements חשוב לציין כי אם תנאי נעצירה חייב להתקיים מתישהו, אחרת ייתכן לא תיפסק מעצמה. לעולם מצב בו לל הלולאהל או Ctrl+break על לחיצה ע"י מבוצעת סיומה לפני הרצה עצירת.Ctrl+c 10 בקרת זרימה וכתיבת פונציות
- while לולאת דוגמא להגיע למספר,n שלוקח, מספר האיטרציות מציאת הקטן ביותר המזוהה ע"י :matlab eps = 1; n = 0; while (1+eps) > 1 eps = eps/2; n = n + 1; 11 בקרת זרימה וכתיבת פונציות
break פונקצית פונקצת פונקצית break ויוצאת ממנה. בתוך לולאה, מפסיקה את הלולאה אם פקודת break מבוצעת מתוך לולאה הנמצאת יוצאת הה- break אזי פקודת חצונת, חיצונית, לולאה בתוך מחוץ ללואה הפנימית בלבד. אם פקודת break מבוצעת בתוך קובץ m, נעצר. ביצוע הקובץ אזי לולאה, בתוך לא אך 12 בקרת זרימה וכתיבת פונציות
- break פונקצית דוגמא x = randsrc(1000,1,[1:100]); i = 0; while i < 100 i = i + 1; if x(i) > 40 & x(i) < 50 break else y(i) = x(i); 13 בקרת זרימה וכתיבת פונציות
Logical expressions 1) או.(0 בעלי ביטויים ערך של true או false לדוגמא: A==B A~=B A<B A>B תוצאות הביטויים: ו- B הם סקלרים התוצאה היא סקלר. ו- B הם מטריצות התוצאה היא מטריצה מאותו של A ו- B. גודל אם A אם A 14 בקרת זרימה וכתיבת פונציות
- דוגמאות Logical expressions A = [6 1 9 3 8]; B=[36928]; C = 3; C >= 0.5 1 A==B [0 0101] 0 1] A < B [0 1 0 0 0] A>=6 [1 0101] 0 1] 15 בקרת זרימה וכתיבת פונציות
Logical operators AND : && OR : X && Y X Y logical 2 רק ליישמם ניתן.(expressions על משתנים סקלרים (או 16 בקרת זרימה וכתיבת פונציות
find הפונקציה 17 בקרת זרימה וכתיבת פונציות
פונקציות מבוא The MATLAB product provides a powerful programming language, as well as an interactive computational environment. Files that contain code in the MATLAB language are called M-files. You create M-files using a text editor, then use them as you would any other MATLAB function or command. 18 בקרת זרימה וכתיבת פונציות
מבוא קבצי - m כאשר מעוניינים לבצע סדרת פעולות ארוכה לא "נוח " לעבוד בחלון הפקודות של ה-.MATLAB במקרה זה מומלץ לכתוב את תוכנית ולשמור אותה כקובץ עם סיומת m.*. עריכתם והרצתם מבוצעת דרך חלון ה-.Editor :m קבצי 2 סוגי קיימים קלט או מחזירים פלט. מקבלים script אינם פועלים על המידע הנמצא במרחב העבודה. שקול להקלדת הפקודות במרחב העבודה. פונקציה יכולים לקבל קלט או להחזיר פלט. כל המשתנים הפנימיים הם מקומיים לפונקציה הנתונה..1.2 19 בקרת זרימה וכתיבת פונציות
פונקציות הגדרת פורמט: function [x,y,w...] = function_ name(a,b,c );, כאשר: לפונקציה. - משתני הכניסה - משתנים מקומיים שהם תוצאות ביצוע הפונקציה. a b c x y w שמות המשתנים בפונקציה אינם חייבים להיות זהים לשמות המשתנים שבאמצעותם קוראים לפונקציה. 20 בקרת זרימה וכתיבת פונציות
- פונקציות הגדרת דוגמא היתר לחישוב הפונקצה הפונקציה האלמנטרת האלמנטרית ולחישוב הזוויות בין הצלע ובין היתר: במשולש ישר זוות זווית function [h,angle]=pyt(a,b) %thi this function calculates l hypotenuses and angle % a and b - cathetus length h=sqrt(a.^2+b.^2); angle=atan2(b,a); 21 בקרת זרימה וכתיבת פונציות
לפונקציות קריאה קריאה לפונקציה מהתוכנית הראשית מתבצעת באופן הבא:» d=3;» e=4;» [p,q]=pyt(d,e); p= 5 q= 0.9273; שים-לב: משתנים של פונקצית pyt ו- angle ) (h לא נשארו בזיכרון. 22 בקרת זרימה וכתיבת פונציות
משתנים מקומיים וגלובאליים : משתנים משתנםמקומם מקומיים וגלובליים: local global משתנים בפונקציות מטלב הם משתנים לוקליים אפשר להשתמש בהם עבור פונקציות אחרות. ואי- פקודת global מאפשרת להשתמש במשתנים - המשתנם המשתנים ב את ולראות בפונקציות אחרות.workspace 23 בקרת זרימה וכתיבת פונציות
- משתנים מקומיים וגלובאליים : דוגמא function tic1 % tic1 simply stores clock in a global variable global TICTOC TICTOC=clock function t= toc1 % toc1 returns the time in seconds between the time % now (clock) and the time stored in TICTOC global TICTOC t=etime(clock,tictoc); >> whos global >> tic1 >> t=toc1 Name Size Bytes Class t = TICTOC 1x6 48 double array (global) 7.0320 Grand total is 6 elements using 48 bytes 24 בקרת זרימה וכתיבת פונציות
כיתה תרגילי של c ו- b a, מקבלת את המקדמים poly 1. הפונקציה המשוואה הריבועית ואת הווקטור x, ומחזירה את תוצאת המשוואה. function p = poly(x,a,b,c) p = a*x ax. ^2+b*x+c; 25 בקרת זרימה וכתיבת פונציות
כיתה תרגילי המשך - פונקציה שמקבלת מטריצה ומחזירה מטריצה באותו הגודל האברם האיברים הגדולם הגדולים עבור אך למטריצת הקלט שאברה שאיבריה זהם זהים מ- 0.5, תוסיף להם את הערך 99..2 A = rand(3,3); function B = big2bigger(a) [m,n] = size(a); for i=1:n for j=1:m if A(i,j) > 0.5 A(i,j) = A(i,j) + 99; 26 בקרת זרימה וכתיבת פונציות
כיתה תרגילי המשך - הפונקציה area_polygon מצולע שווה צלעות, A. מחשבת של השטח את ומחזיקה.3 נתוני הקלט של הפונקציה הם אורך הצלע, a, ומספר הצלעות אזי,3 הוא הצלעות מספר אם (לדוגמא,,n המצולע, של מדובר במשולש שווה צלעות, אם מספר הצלעות הוא 4 אזי מדובר במרובע וכו'). 27 בקרת זרימה וכתיבת פונציות
פתרון לל- 3 המשך, תרגילי כיתה - functiona = area_polygon(n,a) % Calculates the area of a polygon with n sides of length a. if nargin<2 disp('not enough input arguments') else if n~=round(n) n<3 disp('number of sides must be an integer and greater than 2'); if a<=0 disp('sides length must be positive'); else A=0.25*n*a^2*cot(pi/n); 28 בקרת זרימה וכתיבת פונציות