As you may recall, a while
loop will evaluate all its statements without checking the condition. Similarly a for
loop will run through all of its iterations. The break
keyword tells MATLAB® to exit the loop immediately. It will only terminate one loop (in the case of nested loop, the innermost one it is in) and will normally be protected by an if
statement (otherwise the loop is silly). Here is an example that computes the “trajectory” of 6 but stops if it finds a 17 in it:
s=6; % initialize s to 6
while s~=1 % as long as s is not equal to 1 stay in the loop
if s==17 % if s equals 17
sprintf('Found 17 in the loop!!')
break;
end
if mod(s,2) % the actual "brains" of the iteration
s=s/2;
else
s=3*s+1;
The keyword continue
is similar but different. It avoids the rest of the statements of the inner most loop, but continues in the loop (does not stop like break
).
Here’s example code for a while
loop that uses both break and continue to find the first 100 primes (not very efficiently, but it’s only an example):
n=1;
m=0;
while 1 % this means that unless we use "break", the loop will continue "forever"
n=n+1; % increase n
flag=0; % reset flag
for i=2:ceil(sqrt(n)) % no need to check numbers greater than the square-root of n
if mod(n,i)==0 % means that i divides n exactly
flag = 1 % to know that we found a divisor
break; % no need to remain in the for loop
end
end
if flag
continue % to avoid the next line. It could have also been done
% differently with an "if" statement, but this can be more elegant
end
sprintf('%d is prime!\n',n) % this is quite an interesting command...
% take some time to learn about it
m=m+1; % increment primes count
if m>=100 % if we have enough
break; % stop looking for primes
end
end
Homework 6. The keywords break
and continue
are not “needed’’ per se, but they can make the code more elegant and readable. Rewrite the above code for the first 100 primes without using neither continue
nor break
.
Homework 7. for
loops and while
loops are not inherently different:
- The “input” of a
for
loop is a variable and a vector of values. Recreate the functionality of afor
loop using awhile
loop. - The “input” of a
while
loop is the condition statement. Recreate the functionality of awhile
loop using a for loop. (Hint: when using the notationfor i=1:n
MATLAB does not actually create the vector1:n
. Internally it simply iterates over the values in that vector by incrementingi
until it reachesn
. This means that if you writefor i=1:281474976710655
you’ll get a loop that, on its own, will “never” terminate. Explanation: 281474976710655 is the largest integer that MATLAB can represent internally. It is such a large number that even if every pass through the loop only takes 1 millisecond getting through the loop will take about 10000 years.)