next up previous contents
Siguiente: Resumen Subir: Formación (array) Anterior: Formaciones irrestringidas   Índice General

Cadenas de caracteres (Strings)

A diferencia de otros lenguajes de programación, las cadenas de Ada no son un tipo de dato especial. Ada tiene una declaración implícita7.2 del tipo String que es de la siguiente forma:

      type String is array(Positive range <>) of Character;

Esto significa que podemos declarar:

      Cadena_1 : String(1 .. 5);
      Cadena_2 : constant String := "Hola Ada";

...pero no podemos declarar:

      Cadena_3 : String;     -- Ilegal

...porque es un tipo irrestringido (y debemos fijar su rango al declarar la variable).

Es importante que nos demos cuenta de que, al no ser un tipo especial, todos los mecanismos que proporciona Ada para tratar formaciones podemos utilizarlos con las variables de tipo string. Por ejemplo:

    declare
       Saludo : String(1 .. 4);
    begin
       Saludo := ('H', ó', 'l', á'); 
       Saludo := "Hola";
    end;

Ambas asignaciones son equivalentes; la primera notación es más formal (de acuerdo con lo visto hasta ahora), pero Ada permite abreviar utilizando la segunda notación (entre comillas).

Si queremos que una String contenga las comillas, debemos duplicarlas. Por ejemplo:

  Text_IO.Put_Line("Fichero: ""datos.dat"" no encontrado.");

  Al ejecutarla obtendremos en pantalla el mensaje:

                Fichero "datos.dat" no encontrado.

Los programadores novatos a veces confunden un Character con una String de longitud 1. Si escribimos:

 
          Frase : String(1 .. 10);

...Frase (1) es un Character y Frase (1 .. 1) es una String de longitud 1 (de la misma manera que 'X' es una constante de tipo Character y "X" es una constante de tipo String de longitud 1). Por tanto, podemos escribir:

          Frase (1) := 'X';       
          Frase (1 .. 1) := "X";

...pero NO podemos mezclar tipos y escribir:

          Frase (1) := "X";      --  Los tipos no coinciden.
          Frase (1 .. 1):= 'X';  --  Los tipos no coinciden.

Afortunadamente la biblioteca Text_IO tiene procedimientos Put y Get para el tipo Character y procedimientos Put y Get para el tipo String. Esto nos permite escribir en pantalla una String de las siguientes formas:

          Text_IO.Put ( Frase (1 .. 1) ); 
          Text_IO.Put ( Frase (1) );

Sin embargo, los procedimientos Put_Line y Get_Line sólo permiten constantes y variables de tipo String.



Notas al pie

... implícita7.2
Una declaración implícita es una declaración que realiza automáticamente Ada antes de comenzar a analizar cualquier programa. Por tanto, esta declaración está siempre presente en todos los programas escritos con Ada.

next up previous contents
Siguiente: Resumen Subir: Formación (array) Anterior: Formaciones irrestringidas   Índice General
Javier Miranda 2002-10-03