Guía mínima de Ada 95

Sentencias de control.

Selección de dos alternativas.

if Exp_lógica then
    sentencias;
end if;
if Exp_lógica then
    sentencias;
else
    sentencias;
end if;

Selección múltiple.

case selector is
 when alternativa => sentencias;
 when alternativa => sentencias;
 ...
 when others => sentencias;
end case;

El selector debe ser una expresión discreta de tipos integer o enumerados (tipo ordinal). Las alternativas pueden ser uno o varios valores, o rangos, del tipo del selector separados por "|" (equivale al operador OR).

case mes is
 when 1 .. 2 | 12 => put("El invierno es duro");
 when 3 .. 5 => put("Primavera de la vida");
 when 6 .. 8 => put("Estación llena de diversión");
 when 9 .. 11 => put("Época de reflexión");
 when others => put("¿En qué planeta estás?");
end case;

Los valores no pueden repetirse entre dos cláusulas "when". En el caso de que las cláusulas "when" no cubran todos los posibles valores del tipo del selector, es necesario incluir la cláusula "others" para los valores no contemplados.
 

Iteración.

Controlada por contador.

for variable in [reverse] secuencia de control loop
   ...
end loop;

La variable de control es local al bucle, NO SE DECLARA (es del tipo de la secuencia de control) y no puede modificarse explícitamente. La secuencia de control puede ser un rango de un tipo ordinal (entero o enumerado). Cuando se utiliza "reverse" la secuencia de control se recorre en orden inverso:

for num in reverse 1..5 loop
    Put(num); -- escribe 5 4 3 2 1
end loop;
 

Controlada por condición lógica.

while condición loop
    ...
end loop;
 

Bucles sin esquema de iteración.

En Ada se puede construir un bucle tal como:

loop
    ...
end loop;

del que se sale, normalmente, mediante una sentencia "exit when" o con una alternativa que contenga una cláusula "exit".

loop
    ...
    exit when condición;
    ...
end loop;
 

Bloques.

Un bloque es una sentencia compuesta, formada por una secuencia de sentencias agrupadas mediante las palabras delimitadoras "begin", "end", y posiblemente acompañadas de algunas declaraciones locales.
[declare
    declaraciones locales]
begin
    sentencias
end;

(la parte delimitada por corchetes es opcional)

Un bloque puede ponerse en cualquier sitio donde pueda ponerse una sentencia simple.

Ejemplos de bloques:
--bloque sin declaraciones locales
begin
    Put_Line("Hola");
end;

--bloque con declaraciones locales
declare
    Aux : integer; --la variable Aux sólo existe dentro del bloque
begin
    Aux := i; --i, j están declarados en un ámbito más externo
    i := j;
    j := Aux;
end;



[Anterior] [Inicio][Siguiente]