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
return3.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
return3.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
return3.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
return3.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
