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