2
respostas

Desafio: Automatizando tarefas

Vamos pensar nesse problema de forma estruturada, seguindo a lógica do pensamento computacional.

Dados de entrada necessários

Para que o algoritmo funcione, precisamos de três informações principais: a duração total da transmissão ao vivo, e para cada participante: seu nome, e-mail, horário em que entrou na transmissão e horário em que saiu.

Verificar a condição de presença completa

A condição central é calcular quanto tempo cada pessoa ficou conectada e comparar esse valor com a duração total do evento. O cálculo é simples: tempo assistido = horário de saída menos horário de entrada. Se esse resultado for igual ou maior que a duração total da transmissão, a pessoa esteve presente do início ao fim.

Algoritmo em linguagem natural

Definir a duração total da transmissão com base no horário de início e de fim do evento.

Para cada participante na lista, fazer o seguinte: calcular o tempo assistido subtraindo o horário de entrada do horário de saída; em seguida, verificar se esse tempo assistido é maior ou igual à duração total da transmissão; se a condição for verdadeira, enviar um e-mail de agradecimento para o endereço daquele participante; caso contrário, não realizar nenhuma ação e passar para o próximo participante.

Repetir esse processo até que todos os participantes da lista tenham sido avaliados.

Na prática, é comum que uma mesma pessoa entre e saia várias vezes durante uma live — por queda de conexão, por exemplo. Um algoritmo mais robusto somaria todos os intervalos de presença de cada participante antes de comparar com a duração total. Para uma solução júnior e inicial, a abordagem do instrutor já resolve bem o caso mais comum, e essa evolução pode ser implementada em uma próxima versão.

2 respostas

Olá, Rômulo. Como vai?

Sua análise está excelente e demonstra uma visão muito madura sobre como projetar soluções automatizadas! Você não apenas resolveu o desafio, mas também antecipou problemas do mundo real, como as quedas de conexão, o que enriquece muito a discussão.

  • A sua abordagem de calcular o tempo total (saída - entrada) é uma aplicação prática de lógica matemática dentro do algoritmo para gerar um dado derivado.
  • O fato de você ter mencionado a soma de intervalos mostra que você já está pensando em agregação de dados, um conceito avançado que tornaria o sistema muito mais resiliente e justo para o usuário final.
  • A estrutura de repetição que você descreveu permite que o processo seja executado para milhares de pessoas com o mesmo esforço de uma única execução, evidenciando o poder da escalabilidade. *

Essa percepção de que um algoritmo pode ser "evolutivo" é fundamental no desenvolvimento de software. Começamos resolvendo o cenário principal (happy path) e, aos poucos, adicionamos camadas de complexidade para lidar com as exceções que você citou. Parabéns pelo raciocínio clínico!

Espero que possa ter lhe ajudado!

Obrigado pelo feedback!