Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

Desafío: Automatizando tareas

“Queremos automatizar el envío de agradecimientos. Pero solo para quienes vieron la transmisión de principio a fin. ¿Puedes organizar este proceso en un algoritmo?”

Considera:

¿Cuáles son los datos de entrada necesarios?
los datos de entrada serian El usuario registrado, hora de entrada y salida
¿Cómo puede el algoritmo verificar la condición de asistencia completa?
verificar si estuvo desde el inicio hasta el final

¿Qué decisión necesita tomarse con base en esos datos?
decidir si cumple con la asistencia o no

¿Cuál debe ser la acción final?
enviar el correo si si cumple, si no, no enviar nada

1.- el usuario entra al sistema con su usuario y contraseña
2.- el usuario hace clic en la opcion para entrar a la transmision en linea
3.- cuando se abre la transmision, el sistema registra al usuario usuario y guarda la hora en la que entro
4.- cuando la transmision termina, el sistema registra la hora en la que finalizo el evento
5.- el sistema verifica que usuarios entraron desde el inicio hasta el final de la transmision y cuales siguieron conectados hasta el final
6.- si un usuario estuvo conectado desde el inicio hasta el final, el sistema envia en automatico un correo de agredecimiento
7.- si el usuario entro tarde, salio antes de que terminara la transmision o no ingreso al evento, no se enviara ningun correo.

1 respuesta

¡Hola, Luis Enrique! ¿Cómo estás?

Muy buen trabajo con el desafío. Tu algoritmo se lee con claridad y, sobre todo, hiciste algo que mucha gente olvida: describiste explícitamente el caso negativo en el paso 7 (entró tarde, salió antes o no ingresó). Definir qué pasa cuando la condición no se cumple es justamente lo que evita que un algoritmo quede a medias. También separaste bien las etapas: captura de datos (pasos 3 y 4), verificación (5) y acción (6 y 7), que es exactamente la lógica de entrada → procesamiento → salida.

Te dejo algunos puntos para profundizar:

1. Faltan dos datos de entrada
Dijiste que hay que verificar si el usuario "estuvo desde el inicio hasta el final", pero para comparar necesitas también la hora de inicio de la transmisión, no solo la de finalización. Sin ese dato, el sistema no tiene contra qué comparar la hora de entrada del usuario. Y como la acción final es enviar un correo, el email del usuario también es un dato de entrada indispensable.

2. La condición puede quedar más precisa
El paso 5 dice dos cosas que se superponen ("quiénes entraron desde el inicio hasta el final y cuáles siguieron conectados hasta el final"). Intenta expresarlo como una única condición con dos partes unidas por Y:

hora_entrada ≤ inicio_transmisión Y hora_salida ≥ fin_transmisión

3. Piensa en el mundo real: tolerancia y reconexiones
¿Qué pasa si alguien entró 30 segundos tarde? ¿O si se le cayó el internet a mitad de la charla y volvió a entrar? En ese segundo caso el usuario no tiene una hora de entrada y una de salida, sino varias sesiones. Dos formas de resolverlo: definir un margen de tolerancia (por ejemplo, 2 minutos) o calcular el tiempo total conectado y exigir un porcentaje mínimo, digamos el 90% de la duración del evento. No hay una respuesta única, pero anticipar estos casos es parte de la abstracción.

4. Recuerda la repetición
Tu algoritmo describe el proceso para un usuario, y el desafío habla de todos los asistentes. Ahí entra una estructura de repetición. Podrías escribirlo así en pseudocódigo:

PARA CADA usuario EN lista_de_participantes:
    SI usuario.hora_entrada <= inicio_transmision + tolerancia
       Y usuario.hora_salida >= fin_transmision - tolerancia ENTONCES
        enviar_correo(usuario.email, "¡Gracias por acompañarnos!")
    FIN SI
FIN PARA

Un detalle menor: los pasos 1 y 2 describen acciones del usuario, no del sistema. Son un buen contexto, pero el algoritmo que automatizas realmente empieza en el paso 3. Distinguir entre lo que hace la persona y lo que hace el programa te va a servir muchísimo más adelante.

Ya estás aplicando bien los pilares del pensamiento computacional: descompusiste el problema en pasos y reconociste el patrón de la condición. Sigue así.

¡Abrazo y buenos estudios!