# Octave:2> Conditional Execution

This entry is part 8 of 11 in the series GNU Octave

To control the flow operations in an algorithm, one must be able to verify some conditions and act accordingly. Other-times it might be required to perform same task repeatedly until certain conditions are met. Conditional execution are the backbone of any algorithm. In this article we will look through common conditional and looping expressions. We encourage readers planning to learn Octave/Matlab to try the exercises marked as “Ex“ along with the examples used in this article.

## if Statement

if” statement is the most common conditional execution block in any algorithm. It executes the part of block only the boolean expression provided after “if” is true. Boolean expression after “if “is known as expression. To end the loop, “end” statement is used.

``````>> x = 10;
>> if x>0
disp([num2str(x) ' is positive'])
end
10 is positive
>>``````

if” statement can also be used with an “else” statement and thus some action can be performed in both cases either the condition is true or false.

``````>> x = -2;
>> if x>0
disp([num2str(x) ' is positive'])
else
disp([num2str(x) ' is negative'])
end
-2 is negative
>>``````

It is often the case algorithm night require to verify more than one condition and then do accordingly. in such case “elseif” condition can be used as many time required.

``````>> x= 0;
>> if x>0
disp([num2str(x) " is positive"])
elseif x==0
disp([num2str(x) " is zero"])
else
disp([num2str(x) " is negative"])
end
0 is zero``````

## switch Statement

A “switch” is a series of checks on a variable. outcome of this statement is comparable to “if..elseif..else“, but execution is not. In “switch case” execution happens as per variable, multiple condition checks are not done.

``````>> x = 3;
>> a = 2;
>> b = 5;
>> switch x
case 1 %(if x==1)
res = a+b;
case 2 %(if x==2)
res = a-b;
case 3 %(if x==3)
res = a*b;
otherwise %(if none of the condition are met)
res = a/b;
end
>> res
res =  10``````

## while Statement

while” is a looping statement with boolean condition. “while” loop keeps on executing the same block of code until the condition is true. while loop is preferable when the number of iteration is not known.

``````>> limit = 10;
>> x = 0;
>> while limit > 0
x = x + limit;
limit = limit-1;
end
>> x
x = 55``````

Loop can be terminated in mid also using “break” statement.

``````>> x= 0;
>> while 1
x= x+1;
if x>4
break;
end
disp(num2str(x));
end
1
2
3
4``````

## for Statement

When number of iteration is known and steps are equidistant, for loop is preferable for algorithm to work efficiently.

``````>> for i = 1:10
disp(num2str(i));
end
1
2
3
4
5
6
7
8
9
10
>> for i = 1:2:10
disp(num2str(i));
end
1
3
5
7
9``````

Colon operator is preferred choice in for loop, but not the only way to use a for loop.

```Ex: Iterate for-loop across array of row vector.
Ex: Different statements used here are directly typed in command window. Create scripts for them with help of previous article.
Ex: Create flow diagram for "for" loop.```

After learning the conditional execution along with scripting, try to create a solution for any known problem and verify your script. keep learning, keep growing. Let us know your query and questions in comment section.

#### By Purnendu Kumar

Purnendu is currently working as Senior Project Engineer at QuNu Labs, Indias only Quantum security company. He has submitted his thesis for Masters (MS by research 2014-17) in electrical engineering at IIT Madras for doing his research on “constant fraction discriminator” and “amplitude and rise-time compensated discriminator” for precise time stamping of Resistive Plate Chamber detector signals. In collaboration with India Based Neutrino observatory project, he has participated in design and upgrade of FPGA-based data acquisition system, test-jig development, and discrete front-end design. After completion of his bachelors in Electrical Engineering (Power and Electronics), he was awarded Junior Research Fellowship at Department of Physics and Astro-physics, University of Delhi under same (INO) project. His current interest is in high-speed circuit design, embedded systems, IoT, FPGA implementation and optimization of complex algorithms, experimental high-energy physics, and quantum mechanics.