with Ada.Text_IO; use Ada.Text_IO;
with Ada.Integer_Text_IO; use Ada.Integer_Text_IO;
with Ada.Exceptions; use Ada.Exceptions;
procedure Guess is
N : constant Integer :=42;
V : Integer;
H : Integer;
begin
Put ("Adivina en que número estoy pensando ? ");
Get (V);
if V = N then
Put_Line ("Bien hecho!");
else
Put_Line ("Sigue Probando!");
Put_Line ("El número es " & (if V > N then " menor." else " mayor."));
H := abs (V-N);
Put ("Pista : ");
if (H < 5) then Put_Line ("TE QUEMAS!");
elsif (H < 10) then Put_Line ("CALIENTE!");
elsif (H < 15) then Put_Line ("TEMPLADO");
else Put_Line ("FRIO");
end if;
end if;
end Guess;Ada ofrece bloques if-elsif-else en los que cada bloque
de instrucciones asociado a la condición debe empezar con la palabra
clave then. El fin del bloque condicional if
se marca con las palabras clave end if, y un único bloque
else está permitido por cada bloque if.
Como sucede con la mayoría de lenguajes fuertemente tipados, es
necesario declarar todas nuestras variables antes de utilizarlas. Esto
se hace en el bloque definido entre las palabras clave is y
begin en la declaración del procedimiento. Este bloque se
conoce como regiones declarativas y nos permiten definir
variables, constantes, subprograma y otro tipo de entidades.
Ada no ofrece un operador ternario como el de C, pero si permite
utilizar bloques if como expresiones. El programa anterior
muestra un ejemplo de como hacer esto:
Put_Line ("El número es " & (if V > N then " menor." else " mayor."));RECUERDA
El operador
&nos permite concatenar cadenas en Ada.
Esto se conoce como expresiones if en Ada y hay algunas
restricciones sobre c omo se pueden usar:
- Las expresiones que se devuelven en cada rama del
ifdeben ser todas del mismo tipo. - Debe estar rodeado por parentesis
- La rama
elsees obligatoria a no ser quethendevuelva un valor boleano. En ese casoelsees opcional y por defecto de consideraelse True.
Observa que las expresiones if no utilizamos las
palabras reservadas end if para marcar el final.
Ada también ofrece un comando similar al switch del C,
pero que se renombra como case. Su sintaxis es la
siguiente:
case V is
when 1 | 2 | 3 =>
Put_Line ("El valor es 1, 2 o 3");
when 4..10 =>
Put_line ("El valor está entre 4 y 10");
when others =>
Put_line ("El resto de casos");
end case;En Ada la variable de case debe ser lo que se llama una
variable discreta… En lenguaje plano, debe ser un entero o un enumerado…
como en C. Un comando case en Ada debe cubrir todos los
casos posibles (lo que normalmente significa que tendremos que utilizar
el caso others). Como podemos ver, no es necesaria una
clausura break o similar al final de cada bloque, y podemos
utilizar tnato rangos como varios valores para indicar los casos.
Al igual que sucede con if Ada soporta las conocidas
como expresiones case. Utilizando este tipo de expresiones
podemos escribir el código anterior de la siguiente forma:
Put_line
(case V is
when 1|2|3 => "El valor es 1, 2 o 3",
when 4..10 => "El valor esá entre 3 y 10",
others => "El resto de casos);Observad que la expresión case debe ir entre paréntesis, a no ser que
ya vaya entre paréntesis debido a la forma en la que se usa, como por
ejemplo en el código anterior en el cual, la expresión case está rodeada
ya por los paréntesis de la llamada al procedimiento
Put_Line. Además, los casos se separan con comas
Ada soporta la definición de constantes utilizando la palabra clave
constant.
Ada soporta valores booleanos a través del tipo Boolean
que el lenguaje define como el enumerado:
type Boolean is (False, True);Y por lo tanto puede tomar los valores True o
False.
Resumen
- Soporta
if ... then [else if/elseif then] ...[else] ...end if - No ofrece forma reducida de
if, peroifse puede utilizar como expresión - No ofrece operador terciario, pero
ifse puede utilizar como expresión - Soporta booleanos:
Boolean - Soporta
switchcon palabras clavecase... when - Soporta constantes nativamente
(
CONSTANTE: constant Tipo:= val)
■
