Conditions and Branching
In the last example we have seen how to use comparisons and to compare things. Now let’s see how to use them. Let’s see how to compare two numbers and print useful output. The notebook for this blog is here https://gitlab.com/data-science-with-julia/code/-/blob/master/if.ipynb.
Take a look at the example below, type it in your Jupyter lab and execute it:
a = 5; b = 3
if a > b
println("a = ", a, " is bigger")
end
if b > a
println("b = ", b, " is bigger")
end
if a == b
println("both numbers are equal")
end
Output:
a = 5 is bigger
It says a = 5 is bigger
, now change the values of a
and b
in a = 5; b = 3
and see what happens. Make one greater than other, make them both equal and see. Now let’s see how it works. The main work horse of the above program is the if
condition. It’s syntax is as follows:
if <some condition>
# Do something here if <some condition> is true
end
it consists of a if
key word, followed by some condition. So in:
if a > b
println("a = ", a, " is bigger")
end
a > b
is the condition. If this condition is true then the code block between if
and end
will get executed. So in if a > b
, a
is 5 and b
is 3 and hence its true, so the statement println("a = ", a, " is bigger")
in:
if a > b
println("a = ", a, " is bigger")
end
gets executed, you get the output a = 5 is bigger
. Now try explaining the other parts of the program to yourself.
Now in the above program the conditions are checked three times, that is first in if a > b
then in if b > a
and then in if a == b
. What if a > b
is true, then its just waste of computing resource to check for other conditions. Is there a programming construct that when one condition passes, all others are ignored? Fortunately yes. Check the program below:
a = 3; b = 5
if a > b
println("a = ", a, " is bigger")
elseif b > a
println("b = ", b, " is bigger")
elseif a == b
println("both numbers are equal")
end
Output:
b = 5 is bigger
In the above program b
is greater than a
, so when it hits if a > b
it fails. Then Julia checks if there is a elseif
keyword. In this case there is. First we have elseif b > a
and b > a
is true. So the statement under the elseif
gets executed and hence println("b = ", b, " is bigger")
gets executed and it prints b = 5 is bigger
.
In the above program, we have another condition check elseif a == b
, in reality either a
or b
should be greater or they must be equal, so in fact this will be hit when both conditions a > b
and b > a
fail, so we could avoid condition check here and assume both numbers are equal and we can write the program as shown:
a = 3; b = 3
if a > b
println("a = ", a, " is bigger")
elseif b > a
println("b = ", b, " is bigger")
else
println("both numbers are equal")
end
Output:
both numbers are equal
Take a look at the above program. Look at the:
else
println("both numbers are equal")
This else
is hit only when all other conditions have failed. So when neither a
or b
is greater, they both must be equal. Hence there is no need of a condition check here. else
always has no condition in it and is executed when all other conditions in if
and elseif
fails.
So since all conditions fail in the above program println("both numbers are equal")
under the else
gets execute and we get both numbers are equal
as output.