1
resposta

[Projeto] Desafio: Automatizando tarefas

Inicio
    // Obter os horários de início e fim da transmissão, e também de entrada e saída do usuário. 
    obter(horarioInicio, horarioFim)
    obter(horarioEntrada, horarioSaida)

    // Comparar os horários
    comparar(horarioEntrada, horarioInicio)
    comparar(horarioSaida, horarioFim)

    // Enviar o e-mail.
    se(entradaOk && saidaOk):
        enviarEmail(agradecimento, usuario)
1 resposta

Olá, Pedro Henrique. Como vai?

Parabéns por concluir mais um desafio! Você aplicou de forma muito eficaz os conceitos de Decomposição e Algoritmos, transformando um processo manual de verificação em uma regra lógica clara e automatizável.

Sua abordagem de comparar separadamente a entrada e a saída é excelente para garantir que o usuário participou do evento na íntegra. Na programação, essa lógica de "uma coisa E outra" é o que chamamos de Operador Lógico AND ($&&$).

Gostaria de destacar alguns pontos interessantes para você refletir sobre seu algoritmo:

  • Lógica Booleana: Quando você usa entradaOk && saidaOk, o computador só executará a ação se ambas as condições forem verdadeiras. Se o usuário entrou no horário mas saiu cedo, o resultado será falso, e o e-mail não será enviado.
  • Abstração de Comparação: Você usou a função comparar. No mundo real da programação, essa comparação geralmente é feita com operadores matemáticos, verificando se o horário de entrada é menor ou igual ao início do evento.

Dica de Refinamento:

Em sistemas de eventos reais, é comum trabalharmos com o tempo de permanência em minutos, em vez de apenas os horários fixos. Isso porque o usuário pode ter entrado 2 minutos atrasado, mas o organizador ainda quer enviar o e-mail de agradecimento.

Veja como sua lógica poderia ser escrita de forma um pouco mais detalhada para lidar com horários:

Inicio
    obter(entrada, saida, inicioEvento, fimEvento)

    // Verifica se a entrada foi ANTES ou NO MOMENTO do início
    // E se a saída foi DEPOIS ou NO MOMENTO do fim
    se (entrada <= inicioEvento) E (saida >= fimEvento):
        enviarEmail(agradecimento, usuario)
    senao:
        // Opcional: registrar que o usuário não completou o evento
Fim

Essa base lógica que você está construindo é o que permite a criação de sistemas complexos de certificação e automação de marketing!

Espero que possa ter lhe ajudado!

Você já pensou em como lidaria com um usuário que caiu da conexão no meio do evento e voltou depois? Como você alteraria sua lógica para somar o tempo total de permanência?