Introducción al proyecto (15 minutos)
Explicación:
El proyecto final consiste en crear un programa que simule un gestor de tareas básico. El programa permitirá:
- Agregar una nueva tarea a una lista.
- Listar todas las tareas.
- Marcar una tarea como completada.
Conceptos a usar:
- Arrays: Para almacenar la lista de tareas y su estado (completada o no).
- Condicionales: Para validar entradas y manejar opciones del menú.
- Bucles: Para mostrar tareas y controlar el flujo del programa.
- Funciones: Para organizar el código en bloques reutilizables (al menos tres: agregar, listar, completar).
Estructura del programa:
- Un menú principal que ofrezca opciones (agregar, listar, completar, salir).
- Un array para almacenar tareas (nombres) y otro para su estado (completada o no).
- Funciones específicas para cada acción.
Analogía: Es como un cuaderno de tareas donde puedes añadir notas, verlas todas o tachar las que terminas, pero automatizado con código.
Punto clave: Este proyecto te prepara para Laravel, donde usarás estructuras similares para gestionar datos (por ejemplo, listas de usuarios o productos en una base de datos).
Actividad rápida (3 minutos):
Piensa en cómo organizarías una lista de tareas en la vida real. Escribe en papel:
- ¿Qué datos necesitas por tarea? (Ejemplo: nombre, estado).
- ¿Qué acciones quieres realizar? (Ejemplo: añadir, listar).
Solución sugerida: - Datos: Nombre (texto), Completada (sí/no).
- Acciones: Agregar, Mostrar, Marcar como hecha.
Diseño del programa (20 minutos)
Explicación:
Antes de escribir código, diseñemos la lógica del programa. Esto ayuda a evitar errores y organiza el trabajo.
Requisitos del programa:
- Almacenamiento:
- Un array para los nombres de las tareas (tipo Caracter).
- Un array para el estado de las tareas (tipo Lógico, Verdadero para completada, Falso para pendiente).
- Un contador para el número de tareas (para no exceder el tamaño del array).
- Funciones:
- AgregarTarea: Añade una tarea al array si hay espacio.
- ListarTareas: Muestra todas las tareas con su estado.
- MarcarTareaCompletada: Cambia el estado de una tarea a completada según su número.
- Menú:
- Opciones: 1 (agregar), 2 (listar), 3 (completar), 4 (salir).
- Un bucle Mientras para mantener el programa activo hasta que el usuario elija salir.
Límites del proyecto:
- Para simplificar, usaremos un array de tamaño fijo (por ejemplo, 5 tareas).
- No manejaremos eliminación de tareas ni almacenamiento permanente (esto vendrá con bases de datos en módulos futuros).
Pseudocódigo inicial (esqueleto):
Algoritmo GestorTareas
// Declarar arrays y variables
Definir tareas Como Caracter
Dimension tareas[5]
Definir estados Como Logico
Dimension estados[5]
Definir numTareas Como Entero
Definir opcion Como Entero
// Inicializar
numTareas <- 0
// Menú principal
Mientras Verdadero Hacer
Escribir "1. Agregar tarea"
Escribir "2. Listar tareas"
Escribir "3. Marcar tarea como completada"
Escribir "4. Salir"
Leer opcion
Segun opcion Hacer
1: // Llamar función para agregar
2: // Llamar función para listar
3: // Llamar función para completar
4: // Salir
FinSegun
FinMientras
FinAlgoritmo
Punto clave: Diseñar primero la lógica (arrays, funciones, menú) hace el código más claro, una práctica que usarás en Laravel para planificar controladores y rutas.
Actividad rápida (5 minutos):
En papel o PSeInt, escribe el pseudocódigo de una función que muestre un mensaje simple como "Lista vacía" si no hay tareas. Solución sugerida:
SubProceso MostrarVacio()
Escribir "No hay tareas en la lista"
FinSubProceso
Implementación de las funciones (45 minutos)
Explicación:
Ahora escribiremos las tres funciones requeridas y las integraremos en el programa. Cada función usará conceptos previos (arrays, condicionales, bucles).
Función 1: AgregarTarea
- Propósito: Añade una nueva tarea al array si no está lleno.
- Parámetros: Arrays de tareas y estados, contador de tareas, nombre de la tarea.
- Lógica: Verifica si hay espacio, agrega la tarea y actualiza el contador.
Código:
SubProceso AgregarTarea(tareas, estados, numTareas Por Referencia, nuevaTarea)
Si numTareas < 5 Entonces
numTareas <- numTareas + 1
tareas[numTareas] <- nuevaTarea
estados[numTareas] <- Falso
Escribir "Tarea agregada: ", nuevaTarea
Sino
Escribir "Error: Lista de tareas llena"
FinSi
FinSubProceso
Función 2: ListarTareas
- Propósito: Muestra todas las tareas con su número y estado.
- Parámetros: Arrays de tareas y estados, contador de tareas.
- Lógica: Usa un bucle para recorrer el array y muestra "Completada" o "Pendiente".
Código:
SubProceso ListarTareas(tareas, estados, numTareas)
Definir i Como Entero
Si numTareas = 0 Entonces
Escribir "No hay tareas en la lista"
Sino
Escribir "Lista de tareas:"
Para i <- 1 Hasta numTareas Hacer
Si estados[i] Entonces
Escribir i, ". ", tareas[i], " (Completada)"
Sino
Escribir i, ". ", tareas[i], " (Pendiente)"
FinSi
FinPara
FinSi
FinSubProceso
Función 3: MarcarTareaCompletada
- Propósito: Cambia el estado de una tarea a completada según su número.
- Parámetros: Array de estados, contador de tareas, número de la tarea.
- Lógica: Valida que el número sea válido y actualiza el estado.
Código:
SubProceso MarcarTareaCompletada(estados, numTareas, numeroTarea)
Si numeroTarea >= 1 Y numeroTarea <= numTareas Entonces
estados[numeroTarea] <- Verdadero
Escribir "Tarea ", numeroTarea, " marcada como completada"
Sino
Escribir "Error: Número de tarea inválido"
FinSi
FinSubProceso
Punto clave: Cada función es modular y reutilizable, un principio que aplicarás en Laravel para separar lógica en métodos y controladores.
Actividad rápida (5 minutos):
Prueba escribir en papel una función que valide si una tarea no está vacía antes de agregarla. Solución sugerida:
SubProceso esValida <- ValidarTarea(tarea)
Definir esValida Como Logico
Si tarea <> "" Entonces
esValida <- Verdadero
Sino
esValida <- Falso
FinSi
FinSubProceso
Código completo y prueba (30 minutos)
Explicación:
Ahora integramos las funciones en un programa completo con un menú interactivo.
Código completo:
Algoritmo GestorTareas
// Declarar arrays y variables
Definir tareas Como Caracter
Dimension tareas[5]
Definir estados Como Logico
Dimension estados[5]
Definir numTareas Como Entero
Definir opcion Como Entero
Definir nuevaTarea Como Caracter
Definir numeroTarea Como Entero
// Inicializar
numTareas <- 0
// Menú principal
Mientras Verdadero Hacer
Escribir "=== Gestor de Tareas ==="
Escribir "1. Agregar tarea"
Escribir "2. Listar tareas"
Escribir "3. Marcar tarea como completada"
Escribir "4. Salir"
Escribir "Seleccione una opción: "
Leer opcion
Segun opcion Hacer
1:
Escribir "Ingrese el nombre de la tarea: "
Leer nuevaTarea
Llamar AgregarTarea(tareas, estados, numTareas, nuevaTarea)
2:
Llamar ListarTareas(tareas, estados, numTareas)
3:
Escribir "Ingrese el número de la tarea a completar: "
Leer numeroTarea
Llamar MarcarTareaCompletada(estados, numTareas, numeroTarea)
4:
Escribir "¡Gracias por usar el gestor de tareas!"
Salir
De Otro Modo:
Escribir "Opción inválida, intente de nuevo"
FinSegun
FinMientras
FinAlgoritmo
// Definición de funciones
SubProceso AgregarTarea(tareas, estados, numTareas Por Referencia, nuevaTarea)
Si numTareas < 5 Entonces
numTareas <- numTareas + 1
tareas[numTareas] <- nuevaTarea
estados[numTareas] <- Falso
Escribir "Tarea agregada: ", nuevaTarea
Sino
Escribir "Error: Lista de tareas llena"
FinSi
FinSubProceso
SubProceso ListarTareas(tareas, estados, numTareas)
Definir i Como Entero
Si numTareas = 0 Entonces
Escribir "No hay tareas en la lista"
Sino
Escribir "Lista de tareas:"
Para i <- 1 Hasta numTareas Hacer
Si estados[i] Entonces
Escribir i, ". ", tareas[i], " (Completada)"
Sino
Escribir i, ". ", tareas[i], " (Pendiente)"
FinSi
FinPara
FinSi
FinSubProceso
SubProceso MarcarTareaCompletada(estados, numTareas, numeroTarea)
Si numeroTarea >= 1 Y numeroTarea <= numTareas Entonces
estados[numeroTarea] <- Verdadero
Escribir "Tarea ", numeroTarea, " marcada como completada"
Sino
Escribir "Error: Número de tarea inválido"
FinSi
FinSubProceso
Cómo ejecutarlo:
- Abre PSeInt.
- Copia el código completo en un nuevo archivo.
- Ejecuta con F9.
- Prueba las opciones:
- Agrega tareas (por ejemplo, "Comprar leche", "Estudiar").
- Lista las tareas.
- Marca una como completada (por ejemplo, tarea 1).
- Sal del programa.
Salida de ejemplo:
=== Gestor de Tareas ===
1. Agregar tarea
2. Listar tareas
3. Marcar tarea como completada
4. Salir
Seleccione una opción:
1
Ingrese el nombre de la tarea:
Comprar leche
Tarea agregada: Comprar leche
=== Gestor de Tareas ===
...
Seleccione una opción:
1
Ingrese el nombre de la tarea:
Estudiar
Tarea agregada: Estudiar
=== Gestor de Tareas ===
...
Seleccione una opción:
2
Lista de tareas:
1. Comprar leche (Pendiente)
2. Estudiar (Pendiente)
=== Gestor de Tareas ===
...
Seleccione una opción:
3
Ingrese el número de la tarea a completar:
1
Tarea 1 marcada como completada
=== Gestor de Tareas ===
...
Seleccione una opción:
2
Lista de tareas:
1. Comprar leche (Completada)
2. Estudiar (Pendiente)
=== Gestor de Tareas ===
...
Seleccione una opción:
4
¡Gracias por usar el gestor de tareas!
Punto clave: Este programa simula una aplicación real, como las que construirás en Laravel con controladores y vistas para gestionar datos.
Reflexión y mejoras (10 minutos)
Explicación:
Ahora que el programa funciona, reflexionemos sobre lo aprendido y posibles mejoras:
- Logros:
- Usaste arrays para almacenar datos.
- Aplicaste condicionales para validar entradas.
- Usaste bucles para recorrer listas.
- Organizaste el código con funciones.
- Mejoras posibles:
- Agregar una función para eliminar tareas.
- Validar que las tareas no estén vacías antes de agregarlas.
- Usar un array bidimensional para más datos (por ejemplo, fecha de creación).
- Estas mejoras las explorarás en módulos futuros con PHP y bases de datos.
Actividad final (5 minutos):
Piensa en una mejora para el programa (por ejemplo, mostrar solo tareas pendientes). Escribe en papel la lógica de una nueva función. Ejemplo:
SubProceso ListarPendientes(tareas, estados, numTareas)
Para i <- 1 Hasta numTareas Hacer
Si estados[i] = Falso Entonces
Escribir i, ". ", tareas[i]
FinSi
FinPara
FinSubProceso
Entregable: Código funcional con al menos 3 funciones
Requisitos:
- Un programa en PSeInt que gestione una lista de tareas con:
- Un array para nombres de tareas y otro para estados (completada/pendiente).
- Al menos tres funciones:
- AgregarTarea: Añade una tarea nueva.
- ListarTareas: Muestra todas las tareas con su estado.
- MarcarTareaCompletada: Cambia el estado de una tarea.
- Un menú interactivo con opciones para usar las funciones.
- El código debe ser funcional y manejar casos básicos (lista vacía, lista llena, entrada inválida).
Instrucciones para completar:
- Usa el código proporcionado como base.
- Prueba todas las opciones del menú para verificar que funcione:
- Agrega al menos 3 tareas.
- Lista las tareas.
- Marca una como completada.
- Intenta casos límite (agregar cuando la lista está llena, marcar una tarea inválida).
- Guarda el código en PSeInt o un editor de texto.
- Opcional: Añade una mejora sencilla (por ejemplo, un mensaje de bienvenida o validación de entradas).
Tiempo estimado: 1 hora dentro de la lección (implementación y pruebas) + 1 hora adicional si quieres personalizar o depurar.
Entregable: Código funcional en PSeInt. Puedes compartir el código o describirlo para que lo revise.
Ejemplo de uso: Como se mostró en la salida de ejemplo, el programa debe permitir agregar tareas, listarlas, marcarlas como completadas y salir, con mensajes claros y sin errores.
Consejo: Ejecuta el programa varias veces y prueba errores (por ejemplo, ingresar una opción inválida) para entender cómo responde.