ME 102

advertisement
CSE123 - Lecture 4
Structured ProgrammingLoops
Sequential and Structured Programming
Common mistakes,
Do not use turkish letters in variable names
Do not use turkish letters and blanks in m-file names
Do not use two relational operators in one expression, divide the expression and
then combine it using logical operators such as and, or or xor etc…
0<x<10
incorrect
x>0 & x<10
correct
Sequential and Structured Programming
Initialization
Initialization
Initialization
Input
Initialization
Input
Repeat the operation
3 times…
Calculation 1
Calculation 2
Calculation 1
Calculation 3
Results
Results
The FOR loop
for loop_variable= start:step:finish
….
Statements
….
end
Basic rules for “for” loop
• Default value for step: 1
• The step can be negative
• If start = finish, the loop is executed
once.
• Usually NOT a good idea to change
the loop_variable inside the loop.
INCREMENT
for
loop_variable loop_variable= loop_variable>finish
start:step:finish
loop_variable<=finish
Statements
The FOR loop
Example: testloop.m
% program to test a for
loop
% program to test a for
loop
% program to test a for
loop
for i=1:10
disp(i)
end
for i=1:10
disp(i*0.2)
end
for i=1:0.1:2
disp(i*5)
end
>> testloop
1
2
3
.
.
10
>> testloop
0.2
0.4
0.6
…
2.0
>> testloop
5
5.5
6
..
9.5
10
>> disp(i)
>> disp(i)
10
10
>> disp(i)
2
The FOR loop
Example :
Assume we have series of natural numbers
up to 100 and want to find the summation of
these numbers.
•Use a for loop, using the loop variable as
the index
Loop variable: i
•At every step of the loop, we want to add
the value corresponding to the index.
Result variable:
% program to test a for loop
sum=0;
for i=1:100
sum=sum+i;
end
sum
Summation is done by addition of 1st
elements, obtain partial result, add 2nd
element, obtain partial result, etc….
sum=sum + next value
disp(sum)
disp([‘result=‘,num2str(sum)])
The FOR loop
Applications and uses of “for” loops
Use loop_variable as a counter
Example :
. ……
.

We want to calculate the
100 times
•Use a for loop, using the loop variable as the index
of the vector.
Loop variable:
j
•At every step of the loop, we want to add the value
corresponding to the index.
Result variable:
S
S=pi;
for j=1:100
S=sqrt(S)
S
•Operation done by taking the square root of
the preceding result, 100 times
S=
% program to test a for loop
end
Initialization
The FOR loop
Background tests and operations
Add step to
INCREMENT
loop_variable
for
loop_variable=
start:step:finish
IF loop_variable<=finish
Statements
IF loop_variable>finish
Assume 1000 values
We want to stop the loop when we obtain
enough preicison in the calculation
What will happen if the precision is
obtained after 10 calculations?
The FOR loop will not stop until the
1000 .
The WHILE loop
while logical_expression
Statements
end
While
logical_expression
IF logical_expression
Basic rules for “while” loop
Statements
• Usually necessary to create your
loop_ variable or counter.
• NECESSARY to change the
loop_variable inside the loop.
IF logical_expression
TRUE
FALSE
The WHILE loop
Example: exloop1.m
% program test
% program to test while loop
i=0;
for i=1:10
disp(i)
end
while i<10
Had to
create a
counter
i=i+1;
disp(i)
end
>> exloop1
1
2
3
4
5
6
7
8
9
10
>> disp(i)
10
The WHILE loop
Example: exloop2.m
% program to test while loop
x=10;
while x>1
x=x-0.5;
y=log(x);
disp([x,y])
end
>> exloop2
9.5000
9.0000
8.5000
8.0000
7.5000
7.0000
6.5000
6.0000
5.5000
5.0000
4.5000
4.0000
3.5000
3.0000
2.5000
2.0000
1.5000
1
2.2513
2.1972
2.1401
2.0794
2.0149
1.9459
1.8718
1.7918
1.7047
1.6094
1.5041
1.3863
1.2528
1.0986
0.9163
0.6931
0.4055
0
The WHILE loop
Example: exloop3.m
>> exloop3
% BAD while loop
x=1;
while x>=0
x=x+0.5;
y=sin(x);
This is an Infinite loop !!!!
Need to stop the script manually !!!
CTRL C
end
>>
disp(‘END of program’)
The WHILE loop
Use while loop when the number of operation is unknown
Example : exloop4.m
Calculate the sum of manually entered
numbers. Entering 0 or a negative number
stops the loop and display the average.
•Need input statement:
variable:
A
•Use the length of A in the logical_expression
A>0
i=i+1
•Inside the loop:
•Increment a counter to count how many
value we entered
•Add the value A to the sum S
S=S+A
% program to test a while loop
A=pi;
S=0;
i=0;
while A>0
A=input('Value for A:');
i=i+1;
S=S+A;
end
N=i-1
disp(S/N)
>> testloop
>> testloop
Value for A:1
Value for A:5
Value for A:8
Value for A:0
4.6667
Value for A:2
Value for A:2
Value for A:2
Value for A:2
Value for A:0
2
The WHILE loop
Use logical_expression for convergence limit
Example 5:
Series convergence:
N

