-- 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;