Ada Programming/Keywords/for


float


This keyword is used in:

  • For loops
  • Representation clauses:
    • attribute definition clause
    • enumeration representation clause
    • record representation clause
    • at clause (obsolescent)
  • Quantified expressions
    • Universal quantification
    • Existential quantification

Nowadays representation clauses are formally called aspect clauses in the last versions of the Reference Manual due to some technicalities, although representation clauses is the name far more extended among Ada programmers. As a historical note, they were known as representation specifications (rep specs) in pre-Ada 83 proposals.[1]

For loopsEdit

[loop name :]  for var  in [  reverse ] [type  range] range  loop
   ...
 end  loop [loop name];

Where range can be:

  • explicit range like "low .. high",
  • range of scalar or array type: type'Range (or type'Range(n) for multidimensional array types)
  • range of an array: array'Range (or array'Range(n) for multidimensional arrays)

Keyword in may also be followed by an iterable. This generalizes iteration by including types that have one of the interfaces defined in Ada.Iterator_Interfaces. This language feature is only available in Ada 2012.

Another generalized form of looping iteration uses the keyword of in place of in. The loop parameter is then referring to components of arrays or of iterable container types, directly. This language feature is only available in Ada 2012.

[loop name :]  for var [: type]  of [  reverse ] iterable  loop
   ...
 end  loop [loop name];

Representation clausesEdit

Attribute definition clauseEdit

 for id'attribute  use value;

Where attribute can be any specifiable attribute.

Enumeration representation clauseEdit

 for enumeration type  use (enum1 => value1, enum2 => value2, ...);

Record representation clauseEdit

 for record type  use
   record
     component1  at offset  range first bit 1 .. last bit 1;
     component2  at offset  range first bit 2 .. last bit 2;
     ...
   end  record;

At clause (obsolescent)Edit

At clauses are obsolescent since Ada 95:

 for id  use  at address;

where address is of the type System.Address.

An at clause is equivalent to " for id'Address use address;". Since Ada 95 this is the preferred method.

Quantified expressionsEdit

This language feature is only available in Ada 2012.

Quantified expressions are Boolean expressions. They are either True or False, or propagate any exception raised during evaluation.

Universal quantificationEdit

Universal quantification expression:

( for  all var  in range => predicate)
( for  all var  of iterable => predicate)

Both forms evaluate to True when all of the values in range (of iterable) make the predicate yield True. Evaluation of predicate stops when either all values of loop parameter var have been exhausted, or when evaluation for some value yields False (short circuit).

Existential quantificationEdit

Existential quantification expression:

( for  some var  in range => predicate)
( for  some var  of iterable => predicate)

Both forms evaluate to True when some of the values in range (of iterable) makes the predicate yield True. Evaluation of predicate stops when either all values of loop parameter var have been exhausted, or when evaluation for some value yields True (short circuit).

See alsoEdit

WikibookEdit

Ada Reference ManualEdit

Ada 83Edit

Ada Quality and Style GuideEdit

ReferencesEdit

  1. John Barnes (2003-03-25). High-Integrity Software — The SPARK Approach to Safety and Security. Addison-Wesley. ISBN 0-321-13616-0. http://www.praxis-his.com/sparkada/sparkbook.asp. Retrieved 2008-06-06. "Representation clauses are now strictly known as aspect clauses — the name was changed in the 2000 Corrigendum for Ada 95 for subtle reasons that need not concern us; Ada historians might recall that they were known as representation specifications (rep specs) prior to the ANSI standardization in 1983. These various terminologies are all in use and the reader will encounter them in the literature. (pp.212–213)" 


Ada Keywords
abort else new return
abs elsif not reverse
abstract (Ada 95) end null
accept entry select
access exception of separate
aliased (Ada 95) exit or some (Ada 2012)
all others subtype
and for out synchronized (Ada 2005)
array function overriding (Ada 2005)
at tagged (Ada 95)
generic package task
begin goto pragma terminate
body private then
if procedure type
case in protected (Ada 95)
constant interface (Ada 2005) until (Ada 95)
is raise use
declare range
delay limited record when
delta loop rem while
digits renames with
do mod requeue (Ada 95) xor