-- A guessing game -- Demonstrates some if and case statements -- Shows if, if-else, if,elsif,else with ada.text_io; use ada.text_io; with ada.integer_text_io; use ada.integer_text_io; procedure if_and_case is value_to_guess: constant := 23; n: Integer; guesses: Natural; got_it: Boolean; begin guesses := 0; loop put("Enter an integer: "); get(n); guesses := guesses + 1; if n <= 0 then put_line("You think outside the box - I like that!"); end if; -- End if required if abs n < 1000 then put_line("You like to think small!!"); else put_line("You like to think big!!"); end if; if n < value_to_guess then put_line("Too small."); put_line("You need to think bigger!."); elsif n > value_to_guess then put_line("Too large."); put_line("Scale it back!!."); else -- else optional put_line("You got it!"); got_it := true; end if; exit when got_it; end loop; case guesses is when 0 => put_line("Oh no, something's wrong!"); -- No break! when 1 => put_line("Wow! You got it first time!"); when 2 | 4 | 6 | 8 | 10 => put_line("Wow! Only a few guesses!"); put_line("You seem quite even tempered!"); when 3 | 5 | 7 | 9 => put_line("Wow! Only a few guesses!"); put_line("You must have an odd strategy!"); when 11 .. 20 => put_line("Binary search helps, doesn't it!"); when 21 .. 23 | 25 => put_line("We needed one more example!"); when others => -- Required if not all values accounted for put_line("Remember to use binary search strategy!"); end case; end if_and_case;