En este módulo, aprenderemos sobre dos estructuras de datos fundamentales en RPG: los arreglos y las listas. Estas estructuras son esenciales para almacenar y manipular colecciones de datos de manera eficiente.
Conceptos Clave
Arreglos
Un arreglo es una colección de elementos del mismo tipo, almacenados en ubicaciones de memoria contiguas. Los arreglos permiten acceder a los elementos mediante índices.
Listas
Una lista es una colección de elementos que pueden ser de diferentes tipos y no necesariamente están almacenados en ubicaciones de memoria contiguas. Las listas permiten una mayor flexibilidad en la manipulación de datos.
Arreglos en RPG
Declaración de Arreglos
Para declarar un arreglo en RPG, utilizamos la palabra clave DCL-S
(declarar variable) seguida del nombre del arreglo, el tipo de datos y el tamaño del arreglo.
En este ejemplo, myArray
es un arreglo de 5 elementos, cada uno de tipo CHAR(10)
.
Inicialización de Arreglos
Podemos inicializar un arreglo al momento de su declaración o posteriormente en el código.
El uso de INZ(*ALL)
inicializa todos los elementos del arreglo con valores predeterminados.
Acceso a Elementos del Arreglo
Para acceder a un elemento específico del arreglo, utilizamos el índice del elemento. Los índices en RPG comienzan en 1.
Ejemplo Práctico
DCL-S myArray CHAR(10) DIM(5) INZ(*ALL); myArray(1) = 'Apple'; myArray(2) = 'Banana'; myArray(3) = 'Cherry'; myArray(4) = 'Date'; myArray(5) = 'Elderberry'; FOR i = 1 TO %ELEM(myArray); DSPly myArray(i); ENDFOR;
En este ejemplo, declaramos un arreglo de 5 elementos, lo inicializamos y luego asignamos valores a cada elemento. Finalmente, utilizamos un bucle FOR
para mostrar cada elemento del arreglo.
Listas en RPG
Declaración de Listas
En RPG, las listas se pueden manejar utilizando estructuras de datos más avanzadas como las listas enlazadas. Sin embargo, para simplificar, utilizaremos arreglos dinámicos que pueden crecer según sea necesario.
Ejemplo de Lista Dinámica
DCL-S myList CHAR(10) DIM(10) INZ(*ALL); DCL-S listSize INT(10) INZ(0); DCL-PROC addToList; DCL-PI *N CHAR(10); DCL-PARM newItem CHAR(10); listSize += 1; myList(listSize) = newItem; RETURN newItem; END-PROC; addToList('Apple'); addToList('Banana'); addToList('Cherry'); FOR i = 1 TO listSize; DSPly myList(i); ENDFOR;
En este ejemplo, declaramos un arreglo myList
con un tamaño inicial de 10 elementos y una variable listSize
para llevar la cuenta del número de elementos en la lista. La subrutina addToList
agrega un nuevo elemento a la lista y actualiza listSize
.
Ejercicios Prácticos
Ejercicio 1: Crear y Manipular un Arreglo
- Declara un arreglo de 7 elementos de tipo
CHAR(15)
. - Inicializa el arreglo con nombres de días de la semana.
- Escribe un bucle para mostrar todos los elementos del arreglo.
Solución
DCL-S daysOfWeek CHAR(15) DIM(7) INZ(*ALL); daysOfWeek(1) = 'Monday'; daysOfWeek(2) = 'Tuesday'; daysOfWeek(3) = 'Wednesday'; daysOfWeek(4) = 'Thursday'; daysOfWeek(5) = 'Friday'; daysOfWeek(6) = 'Saturday'; daysOfWeek(7) = 'Sunday'; FOR i = 1 TO %ELEM(daysOfWeek); DSPly daysOfWeek(i); ENDFOR;
Ejercicio 2: Crear una Lista Dinámica
- Declara un arreglo dinámico para almacenar nombres de frutas.
- Escribe una subrutina para agregar elementos a la lista.
- Agrega al menos 5 nombres de frutas a la lista y muestra todos los elementos.
Solución
DCL-S fruitList CHAR(20) DIM(10) INZ(*ALL); DCL-S listSize INT(10) INZ(0); DCL-PROC addFruit; DCL-PI *N CHAR(20); DCL-PARM newFruit CHAR(20); listSize += 1; fruitList(listSize) = newFruit; RETURN newFruit; END-PROC; addFruit('Apple'); addFruit('Banana'); addFruit('Cherry'); addFruit('Date'); addFruit('Elderberry'); FOR i = 1 TO listSize; DSPly fruitList(i); ENDFOR;
Conclusión
En esta sección, hemos aprendido sobre los arreglos y las listas en RPG. Los arreglos son útiles para almacenar colecciones de datos del mismo tipo, mientras que las listas ofrecen mayor flexibilidad. Hemos visto cómo declarar, inicializar y manipular estas estructuras de datos, y hemos practicado con ejemplos y ejercicios. Con estos conocimientos, estarás mejor preparado para manejar colecciones de datos en tus programas RPG.
Curso de Programación RPG
Módulo 1: Introducción a la Programación RPG
- ¿Qué es RPG?
- Configuración de tu Entorno de Desarrollo
- Sintaxis y Estructura Básica
- Programa Hola Mundo
Módulo 2: Conceptos Básicos
- Tipos de Datos y Variables
- Operadores y Expresiones
- Estructuras de Control
- Funciones y Procedimientos
Módulo 3: Trabajando con Datos
Módulo 4: Técnicas Avanzadas de Programación
Módulo 5: RPG IV y Más Allá
Módulo 6: Integrando RPG con Tecnologías Modernas
Módulo 7: Aplicaciones del Mundo Real
- Construyendo una Aplicación Simple
- Estudio de Caso: Sistema de Gestión de Inventarios
- Estudio de Caso: Sistema de Nómina
- Mejores Prácticas y Revisión de Código