Introducción
En este proyecto final, aplicarás todos los conocimientos adquiridos a lo largo del curso para desarrollar una aplicación integral en REXX. Este proyecto te permitirá consolidar tus habilidades y demostrar tu competencia en la programación con REXX. La aplicación que desarrollarás será una herramienta de gestión de tareas que permitirá a los usuarios agregar, eliminar, listar y buscar tareas.
Objetivos del Proyecto
- Desarrollar una aplicación completa en REXX.
- Aplicar conceptos de manipulación de cadenas, estructuras de control, funciones y subrutinas, manejo de archivos, y más.
- Implementar una interfaz de usuario básica para interactuar con la aplicación.
- Optimizar el rendimiento de la aplicación.
Requisitos del Proyecto
- Agregar Tareas: Permitir al usuario agregar nuevas tareas con un título y una descripción.
- Eliminar Tareas: Permitir al usuario eliminar tareas por su identificador.
- Listar Tareas: Mostrar todas las tareas almacenadas.
- Buscar Tareas: Permitir al usuario buscar tareas por título.
- Guardar y Cargar Tareas: Guardar las tareas en un archivo y cargar las tareas desde un archivo al iniciar la aplicación.
Estructura del Proyecto
- Configuración Inicial
Primero, asegúrate de tener tu entorno REXX configurado correctamente. Si necesitas ayuda, revisa el módulo 1, sección 2: Configuración del Entorno REXX.
- Diseño de la Aplicación
2.1. Estructura de Datos
Utilizaremos un arreglo para almacenar las tareas. Cada tarea será un objeto con un identificador, título y descripción.
/* Estructura de una tarea */ task.1 = "1" task.1.title = "Comprar leche" task.1.description = "Comprar leche en el supermercado"
2.2. Funciones Principales
addTask
: Agregar una nueva tarea.deleteTask
: Eliminar una tarea por su identificador.listTasks
: Listar todas las tareas.searchTask
: Buscar tareas por título.saveTasks
: Guardar las tareas en un archivo.loadTasks
: Cargar las tareas desde un archivo.
- Implementación
3.1. Función para Agregar Tareas
addTask: procedure parse arg id, title, description task.id = id task.id.title = title task.id.description = description say "Tarea agregada: " title return
3.2. Función para Eliminar Tareas
deleteTask: procedure parse arg id if task.id <> "" then call value "task."id, "" say "Tarea eliminada: " id else say "Tarea no encontrada: " id return
3.3. Función para Listar Tareas
listTasks: procedure i = 1 do while task.i <> "" say "ID: " task.i say "Título: " task.i.title say "Descripción: " task.i.description i = i + 1 end return
3.4. Función para Buscar Tareas
searchTask: procedure parse arg title i = 1 do while task.i <> "" if task.i.title = title then say "ID: " task.i say "Título: " task.i.title say "Descripción: " task.i.description i = i + 1 end return
3.5. Función para Guardar Tareas
saveTasks: procedure parse arg filename i = 1 file = open(filename, "w") do while task.i <> "" call lineout file, task.i || "," || task.i.title || "," || task.i.description i = i + 1 end call close file say "Tareas guardadas en: " filename return
3.6. Función para Cargar Tareas
loadTasks: procedure parse arg filename file = open(filename, "r") i = 1 do while lines(file) > 0 line = linein(file) parse var line id "," title "," description task.i = id task.i.title = title task.i.description = description i = i + 1 end call close file say "Tareas cargadas desde: " filename return
- Interfaz de Usuario
do forever say "Gestión de Tareas" say "1. Agregar Tarea" say "2. Eliminar Tarea" say "3. Listar Tareas" say "4. Buscar Tarea" say "5. Guardar Tareas" say "6. Cargar Tareas" say "7. Salir" parse pull option select when option = "1" then do say "Ingrese ID, Título y Descripción:" parse pull id title description call addTask id, title, description end when option = "2" then do say "Ingrese ID de la tarea a eliminar:" parse pull id call deleteTask id end when option = "3" then call listTasks when option = "4" then do say "Ingrese Título de la tarea a buscar:" parse pull title call searchTask title end when option = "5" then do say "Ingrese nombre del archivo para guardar:" parse pull filename call saveTasks filename end when option = "6" then do say "Ingrese nombre del archivo para cargar:" parse pull filename call loadTasks filename end when option = "7" then leave otherwise say "Opción no válida" end end
- Pruebas y Optimización
- Pruebas: Asegúrate de probar cada función individualmente y en conjunto para verificar que la aplicación funcione correctamente.
- Optimización: Revisa el código para identificar posibles mejoras en el rendimiento y la eficiencia.
Conclusión
Este proyecto final te ha permitido aplicar una amplia gama de conceptos y técnicas de programación en REXX. Al completar este proyecto, habrás demostrado tu capacidad para desarrollar aplicaciones completas y funcionales en REXX. ¡Felicidades por llegar hasta aquí!
Resumen del Proyecto:
- Objetivo: Desarrollar una herramienta de gestión de tareas en REXX.
- Funciones Principales: Agregar, eliminar, listar, buscar, guardar y cargar tareas.
- Estructura de Datos: Uso de arreglos para almacenar tareas.
- Interfaz de Usuario: Menú interactivo para gestionar tareas.
- Pruebas y Optimización: Verificación y mejora del rendimiento del código.
¡Ahora estás listo para enfrentar desafíos más complejos y desarrollar aplicaciones aún más avanzadas en REXX!
Curso de Programación REXX
Módulo 1: Introducción a REXX
- ¿Qué es REXX?
- Configuración del Entorno REXX
- Hola Mundo en REXX
- Sintaxis y Estructura Básica
- Variables y Tipos de Datos
Módulo 2: Conceptos Básicos de Programación
- Operadores y Expresiones
- Estructuras de Control: IF/THEN/ELSE
- Bucles: DO y LEAVE
- Entrada y Salida
- Manipulación Básica de Cadenas
Módulo 3: Programación Intermedia en REXX
- Funciones y Subrutinas
- Funciones Integradas
- Manejo de Errores
- Operaciones de Entrada/Salida de Archivos
- Trabajando con Arreglos
Módulo 4: Programación Avanzada en REXX
- Manipulación Avanzada de Cadenas
- Técnicas de Análisis
- Interfaz con Programas Externos
- Macros en REXX
- Optimización del Rendimiento