Programación en Ada/Unidades predefinidas/Standard

← Cláusula with Paquete Standard Declaraciones →


Paquete Standard

editar

La unidad Standard es un paquete especial que contiene las declaraciones de todos los tipos predefinidos tales como Integer o Boolean.

En términos de compilación es como si todas las unidades tuviesen escrito antes de nada:

with Standard; use Standard;

También posee un paquete anidado llamado ASCII, que contiene las constantes que definen los caracteres tales como CR (retorno de carro) o LF (avance de línea). Escribiendo use ASCII; se pueden referenciar simplemente como CR. Sin embargo el estándar de Ada 95 no nos recomienda usar el paquete ASCII (caracteres de 7 bits), porque éste queda obsoleto tras la definición del paquete Ada.Characters.Latin_1, que define el juego completo de caracteres ISO Latín 1 de 8 bits.

Especificación

editar

La definición del paquete Standard según el manual de referencia de Ada:

 package Standard is
   pragma Pure(Standard);
 
   type Boolean is (False, True);
 
   -- The predefined relational operators for this type are as follows:
 
   -- function "="   (Left, Right : Boolean'Base) return Boolean;
   -- function "/="  (Left, Right : Boolean'Base) return Boolean;
   -- function "<"   (Left, Right : Boolean'Base) return Boolean;
   -- function "<="  (Left, Right : Boolean'Base) return Boolean;
   -- function ">"   (Left, Right : Boolean'Base) return Boolean;
   -- function ">="  (Left, Right : Boolean'Base) return Boolean;
 
   -- The predefined logical operators and the predefined logical
   -- negation operator are as follows:
 
   -- function "and" (Left, Right : Boolean'Base) return Boolean;
   -- function "or"  (Left, Right : Boolean'Base) return Boolean;
   -- function "xor" (Left, Right : Boolean'Base) return Boolean;
 
   -- function "not" (Right : Boolean'Base) return Boolean;
 
   -- The integer type root_integer is predefined.
   -- The corresponding universal type is universal_integer.
 
   type Integer is range ''implementation-defined'';
 
   subtype Natural  is Integer range 0 .. Integer'Last;
   subtype Positive is Integer range 1 .. Integer'Last;
 
   -- The predefined operators for type Integer are as follows:
 
   -- function "="  (Left, Right : Integer'Base) return Boolean;
   -- function "/=" (Left, Right : Integer'Base) return Boolean;
   -- function "<"  (Left, Right : Integer'Base) return Boolean;
   -- function "<=" (Left, Right : Integer'Base) return Boolean;
   -- function ">"  (Left, Right : Integer'Base) return Boolean;
   -- function ">=" (Left, Right : Integer'Base) return Boolean;
 
   -- function "+"   (Right : Integer'Base) return Integer'Base;
   -- function "-"   (Right : Integer'Base) return Integer'Base;
   -- function "abs" (Right : Integer'Base) return Integer'Base;
 
   -- function "+"   (Left, Right : Integer'Base) return Integer'Base;
   -- function "-"   (Left, Right : Integer'Base) return Integer'Base;
   -- function "*"   (Left, Right : Integer'Base) return Integer'Base;
   -- function "/"   (Left, Right : Integer'Base) return Integer'Base;
   -- function "rem" (Left, Right : Integer'Base) return Integer'Base;
   -- function "mod" (Left, Right : Integer'Base) return Integer'Base;
 
   -- function "**"  (Left : Integer'Base; Right : Natural)
   --                  return Integer'Base;
 
   -- The specification of each operator for the type
   -- root_integer, or for any additional predefined integer
   -- type, is obtained by replacing Integer by the name of the type
   -- in the specification of the corresponding operator of the type
   -- Integer. The right operand of the exponentiation operator
   -- remains as subtype Natural.
 
   -- The floating point type root_real is predefined.
   -- The corresponding universal type is universal_real.
 
   type Float is digits ''implementation-defined'';
 
   -- The predefined operators for this type are as follows:
 
   -- function "="   (Left, Right : Float) return Boolean;
   -- function "/="  (Left, Right : Float) return Boolean;
   -- function "<"   (Left, Right : Float) return Boolean;
   -- function "<="  (Left, Right : Float) return Boolean;
   -- function ">"   (Left, Right : Float) return Boolean;
   -- function ">="  (Left, Right : Float) return Boolean;
 
   -- function "+"   (Right : Float) return Float;
   -- function "-"   (Right : Float) return Float;
   -- function "abs" (Right : Float) return Float;
 
   -- function "+"   (Left, Right : Float) return Float;
   -- function "-"   (Left, Right : Float) return Float;
   -- function "*"   (Left, Right : Float) return Float;
   -- function "/"   (Left, Right : Float) return Float;
 
   -- function "**"  (Left : Float; Right : Integer'Base) return Float;
 
   -- The specification of each operator for the type root_real, or for
   -- any additional predefined floating point type, is obtained by
   -- replacing Float by the name of the type in the specification of the
   -- corresponding operator of the type Float.
 
   -- In addition, the following operators are predefined for the root
   -- numeric types:
 
   function "*" (Left : root_integer; Right : root_real)
     return root_real;
 
   function "*" (Left : root_real;    Right : root_integer)
     return root_real;
 
   function "/" (Left : root_real;    Right : root_integer)
     return root_real;
 
   -- The type universal_fixed is predefined.
   -- The only multiplying operators defined between
   -- fixed point types are
 
   function "*" (Left : universal_fixed; Right : universal_fixed)
     return universal_fixed;
 
   function "/" (Left : universal_fixed; Right : universal_fixed)
     return universal_fixed;
 
      -- The declaration of type Character is based on the standard ISO 8859-1 character set.
 
      -- There are no character literals corresponding to the positions for control characters.
      -- They are indicated in italics in this definition. See 3.5.2.
 
   type Character is
     (nul,     soh,   stx,    etx,      eot,   enq,    ack,   bel,   --0 (16#00#) .. 7 (16#07#)
      bs,      ht,    lf,     vt,       ff,    cr,     so,    si,    --8 (16#08#) .. 15 (16#0F#)
 
      dle,     dc1,   dc2,    dc3,      dc4,   nak,    syn,   etb,   --16 (16#10#) .. 23 (16#17#)
      can,     em,    sub,    esc,      fs,    gs,     rs,    us,    --24 (16#18#) .. 31 (16#1F#)
 
      ' ',     '!',   '"',    '#',      '$',   '%',    '&',   ''',   --32 (16#20#) .. 39 (16#27#) "
      '(',     ')',   '*',    '+',      ',',   '-',    '.',   '/',   --40 (16#28#) .. 47 (16#2F#)
 
      '0',     '1',   '2',    '3',      '4',   '5',    '6',   '7',   --48 (16#30#) .. 55 (16#37#)
      '8',     '9',   ':',    ';',      '<',   '=',    '>',   '?',   --56 (16#38#) .. 63 (16#3F#)
 
      '@',     'A',   'B',    'C',      'D',   'E',    'F',   'G',   --64 (16#40#) .. 71 (16#47#)
      'H',     'I',   'J',    'K',      'L',   'M',    'N',   'O',   --72 (16#48#) .. 79 (16#4F#)
 
      'P',     'Q',   'R',    'S',      'T',   'U',    'V',   'W',   --80 (16#50#) .. 87 (16#57#)
      'X',     'Y',   'Z',    '[',      '\',   ']',    '^',   '_',   --88 (16#58#) .. 95 (16#5F#)
 
      '`',     'a',   'b',    'c',      'd',   'e',    'f',   'g',   --96 (16#60#) .. 103 (16#67#)
      'h',     'i',   'j',    'k',      'l',   'm',    'n',   'o',   --104 (16#68#) .. 111 (16#6F#)
 
      'p',     'q',   'r',    's',      't',   'u',    'v',   'w',   --112 (16#70#) .. 119 (16#77#)
      'x',     'y',   'z',    '{',      '|',   '}',    '~',   del,   --120 (16#78#) .. 127 (16#7F#)
 
      reserved_128,   reserved_129,     bph,   nbh,                  --128 (16#80#) .. 131 (16#83#)
      reserved_132,   nel,    ssa,      esa,                         --132 (16#84#) .. 135 (16#87#)
      hts,     htj,   vts,    pld,      plu,   ri,     ss2,   ss3,   --136 (16#88#) .. 143 (16#8F#)
 
      dcs,     pu1,   pu2,    sts,      cch,   mw,     spa,   epa,   --144 (16#90#) .. 151 (16#97#)
      sos,     reserved_153,  sci,      csi,                         --152 (16#98#) .. 155 (16#9B#)
      st,      osc,   pm,     apc,                                   --156 (16#9C#) .. 159 (16#9F#)
 
      ' ',     '¡',   '¢',    '£',      '¤',   '¥',    '¦',   '§',   --160 (16#A0#) .. 167 (16#A7#)
      '¨',     '©',   'ª',    '«',      '¬',   '­',    '®',   '¯',   --168 (16#A8#) .. 175 (16#AF#)
 
      '°',     '±',   '²',    '³',      '´',   'µ',    '¶',   '·',   --176 (16#B0#) .. 183 (16#B7#)
      '¸',     '¹',   'º',    '»',      '¼',   '½',    '¾',   '¿',   --184 (16#B8#) .. 191 (16#BF#)
 
      'À',     'Á',   'Â',    'Ã',      'Ä',   'Å',    'Æ',   'Ç',   --192 (16#C0#) .. 199 (16#C7#)
      'È',     'É',   'Ê',    'Ë',      'Ì',   'Í',    'Î',   'Ï',   --200 (16#C8#) .. 207 (16#CF#)
 
      'Ð',     'Ñ',   'Ò',    'Ó',      'Ô',   'Õ',    'Ö',   '×',   --208 (16#D0#) .. 215 (16#D7#)
      'Ø',     'Ù',   'Ú',    'Û',      'Ü',   'Ý',    'Þ',   'ß',   --216 (16#D8#) .. 223 (16#DF#)
 
      'à',     'á',   'â',    'ã',      'ä',   'å',    'æ',   'ç',   --224 (16#E0#) .. 231 (16#E7#)
      'è',     'é',   'ê',    'ë',      'ì',   'í',    'î',   'ï',   --232 (16#E8#) .. 239 (16#EF#)
 
      'ð',     'ñ',   'ò',    'ó',      'ô',   'õ',    'ö',   '÷',   --240 (16#F0#) .. 247 (16#F7#)
      'ø',     'ù',   'ú',    'û',      'ü',   'ý',    'þ',   'ÿ',   --248 (16#F8#) .. 255 (16#FF#)
 
   -- The predefined operators for the type Character are the same as for
   -- any enumeration type.
 
   -- The declaration of type Wide_Character is based on the standard ISO 10646 BMP character set.
   -- The first 256 positions have the same contents as type Character. See 3.5.2.
 
   type Wide_Character is (nul, soh ... FFFE, FFFF);
 
   package ASCII is ... end ASCII;  --Obsolescent; see J.5
 
 
   -- Predefined string types:
 
   type String is array(Positive range <>) of Character;
   pragma Pack(String);
 
   -- The predefined operators for this type are as follows:
 
   --     function "="  (Left, Right: String) return Boolean;
   --     function "/=" (Left, Right: String) return Boolean;
   --     function "<"  (Left, Right: String) return Boolean;
   --     function "<=" (Left, Right: String) return Boolean;
   --     function ">"  (Left, Right: String) return Boolean;
   --     function ">=" (Left, Right: String) return Boolean;
 
   --     function "&" (Left: String;    Right: String)    return String;
   --     function "&" (Left: Character; Right: String)    return String;
   --     function "&" (Left: String;    Right: Character) return String;
   --     function "&" (Left: Character; Right: Character) return String;
 
   type Wide_String is array(Positive range <>) of Wide_Character;
   pragma Pack(Wide_String);
 
   -- The predefined operators for this type correspond to those for String
 
   type Duration is delta ''implementation-defined'' range ''implementation-defined'';
 
      -- The predefined operators for the type Duration are the same as for
      -- any fixed point type.
 
   -- The predefined exceptions:
 
   Constraint_Error: exception;
   Program_Error   : exception;
   Storage_Error   : exception;
   Tasking_Error   : exception;
  
 end Standard;

Manual de referencia de Ada

editar