Skip to main content

Tarea programda #3 Valor 35%

Enunciado del problema:

Escribe un programa en Python para gestionar una lista de tareas pendientes. El programa debe permitir al usuario realizar las siguientes operaciones:

  1. Agregar una tarea a la lista.
  2. Marcar una tarea como completada.
  3. Mostrar todas las tareas pendientes.
  4. Guardar las tareas en un archivo de texto.
  5. Cargar las tareas desde un archivo de texto al iniciar el programa.

Cada tarea debe tener un identificador único, un nombre y un estado (pendiente o completada). El programa debe utilizar funciones para realizar las operaciones mencionadas anteriormente, así como también debe utilizar un archivo de texto para almacenar las tareas entre sesiones del programa.

El formato del archivo de texto debe ser el siguiente:

id1,Nombre de la tarea 1,Pendiente
id2,Nombre de la tarea 2,Completada
id3,Nombre de la tarea 3,Pendiente

El programa debe cargar las tareas desde el archivo de texto al inicio y guardar las tareas actualizadas en el archivo antes de finalizar la ejecución.

Explicación de cada uno de los puntos

  1. Agregar una tarea a la lista:

    • El programa debe solicitar al usuario que ingrese el nombre de la tarea que desea agregar.
    • Se debe generar un identificador único para la tarea (puede ser un número incremental).
    • La tarea debe agregarse a una lista en memoria que almacene todas las tareas pendientes, junto con su identificador único y su estado inicial, que será "pendiente".
  2. Marcar una tarea como completada:

    • El programa debe permitir al usuario ingresar el identificador único de la tarea que desea marcar como completada.
    • Se debe buscar la tarea correspondiente en la lista de tareas pendientes.
    • Una vez encontrada, se debe cambiar su estado a "completada".
  3. Mostrar todas las tareas pendientes:

    • El programa debe mostrar una lista de todas las tareas pendientes, junto con su identificador único y su nombre.
    • Debe indicar claramente cuáles tareas están pendientes y cuáles están completadas.
  4. Guardar las tareas en un archivo de texto:

    • Antes de finalizar la ejecución del programa, se deben guardar todas las tareas (incluyendo las nuevas y los cambios de estado) en un archivo de texto.
    • El formato del archivo debe seguir la estructura mencionada en el enunciado, con cada línea representando una tarea.
  5. Cargar las tareas desde un archivo de texto al iniciar el programa:

    • Al iniciar el programa, se debe verificar si existe un archivo de texto que contenga las tareas previamente guardadas.
    • Si el archivo existe, el programa debe cargar las tareas desde él y almacenarlas en la lista de tareas pendientes en memoria para trabajar con ellas durante la sesión actual del programa.
    • Si el archivo no existe o está vacío, el programa iniciará con una lista vacía de tareas pendientes.

Restricciones

Estas restricciones están diseñadas para promover un estilo particular de diseño de programas, que sigue los principios de modularidad y separación de preocupaciones. Aquí tienes una explicación detallada de cada una:

  1. Las funciones no pueden tener inputs: Esta restricción implica que las funciones deben ser diseñadas de manera que no dependan de inputs directos proporcionados cuando son llamadas. En cambio, estas funciones pueden depender de variables globales, datos almacenados en archivos, o incluso datos generados internamente dentro de la función. La idea detrás de esta restricción es fomentar un diseño más independiente de las funciones, lo que puede hacer que el código sea más fácil de entender, probar y mantener.

  2. El programa debe iniciar por un archivo main.py: Esta restricción establece que la ejecución del programa debe comenzar desde un archivo específico llamado "main.py". Este archivo suele ser el punto de entrada principal del programa, desde donde se invocan otras funciones y módulos según sea necesario. Al utilizar un punto de entrada estándar como "main.py", se mejora la legibilidad y la organización del código, ya que los desarrolladores pueden esperar encontrar la lógica principal del programa en este archivo.

  3. Las funciones deben estar definidas en archivos distintos al main.py: Esta restricción indica que las funciones del programa deben ser definidas en archivos separados de "main.py". Esto promueve la modularidad del código, ya que cada función puede ser desarrollada y probada de forma independiente en su propio archivo. Además, separar las funciones del archivo principal facilita la reutilización del código y el mantenimiento a largo plazo, ya que las funciones pueden ser modificadas o reemplazadas sin afectar directamente al código en "main.py".