5.3 If Statements
1
[An if_statement selects
for execution at most one of the enclosed sequences_of_statements,
depending on the (truth) value of one or more corresponding conditions.]
Syntax
2
if_statement ::=
if condition then
sequence_of_statements
{
elsif condition then
sequence_of_statements}
[
else
sequence_of_statements]
end if;
3
condition ::= boolean_expression
Name Resolution Rules
4
{expected type (condition)
[partial]} A
condition
is expected to be of any boolean type.
Dynamic Semantics
5
{execution (if_statement)
[partial]} For the execution of an
if_statement,
the
condition specified after
if, and
any
conditions specified after
elsif,
are evaluated in succession (treating a final
else as
elsif
True
then), until one evaluates to True or all
conditions
are evaluated and yield False. If a
condition
evaluates to True, then the corresponding
sequence_of_statements
is executed; otherwise none of them is executed.
5.a
Ramification: The part about all evaluating
to False can't happen if there is an else, since that is herein
considered equivalent to elsif True then.
Examples
6
Examples of if statements:
7
if Month = December and Day = 31 then
Month := January;
Day := 1;
Year := Year + 1;
end if;
8
if Line_Too_Short then
raise Layout_Error;
elsif Line_Full then
New_Line;
Put(Item);
else
Put(Item);
end if;
9
if My_Car.Owner.Vehicle /= My_Car
then --
see 3.10.1
Report ("Incorrect data");
end if;