RETO MES DE ABRIL .............................docx
Ejercicio ADA Instrucciones y Estructuras de Control
1. Programación Distribuida y en Tiempo Real
EJERCICIO 1:
INSTRUCCIONES Y ESTRUCTURAS DE CONTROL
Escribir un programa en ADA con las siguientes características:
1.Inicializar una variable tipo cadena que contenga los caracteres
“ABCDEFG”.
2.Realizar un bucle para extraer la información de la cadena anterior
carácter a carácter e imprimir por pantalla en función del carácter
leído:
• “A” o “B”: mostrar “Opción 1”.
• “C”, “D” o “E”: mostrar “Opción 2”.
• “F”: mostrar “Opción 3”.
• En otro caso: mostrar “Otra opción”.
3.Extender el código anterior para admitir una cadena de entrada
por teclado.
with Ada.Text_IO;
use Ada.Text_IO;
procedure Ejercicio2ADA is
Max : constant Integer := 7;
--Creo la constante Max, que nos sirve como limite de la cadena a
tratar y despues la utilizo para el bucle for, tiene valor 7 porque es el
máximo numero de caracteres que tiene la cadena inicial
type TipoCadena is new String(1..Max);
CadenaMuestra : TipoCadena;
CadenaTeclado : String(1..Max);
-- Creo un procedimiento interno que nos va a ejecutar un bucle for
que ejecuta un case con las distintas opciones que nos ha dado el
ejercicio
procedure OpcionesCadena ( CadenaEntrada: in String ) is
begin
--CadenaMuestra := ("ABCDEFG");
--CadenaMuestra := CadenaEntrada;
Francisco Manuel García Vallejo Página 1 de 3
2. Programación Distribuida y en Tiempo Real
for i in 1 .. Max loop
-- utilizo un bucle for que se ejecuta tantas veces como caracteres
tiene la cadena, en este caso tiene 7
case CadenaEntrada(i) is
when 'A' | 'B' => put_line ("Opción 1");
when 'C' | 'D' | 'E' => put_line ("Opción 2");
when 'F' => put_line ("Opción 3");
when others => put_line ("Otra opción");
end case;
-- utilizo un case porque contempla distintas opciones, dentro de las
opciones utilizo un OR con dos o con tres valores, además utilizo una
unica opción y la opción por defecto
end loop;
End OpcionesCadena;
begin
Put_Line("Hola, Vamos a ver las opciones para la cadena ABCDEFG");
OpcionesCadena("ABCDEFG");
-- Ejecuto el procedimiento anidado Opciones Cadena para que al
recibir la cadena escriba en pantalla la distintas opciones, lo hago
primero con la cadena inicial dada en el ejercicio
Put_Line("Dime una cadena de texto de 7 caracteres como minimo
para ver las opciones?");
-- Le pido al usuario una cadena de caracteres la cual la introducirá
por el teclado
Put_Line("Debe de escribir la cadena en mayúscula");
-- Recomiendo que los caracteres los escriba en mayúscula y porque
no contenplo caracteres en minúscula
Get(CadenaTeclado);
-- Almaceno en una variable la cadena que nos ha dado por teclado
put_line(CadenaTeclado);
Francisco Manuel García Vallejo Página 2 de 3
3. Programación Distribuida y en Tiempo Real
-- Visualizo la cadena con un tamaño de 7 caracteres y que nos ha
dado para poder comprobar las opciones
OpcionesCadena(CadenaTeclado);
-- LLamo al procedimiento para que nos muestre las opciones que le
corresponden a la cadena que nos han dado por teclado
end Ejercicio2ADA;
Francisco Manuel García Vallejo Página 3 de 3