Ada Programming/Keywords/for


      Ada Lovelace 1838.jpg


      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 loops

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

      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)
      ↑Jump back a section

      Representation clauses

      Attribute definition clause

      for id'attribute use value;
      

      Where attribute can be any specifiable attribute.

      Enumeration representation clause

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

      Record representation clause

      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)

      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.

      ↑Jump back a section

      Quantified expressions

      This language feature is only available in Ada 2012.

      Universal quantification

      Universal quantification expression:

      (for all var in range => predicate)
      

      Existential quantification

      Existential quantification expression:

      (for some var in range => predicate)
      
      ↑Jump back a section

      References

      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
      ↑Jump back a section
      Last modified on 27 February 2012, at 21:17