-- Demonstrates declaring variables with ranges -- Why: Better demonstrates programmer intent -- Why: errors are caught as early as possible (on assignment, not later use) -- Why: Allows program properties to be proved (discuss later) with ada.integer_text_io; use ada.integer_text_io; with ada.float_text_io; use ada.float_text_io; procedure ranges is i : Integer range -50 .. 100; -- Other values not allowed f : Float range 0.0 .. 100.0; n : Natural range 1 .. Natural'last - 1; p : Positive; begin get(i); -- Error if outside range -50 .. 100 get(f); -- Error if outside range put(i); put(f); i := -100; -- Compiles but gives warning: constraint error at runtime get(n); -- Runtime error possible? p := n + 1; -- Runtime error possible? end ranges;