En este tema, aprenderemos sobre las estructuras de control en Ada, que son fundamentales para dirigir el flujo de ejecución de un programa. Las estructuras de control permiten tomar decisiones, repetir acciones y seleccionar entre diferentes caminos de ejecución.
Contenido
Estructuras Condicionales
if
- elsif
- else
La estructura condicional if
permite ejecutar un bloque de código si una condición es verdadera. Se puede extender con elsif
y else
para manejar múltiples condiciones.
Sintaxis:
if condición_1 then -- Bloque de código si condición_1 es verdadera elsif condición_2 then -- Bloque de código si condición_2 es verdadera else -- Bloque de código si ninguna condición anterior es verdadera end if;
Ejemplo:
procedure Ejemplo_If is A, B : Integer := 10; begin if A > B then Put_Line("A es mayor que B"); elsif A < B then Put_Line("A es menor que B"); else Put_Line("A es igual a B"); end if; end Ejemplo_If;
case
La estructura case
permite seleccionar entre múltiples alternativas basadas en el valor de una expresión.
Sintaxis:
case expresión is when valor_1 => -- Bloque de código para valor_1 when valor_2 => -- Bloque de código para valor_2 when others => -- Bloque de código para cualquier otro valor end case;
Ejemplo:
procedure Ejemplo_Case is Dia : Integer := 3; begin case Dia is when 1 => Put_Line("Lunes"); when 2 => Put_Line("Martes"); when 3 => Put_Line("Miércoles"); when others => Put_Line("Otro día"); end case; end Ejemplo_Case;
Estructuras de Selección
select
La estructura select
se utiliza principalmente en programación concurrente para manejar múltiples tareas y eventos.
Sintaxis:
select -- Bloque de código para la primera alternativa or -- Bloque de código para la segunda alternativa else -- Bloque de código si ninguna alternativa es seleccionada end select;
Ejemplo:
task type Tarea is entry Iniciar; end Tarea; task body Tarea is begin select accept Iniciar do Put_Line("Tarea iniciada"); end Iniciar; or delay 5.0; Put_Line("Tiempo de espera agotado"); end select; end Tarea;
Estructuras de Iteración
loop
La estructura loop
permite repetir un bloque de código indefinidamente hasta que se encuentre una instrucción de salida (exit
).
Sintaxis:
Ejemplo:
procedure Ejemplo_Loop is Contador : Integer := 0; begin loop Put_Line("Contador: " & Integer'Image(Contador)); Contador := Contador + 1; exit when Contador = 10; end loop; end Ejemplo_Loop;
for
loop
El bucle for
se utiliza para iterar sobre un rango de valores.
Sintaxis:
Ejemplo:
procedure Ejemplo_For_Loop is begin for I in 1 .. 10 loop Put_Line("Valor de I: " & Integer'Image(I)); end loop; end Ejemplo_For_Loop;
while
loop
El bucle while
repite un bloque de código mientras una condición sea verdadera.
Sintaxis:
Ejemplo:
procedure Ejemplo_While_Loop is Contador : Integer := 0; begin while Contador < 10 loop Put_Line("Contador: " & Integer'Image(Contador)); Contador := Contador + 1; end loop; end Ejemplo_While_Loop;
Ejercicios Prácticos
Ejercicio 1: Condicionales
Escribe un programa que lea un número entero y determine si es positivo, negativo o cero.
Solución:
with Ada.Text_IO; use Ada.Text_IO; procedure Determinar_Signo is Numero : Integer; begin Put("Introduce un número: "); Get(Numero); if Numero > 0 then Put_Line("El número es positivo"); elsif Numero < 0 then Put_Line("El número es negativo"); else Put_Line("El número es cero"); end if; end Determinar_Signo;
Ejercicio 2: Bucle for
Escribe un programa que imprima los números del 1 al 20.
Solución:
with Ada.Text_IO; use Ada.Text_IO; procedure Imprimir_Numeros is begin for I in 1 .. 20 loop Put_Line(Integer'Image(I)); end loop; end Imprimir_Numeros;
Ejercicio 3: Bucle while
Escribe un programa que calcule la suma de los números del 1 al 100 usando un bucle while
.
Solución:
with Ada.Text_IO; use Ada.Text_IO; procedure Suma_While is Suma, Contador : Integer := 0; begin while Contador <= 100 loop Suma := Suma + Contador; Contador := Contador + 1; end loop; Put_Line("La suma de los números del 1 al 100 es: " & Integer'Image(Suma)); end Suma_While;
Conclusión
En esta sección, hemos cubierto las estructuras de control en Ada, incluyendo las estructuras condicionales (if
, case
), las estructuras de selección (select
) y las estructuras de iteración (loop
, for
, while
). Estas estructuras son esenciales para controlar el flujo de ejecución de un programa y son fundamentales para cualquier programador.
Asegúrate de practicar los ejercicios proporcionados para reforzar tu comprensión de estos conceptos. En el próximo tema, exploraremos los bucles en Ada con más detalle.
Curso de Programación en Ada
Módulo 1: Introducción a Ada
Módulo 2: Conceptos Básicos
- Variables y Tipos de Datos
- Operadores y Expresiones
- Estructuras de Control
- Bucles en Ada
- Subprogramas: Procedimientos y Funciones
Módulo 3: Tipos de Datos Avanzados
Módulo 4: Programación Modular
Módulo 5: Concurrencia y Programación en Tiempo Real
Módulo 6: Temas Avanzados
Módulo 7: Mejores Prácticas y Optimización
- Estilo de Código y Mejores Prácticas
- Depuración y Pruebas
- Optimización del Rendimiento
- Consideraciones de Seguridad