INC151 Electrical Engineering Software Practice Decision making: Flow Control 1 In MATLAB, 5 control statements are For loop While loop If-else-end construction Switch case construction Break statement 2 For Loops For loop is used to repeat statements a specific number of times. The general format is for variable = expression statement ... statement end >> for i=1:1:5 disp('I like MATLAB') end 3 For Loops More Examples >>sum=0; for i=0:1:10 sum=sum+i; end >>for n=1:10 x(n)=sin(n*2*pi/10); end 4 >> n = 5; for i=1:n fprintf('%6d %8.4f\n',i,sqrt(i)); end >> fprintf(' a (rad) d (deg) sin(a) cos(a)\n') for a=0:pi/6:pi d = a*180/pi; % convert from radian to degrees fprintf('%8.3f %8.1f %9.4f %9.4f\n',a,d,sin(a),cos(a)); end 5 Exercise 1 Create forloopexercise.m contained for loops to calculate the sum and average value of 5 inputs [15 mins] Example >> forloopexersice Enter input 1=10 Enter input 2=20 Enter input 3=30 Enter input 4=40 Enter input 5=50 The sum is 150.00 and average value is 30.00 6 Exercise 2 Write a for loop to duplicate each element of the vector. Save with the name forloopexercise2.m. [10 mins] Example >> A=[1 3 2 4]; >> forloopexercise2 1 1 3 3 2 2 4 4 7 While Loops While loop is used when number of iteration is not known beforehand. The general format is while expression statement ... statement end If expression is TRUE, statements will be executed. >> i=1; while i<10 i=i+1; disp(i) end 8 While Loops More examples 9 Review: Relational and Logical Operator 10 Elementwise vs Expression Logical operations, with short-circuiting capability Syntax expr1 && expr2 expr1 || expr2 represents a logical AND and OR operation that employs short-circuiting behavior. With short-circuiting, the second operand expr1 is evaluated only when the result is not fully determined by the first operand expr1. For example, if A = 0, then the following statement evaluates to false, regardless of the value of B, so MATLAB does not evaluate B: i.e. while( (cont=='Y') || (cont=='y') ) Elementwise(Bitwise) >>u = [0 0 1 1 0 1]; >>v = [0 1 1 0 0 1]; >>u | v ans = 0 1 1 1 0 1 11 Conditional Expression x=10; y=20; disp(x<y); disp(x<= 10); disp(x == y); disp((0 < x) & (y < 30)); disp((x > 10) | (y > 100)); disp(~(x > 10)); area=[ 1 4 9 16 25 36 ]; perimeter=[ 4 8 12 16 20 24 ]; disp(area < perimeter); % displays % displays % displays % displays % displays % displays 1 1 0 1 0 1 % displays 1 1 1 0 0 0 12 Exercise 3 Create a while loop M-file(lift.m) used to give a warning message if the total weight of persons in the lift is overweighed(>500kg) as shown in the example [15 mins] Example. >>please enter the next person weight(kg)=75 please enter the next person weight(kg)=70 please enter the next person weight(kg)=85 please enter the next person weight(kg)=52 please enter the next person weight(kg)=100 please enter the next person weight(kg)=60 please enter the next person weight(kg)=40 please enter the next person weight(kg)=65 Buzzer sound!! Lift is overweight now !!!! people in lift=7 total weight=482 13 Exercise 4 Create a while loop M-file(input1to10.m) used to ask the user to input the number between 1 and 10 as shown in the example [15 mins] Example. >>Please Enter a Number between 1 and 10 (1-10)20 Incorrect input, please try again. Enter a Number between 1 and 10 (1-10)9 OK 14 Exercise 5(String Comparison) Create a while loop M-file(enterSIunit10.m) used to check the matching of ‘SI’ or ‘si’ string entering from the user as shown in the example [15 mins] Example. >>enter unit=SSS try again enter unit=SI ok. You enter the correct SI unit >>enter unit=gu try again enter unit=metric try again enter unit=si ok. You enter the correct SI unit Hint . Try strcmp, strcmpi 15 Converting for to while loop for x = 1:2:30 disp(x) end %%%%%%%%%%%%%%%%%% x = 1; % STEP 1 while(x<=30) % STEP 2 disp(x) x = x + 2; % STEP 3 end 16 If-else-end Conditionally execute statements The general format is if expression statement else if expression statement else statement end end Remarks else if, with a space between the else and the if, differs from elseif, with no space. The former introduces a new, nested if, which must have a matching end. The latter is used in a linear sequence of conditional statements with only one terminating end. 17 Examples >>temp=input('enter the measured temperature:'); if temp<37 disp('normal condition') else disp('catch a fever') end >>attendance=input('enter the attendance:'); average_grade=input('enter the average_grade:'); if ((attendance>=0.9) & (average_grade>50)) disp('passed') else disp(‘failed') end 18 Examples >>value = input('Input value (0-100): '); if value < 50 disp (' You got F'); elseif 50 <= value & value < 60 disp (' You got D'); elseif 60 <= value & value < 75 disp (' You got C'); elseif 75 <= value & value < 90 disp (' You got B'); else disp ('You got A'); end 19 Switch case Switch compares the input expression to each case value. Once the match is found it executes the associate statements. The general format is switch switch_expression case(case1_expression) statements case(case2_expression) statements ... … otherwise statements end Remarks if/else is fine when only a few options are present. When a large number of options are possible, it is customary to use switch construction instead. The switch expression can be a number or a string. 20 Switch case -Calling function >>x=30; %30 centimeter >>units='feet‘; >>switch1 %function name 21 Exercise 6 Use MATLAB to create a game called “Guess the number”. The game will ask the player to guess the number between 0-10. The dummy(answer) number is generated randomly(using rand round command). If player failed 3 times, the game is over. After game over, the game must ask the player whether he/she want to play again. See the example for details. [30 mins] Example >>mygame Guess a number(0-10):5 Guess a number(0-10):7 Guess a number(0-10):2 You failed, Try again(Y/N)? % player enter ’Y’ if ‘N’ quit a game Guess a number(0-10):9 Yes, you got it!!! 22 End 23