Annotated Ada Reference Manual (Ada 202y Draft 1)Legal Information
Contents   Index   References   Search   Previous   Next 

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;
Paragraphs 3 and 4 were deleted. 

Dynamic Semantics

5/3
{AI05-0264-1} 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;

Wording Changes from Ada 2005

9.a/3
{AI05-0147-1} Moved definition of condition to 4.5.7 in order to eliminate a forward reference. 

Contents   Index   References   Search   Previous   Next 
Ada-Europe Ada 2005 and 2012 Editions sponsored in part by Ada-Europe