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

  1. Desarrollar una aplicación completa en REXX.
  2. Aplicar conceptos de manipulación de cadenas, estructuras de control, funciones y subrutinas, manejo de archivos, y más.
  3. Implementar una interfaz de usuario básica para interactuar con la aplicación.
  4. Optimizar el rendimiento de la aplicación.

Requisitos del Proyecto

  1. Agregar Tareas: Permitir al usuario agregar nuevas tareas con un título y una descripción.
  2. Eliminar Tareas: Permitir al usuario eliminar tareas por su identificador.
  3. Listar Tareas: Mostrar todas las tareas almacenadas.
  4. Buscar Tareas: Permitir al usuario buscar tareas por título.
  5. 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

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

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

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

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

  1. Pruebas y Optimización

  1. Pruebas: Asegúrate de probar cada función individualmente y en conjunto para verificar que la aplicación funcione correctamente.
  2. 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!

© Copyright 2024. Todos los derechos reservados