En este módulo final, aplicarás todos los conceptos y habilidades que has aprendido a lo largo del curso para desarrollar un proyecto completo. Este proyecto te permitirá consolidar tus conocimientos y demostrar tu capacidad para resolver problemas de programación de manera efectiva.
Objetivos del Proyecto
- Aplicar conceptos básicos de programación: Utilizar variables, operadores, estructuras de control, funciones y estructuras de datos.
- Desarrollar un algoritmo: Implementar algoritmos de búsqueda, ordenamiento o recursión según sea necesario.
- Utilizar buenas prácticas: Documentar el código, manejar errores y utilizar control de versiones.
- Completar un ciclo de desarrollo: Planificar, diseñar, implementar, probar y presentar un proyecto de software.
Descripción del Proyecto
Tema del Proyecto
El proyecto consistirá en desarrollar una aplicación de gestión de tareas. Esta aplicación permitirá a los usuarios agregar, editar, eliminar y visualizar tareas. Además, las tareas podrán ser marcadas como completadas o pendientes.
Requisitos Funcionales
- Agregar Tareas: El usuario debe poder agregar nuevas tareas con un título y una descripción.
- Editar Tareas: El usuario debe poder editar el título y la descripción de una tarea existente.
- Eliminar Tareas: El usuario debe poder eliminar tareas.
- Marcar Tareas como Completadas/Pendientes: El usuario debe poder marcar una tarea como completada o pendiente.
- Visualizar Tareas: El usuario debe poder ver una lista de todas las tareas, con la opción de filtrar por tareas completadas y pendientes.
Requisitos No Funcionales
- Interfaz de Usuario: La aplicación debe tener una interfaz de usuario simple y fácil de usar.
- Persistencia de Datos: Las tareas deben ser guardadas de manera que persistan entre sesiones de uso de la aplicación.
- Documentación: El código debe estar bien documentado, con comentarios claros y concisos.
- Control de Versiones: Utilizar un sistema de control de versiones (como Git) para gestionar el desarrollo del proyecto.
Planificación del Proyecto
Fases del Proyecto
- Planificación y Diseño: Definir los requisitos detallados, diseñar la arquitectura de la aplicación y crear un plan de desarrollo.
- Implementación: Escribir el código para implementar las funcionalidades definidas.
- Pruebas: Probar la aplicación para asegurarse de que funciona correctamente y cumple con los requisitos.
- Presentación: Preparar una presentación del proyecto, incluyendo una demostración de la aplicación y una explicación del proceso de desarrollo.
Herramientas Recomendadas
- Entorno de Desarrollo: Utiliza un IDE o editor de texto con el que te sientas cómodo (por ejemplo, Visual Studio Code, PyCharm).
- Control de Versiones: Git y GitHub para gestionar el código y colaborar si es necesario.
- Lenguaje de Programación: Puedes utilizar cualquier lenguaje de programación que hayas aprendido durante el curso (por ejemplo, Python, JavaScript).
Ejemplo de Estructura del Proyecto
A continuación, se presenta un ejemplo de cómo podrías estructurar tu proyecto en Python:
Descripción de Archivos
- main.py: Punto de entrada de la aplicación.
- task.py: Definición de la clase
Task
que representa una tarea. - task_manager.py: Lógica de negocio para gestionar las tareas (agregar, editar, eliminar, marcar como completadas/pendientes).
- ui.py: Interfaz de usuario para interactuar con el usuario.
- README.md: Documentación del proyecto.
- .gitignore: Archivos y directorios que deben ser ignorados por Git.
Ejercicio Práctico
Paso 1: Definir la Clase Task
Define una clase Task
en el archivo task.py
que tenga los siguientes atributos y métodos:
class Task: def __init__(self, title, description): self.title = title self.description = description self.completed = False def mark_completed(self): self.completed = True def mark_pending(self): self.completed = False def __str__(self): status = 'Completed' if self.completed else 'Pending' return f"{self.title} - {self.description} [{status}]"
Paso 2: Implementar el Gestor de Tareas
Implementa la lógica de negocio en task_manager.py
:
class TaskManager: def __init__(self): self.tasks = [] def add_task(self, task): self.tasks.append(task) def edit_task(self, index, title, description): if 0 <= index < len(self.tasks): self.tasks[index].title = title self.tasks[index].description = description def delete_task(self, index): if 0 <= index < len(self.tasks): self.tasks.pop(index) def mark_task_completed(self, index): if 0 <= index < len(self.tasks): self.tasks[index].mark_completed() def mark_task_pending(self, index): if 0 <= index < len(self.tasks): self.tasks[index].mark_pending() def get_tasks(self, completed=None): if completed is None: return self.tasks return [task for task in self.tasks if task.completed == completed]
Paso 3: Crear la Interfaz de Usuario
Implementa una interfaz de usuario simple en ui.py
:
def display_tasks(tasks): for i, task in enumerate(tasks): print(f"{i}. {task}") def main(): manager = TaskManager() while True: print("\nTask Manager") print("1. Add Task") print("2. Edit Task") print("3. Delete Task") print("4. Mark Task Completed") print("5. Mark Task Pending") print("6. View All Tasks") print("7. View Completed Tasks") print("8. View Pending Tasks") print("9. Exit") choice = input("Choose an option: ") if choice == '1': title = input("Enter task title: ") description = input("Enter task description: ") manager.add_task(Task(title, description)) elif choice == '2': index = int(input("Enter task index to edit: ")) title = input("Enter new task title: ") description = input("Enter new task description: ") manager.edit_task(index, title, description) elif choice == '3': index = int(input("Enter task index to delete: ")) manager.delete_task(index) elif choice == '4': index = int(input("Enter task index to mark as completed: ")) manager.mark_task_completed(index) elif choice == '5': index = int(input("Enter task index to mark as pending: ")) manager.mark_task_pending(index) elif choice == '6': display_tasks(manager.get_tasks()) elif choice == '7': display_tasks(manager.get_tasks(completed=True)) elif choice == '8': display_tasks(manager.get_tasks(completed=False)) elif choice == '9': break else: print("Invalid choice. Please try again.") if __name__ == "__main__": main()
Paso 4: Documentar el Proyecto
Asegúrate de documentar tu proyecto en el archivo README.md
, incluyendo una descripción del proyecto, instrucciones para ejecutar la aplicación y cualquier otra información relevante.
Paso 5: Control de Versiones
Utiliza Git para gestionar tu proyecto. Asegúrate de realizar commits frecuentes y de mantener un historial claro de los cambios realizados.
Conclusión
En esta sección, has definido el proyecto final del curso, que consiste en desarrollar una aplicación de gestión de tareas. Este proyecto te permitirá aplicar todos los conceptos y habilidades que has aprendido a lo largo del curso. Asegúrate de seguir las fases del proyecto y de utilizar las herramientas recomendadas para completar tu proyecto de manera efectiva. ¡Buena suerte!
Fundamentos de la Programación
Módulo 1: Introducción a la Programación
- ¿Qué es la programación?
- Historia de la programación
- Lenguajes de programación
- Entornos de desarrollo