i 1
1
i2
π2/6
Want to see how many terms you need to obtain
an error of 3x10-6.
•Need to define and use an error variable.
err
•Need to be part of the logical expression
•Need to be updated during loop
% Convergence script
S=0;
i=0;
err=10;
while err>3e-6
i=i+1;
S=S+ 1/i^2;
err=abs(S-pi^2/6);
end
•At every step of the loop, we want to
•Verify if test is true
(err>3e-6)
•Increment counter
i=i+1
•Add the new term to the sum
S=S+ 1/i^2
disp(['N=',num2str(i)])
>> Testloop
N=333333
The WHILE loop
Use logical_expression for convergence limit
% Convergence script
S=0;
i=0;
err=10;
while err>3e-6
i=i+1;
S=S+ 1/i^2;
err=abs(S-pi^2/6);
A(i)=err;
end
disp(['N=',num2str(i)])
>> Testloop
N=333333
Nested loops and combination
Using nested loops
% program to test nested loops
Example: exloop6.m
Calculate the sum of factorials up to 20
1! 2! 3! 4! ....  20!
•Need a for loop for sums
i
•Need a for loop for factorials
j
•Calculate the factorial of element j
•Do the sum on all elements
F=F*j
S=S+F
S=0;
for i=1:20
F=1;
for j=1:i
F=F*j;
end
S=S+F
end
disp(S)
The “BREAK” statement
BREAK
% BAD while loop
•Break terminates the execution
of a for or while loop. Statements
in the loop that appear after the
break statement, are not
executed.
x=1;
•In nested loops, break exits only
from the loop in which it occurs.
Control passes to the statement
that follows the end of that loop.
while x>=0
x=x+0.5;
y=sin(x);
if x>10000
break
end
end
The “CONTINUE” statement
CONTINUE
• Continue passes control to
the next iteration of the for or
while loop in which it appears,
skipping any remaining
statements in the body of the
loop.
% Problem of division by 0
x=1;
for i= -10:10
if x==0
continue
end
y=1/x;
end
The FOR loop
Example :
Write a Matlab script tp calculate following expression for an enetered x
value
1
1
1
1
1
1
1
1
x
The FOR loop
Example :
Write a Matlab script tp calculate mean and standard deviation of an input data
set containing an arbitrary number of input values. Check to see if there is
enough input data (N>1) to eliminate division by zero.
1
x
N
N
x
i 1
N
s
i
N
N  x  ( x i ) 2
i 1
2
i
i 1
N ( N  1)
Break
Example :
Run the following loops and report the result
for ii=1:3
1 * 1 = 1
for jj=1:3
if jj==3
break;
end
Product=ii*jj;
fprintf(‘%d * %d = %d \n’,ii,jj,product);
end
fprintf(‘end of inner loop\n’);
end
fprintf(‘end of outer loop\n’);
1 * 2 = 2
end of inner loop
2 * 1 = 2
2 * 2 = 4
end of inner loop
3 * 1 = 3
3 * 2 = 6
end of inner loop
end of outer loop
Download