Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

2
respostas

Desafio: Automatizando tarefas

Dados de entrada

-Da live: horário de início e horário de término da transmissão.
-De cada usuário: horário de entrada e horário de saída (além do login já existente, que identifica o participante e seu e-mail).
-Uma lista de participantes, com esses dados de entrada e saída registrados para cada um.

Algoritmo

1-Obter o horário de início e o horário de término da live.
2-Para cada participante da lista de participantes, repetir os passos 3 e 4.
3-Verificar a condição de presença completa: o horário de entrada do participante é igual ou anterior ao início da live, e o horário de saída é igual ou posterior ao término da live.
4-Tomar a decisão com base nessa verificação:
-Se a condição for verdadeira, enviar o e-mail de agradecimento para esse participante.
-Se a condição for falsa, não enviar o e-mail.
5-Repetir os passos 3 e 4 até que todos os participantes da lista tenham sido verificados.

2 respostas

Oi, Raphael. Tudo bem com você?

Você mandou muito bem na resolução do desafio automatizando tarefas. A estrutura que você montou para processar a lista de participantes e verificar o tempo de permanência na transmissão ao vivo atende perfeitamente à lógica solicitada pela atividade. A separação clara entre os dados necessários de entrada e as etapas do algoritmo demonstra uma excelente aplicação dos fundamentos da computação sem complicação.

Quando trabalhamos com dados de tempo em eventos digitais, pensar em exceções torna a lógica ainda mais robusta. Por exemplo, se uma live estipula início às 19h00 e encerramento às 20h00, um usuário que ingressou às 19h00 e caiu por um minuto às 19h30 por oscilação na conexão poderia ser impactado caso o sistema considerasse apenas o horário final gravado na saída. Em cenários reais de eventos online, calcular o tempo total acumulado em minutos costuma ser uma alternativa interessante para lidar com essas pequenas oscilações sem penalizar quem acompanhou quase toda a transmissão.

Como você acha que poderíamos adaptar esse algoritmo para calcular a margem de tolerância ou lidar com usuários que entram e saem várias vezes durante a transmissão?

Parabéns pelo excelente trabalho no desenvolvimento da solução e por compartilhar o seu progresso aqui no fórum. Continue postando suas resoluções e dúvidas por aqui, o fórum está sempre à sua disposição.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!

Entendi os dois pontos. Ajustei o algoritmo assim:

Dados de entrada (atualizados)

Da live: duração total da transmissão.
De cada usuário: uma lista de sessões de conexão, cada uma com seu horário de entrada e horário de saída (um usuário pode ter mais de uma sessão, caso tenha se desconectado e reconectado durante a live).

Verificação da presença completa

Para cada usuário, somamos a duração de todas as suas sessões de conexão, obtendo o tempo total que ele ficou conectado à live. Em seguida, comparamos esse tempo total com uma margem de tolerância de 90% da duração total da live. Se o tempo conectado for igual ou superior a essa margem, o usuário é considerado presente. Essa margem evita penalizar quem perdeu poucos minutos por oscilação de conexão, sem abrir mão de um critério rigoroso.

Algoritmo final
1- Obter a duração total da live.
2- Calcular o valor da margem mínima de presença (90% da duração total da live).
3- Para cada participante da lista de participantes, repetir os passos 4 e 5.
4- Somar a duração de todas as sessões de conexão desse participante, obtendo o tempo total conectado.
5- Verificar a condição: o tempo total conectado é igual ou superior à margem mínima de presença?
- Se sim, enviar o e-mail de agradecimento.
- Se não, não enviar o e-mail.
6- Repetir os passos 4 e 5 até que todos os participantes tenham sido verificados.

Só para explicar, coloquei uma margem de 90% porque antes estava colocando de 95% mas percebi que ficaria muito rigida, por exemplo, se a live fosse de 60 minutos, 95% daria 57 minutos e imagine que somando todas as sessões do usuário desse 55 minutos, não se enquadrava para receber o e-mail, colocando 90% da em torno de 54 minutos.

Agradeço o retorno, ajudou a enxergar algo em que não estava percebendo, e com essa visão conseguimos deixar o algoritmo mais realista para um cenário com oscilação de conexão!