En este tema, aprenderemos sobre los arreglos en Ada, un tipo de dato fundamental que permite almacenar múltiples valores del mismo tipo en una estructura ordenada. Los arreglos son útiles para manejar colecciones de datos y realizar operaciones sobre ellos de manera eficiente.
Contenido
Definición de Arreglos
Un arreglo en Ada es una colección de elementos del mismo tipo, organizados en una secuencia indexada. Los índices de un arreglo pueden ser de cualquier tipo discreto (como enteros o enumeraciones).
Sintaxis Básica
type Index_Type is range <lower_bound> .. <upper_bound>; type Array_Type is array (Index_Type) of Element_Type;
Index_Type
: Define el rango de índices del arreglo.Array_Type
: Define el tipo de arreglo.Element_Type
: Define el tipo de los elementos del arreglo.
Declaración e Inicialización
Declaración de un Arreglo
Inicialización de un Arreglo
En este ejemplo, My_Array
es un arreglo de 10 enteros, donde los primeros tres elementos se inicializan con valores específicos y el resto se inicializa a 0.
Acceso a Elementos
Para acceder a los elementos de un arreglo, utilizamos los índices definidos:
Value : Integer := My_Array(1); -- Accede al primer elemento My_Array(2) := 25; -- Modifica el segundo elemento
Iteración sobre Arreglos
Podemos iterar sobre los elementos de un arreglo utilizando bucles. Aquí hay un ejemplo con un bucle for
:
En este ejemplo, My_Array'Range
devuelve el rango de índices del arreglo, y el bucle for
itera sobre cada índice, imprimiendo el valor correspondiente.
Arreglos Multidimensionales
Ada también soporta arreglos multidimensionales. Aquí hay un ejemplo de un arreglo bidimensional:
type Row_Type is range 1 .. 3; type Column_Type is range 1 .. 3; type Matrix is array (Row_Type, Column_Type) of Integer; My_Matrix : Matrix := ((1, 2, 3), (4, 5, 6), (7, 8, 9));
Para acceder a los elementos de un arreglo bidimensional:
Value : Integer := My_Matrix(1, 2); -- Accede al elemento en la primera fila, segunda columna My_Matrix(2, 3) := 10; -- Modifica el elemento en la segunda fila, tercera columna
Ejercicios Prácticos
Ejercicio 1: Suma de Elementos de un Arreglo
Escribe un programa que calcule la suma de todos los elementos de un arreglo de enteros.
Solución
with Ada.Text_IO; use Ada.Text_IO; procedure Sum_Array is type Index_Type is range 1 .. 5; type Integer_Array is array (Index_Type) of Integer; My_Array : Integer_Array := (1 => 10, 2 => 20, 3 => 30, 4 => 40, 5 => 50); Sum : Integer := 0; begin for Index in My_Array'Range loop Sum := Sum + My_Array(Index); end loop; Put_Line("Sum of array elements: " & Integer'Image(Sum)); end Sum_Array;
Ejercicio 2: Transposición de una Matriz
Escribe un programa que calcule la transposición de una matriz 3x3.
Solución
with Ada.Text_IO; use Ada.Text_IO; procedure Transpose_Matrix is type Row_Type is range 1 .. 3; type Column_Type is range 1 .. 3; type Matrix is array (Row_Type, Column_Type) of Integer; Original_Matrix : Matrix := ((1, 2, 3), (4, 5, 6), (7, 8, 9)); Transposed_Matrix : Matrix; begin for Row in Row_Type loop for Col in Column_Type loop Transposed_Matrix(Col, Row) := Original_Matrix(Row, Col); end loop; end loop; for Row in Row_Type loop for Col in Column_Type loop Put(Integer'Image(Transposed_Matrix(Row, Col)) & " "); end loop; New_Line; end loop; end Transpose_Matrix;
Conclusión
En esta sección, hemos aprendido sobre los arreglos en Ada, incluyendo su definición, declaración, inicialización, acceso a elementos, iteración y arreglos multidimensionales. Los ejercicios prácticos proporcionados te ayudarán a reforzar estos conceptos. En el próximo tema, exploraremos los registros en Ada, que permiten agrupar diferentes tipos de datos en una sola estructura.
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