Programming in JuliaConditionals
Consider a simple computational task performed by commonplace software, like highlighting the rows in a spreadsheet which have a value larger than 10 in the third column. We need a new programming language feature to do this, because we need to conditionally execute code (namely, the code which highlights a row) based on the if
statements for this purpose.
Conditionals
We can use an if
statement to specify different blocks to be executed depending on the value of a boolean expression. For example, the following function calculates the sign of the input value x
.
function sgn(x)
if x > 0
return +1
elseif x == 0
return 0
else
return -1
end
end
sgn(-5)
Conditional expressions can be written using ternary conditional «condition» ? «truevalue» : «falsevalue»
. For example, the following version of the sgn
function returns the same values as the one above except when x == 0
.
sgn(x) = x > 0 ? +1 : -1
sgn(-5)
Exercises
Exercise
Can the else
part of an if
statement be omitted?
x = 0.5
if x < 0
print("x is negative")
elseif x < 1
print("x is between 0 and 1")
end
Exercise
Write a function called my_abs
which computes the absolute value of its input.
function my_abs(x)
# add code here
end
using Test
@test my_abs(-3) == 3
@test my_abs(5.0) == 5.0
@test my_abs(0.0) == 0.0
Solution. We use a single if-else expression:
function my_abs(x)
if x ≥ 0
x
else
-x
end
end
Exercise
Write a function which returns the quadrant number (1, 2, 3, or 4) in which the point (x,y)
is located. Recall that the quadrants are numbered counter-clockwise: the northeast quadrant is quadrant 1, the northwest quadrant is 2, and so on. For convenience, you may assume that both x
and y
are nonzero.
Consider nesting if-else blocks inside of an if-else block.
function quadrant(x,y)
# add code here
end
using Test
@test quadrant(1.0, 2.0) == 1
@test quadrant(-13.0, -2) == 3
@test quadrant(4, -3) == 4
@test quadrant(-2, 6) == 2
Solution. Here's an example solution:
function quadrant(x,y)
if x > 0
if y > 0
1
else
4
end
else
if y > 0
2
else
3
end
end
end