-- Demonstrates if and case expressions
-- The expression must be inside parentheses
with ada.text_io; use ada.text_io;
with ada.integer_text_io; use ada.integer_text_io;
procedure if_expression is
n: Natural;
an_even: Natural;
i: Integer;
minus_one__zero_or_one: Natural range -1 .. 1;
begin
-- Read values:
get(n);
get(i);
-- Calculate values:
an_even := (if n mod 2 = 0 then n else n + 1);
-- if n is even then an_even is n.
-- If n is odd then an_even number is n+1
minus_one__zero_or_one :=
(case i is Integer'first .. -1 => -1,
0 => 0,
1 .. Integer'last => -1);
-- Assign minus_one__zero_or_one to -1, 0, or 1
-- depending on whether i is negative, 0, or positive.
-- Of course, there are other ways to do this!
-- Print values"
put_line(n'img & an_even'img);
put_line(i'img & minus_one__zero_or_one'img);
-- Calculate and print in one statement
put(if n mod 2 = 0 then n else n + 1);
-- Demonstrates that parens from put provide parens for if expression
end if_expressionfoo;