"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Posso dirigir? Codificando um testador de álcool

Posso dirigir? Codificando um testador de álcool

Publicado em 2024-11-18
Navegar:289

Na Dinamarca, onde moro, infelizmente detemos um recorde na Europa: nossos filhos são os que mais bebem álcool no continente. Por causa disso, há um forte foco na redução do consumo de álcool entre os jovens e na educação das crianças sobre os efeitos do álcool.

Eu montei uma calculadora de álcool em HTML e JavaScript para nossa escola local para mostrar aos alunos como o álcool afeta o corpo e como o teor de álcool no sangue (TAS) é calculado.

Como o BAC é calculado?

Para estimar TAS ou "promille", você precisa de algumas informações importantes:

  • Seu peso corporal – já que um corpo maior pode diluir mais o álcool do que um corpo menor.
  • Gênero biológico – devido aos diferentes níveis de conteúdo de água corporal, que afetam a distribuição do álcool no corpo.
  • A quantidade de unidades alcoólicas consumidas – pois cada tipo de bebida tem uma concentração de álcool diferente.

Cálculo de unidades de álcool

Bebidas diferentes contribuem com diferentes quantidades de álcool para a corrente sanguínea, dependendo do volume e da concentração de álcool. Para padronizar isso, a unidade de cálculo do álcool normalmente é feita da seguinte forma:

volume (cl) * alcohol percentage * 0.8 / 120

Estrutura

Todo o "aplicativo" é estruturado como um

com conjuntos de campos organizados e controles nomeados, facilitando a extração dos elementos necessários com:
const { add, addbeverage, etc. } = app.elements;

Como os limites de TAS variam de acordo com a região, precisamos primeiro selecionar uma região, ajustar o controle deslizante de peso e escolher um gênero biológico:

Can I Drive? Coding an Alcohol Tester


Em seguida, podemos começar a adicionar bebidas:

Can I Drive? Coding an Alcohol Tester

Este é um

simples, onde os campos individuais para unidades, volume e porcentagem de álcool são desabilitados (e ocultados via CSS), até que você faça uma seleção no seletor de bebidas:

Can I Drive? Coding an Alcohol Tester

A visibilidade desses campos é controlada a partir de uma função enableElements:

[percentage, units, volume].forEach(el => el.disabled = !bool);

Quando então adicionamos a bebida, uma lista de bebidas consumidas é criada e o TAS, horas estimadas para ficar sóbrio, etc., são calculados:

Can I Drive? Coding an Alcohol Tester

Você pode então continuar adicionando mais bebidas, e o TAS será atualizado de acordo:

Can I Drive? Coding an Alcohol Tester

Foi muito surpreendente para mim saber que o TAS legal nos EUA é 4x maior do que o da Suécia ou da Noruega!

Em outras palavras, na Suécia, você pode perder sua licença por beber uma quantidade que seria legalmente permitida nos EUA


Dividindo o cálculo do BAC

O cálculo principal do BAC é tratado na função calculaAnswer:

function calculateAnswer() {
  const alcoholMetabolismRate = 0.015;
  const currentBAC =
    ((total * 10) /
      (weight.valueAsNumber *
        1000 *
        parseFloat(bodywater.value))) *
    100;
  const hoursToSober = (
    currentBAC / alcoholMetabolismRate
  ).toFixed(1);
  const canDrive =
    currentBAC 



Vamos detalhar:

  1. Taxa de metabolismo do álcool: taxa de metabolismo do álcool = 0,015

    • Este valor representa a taxa média na qual o corpo reduz a TAS por hora (aproximadamente 0,015%).
  2. Calculando BAC atual: currentBAC = ((total * 10) / ((weight.valueAsNumber * 1000) * parseFloat(bodywater.value))) * 100

    • total * 10: Converte o total de unidades de álcool consumidas em gramas (já que uma unidade equivale a cerca de 10 gramas de álcool puro).
    • weight.valueAsNumber * 1000: Converte o peso corporal de quilogramas em gramas para fins de cálculo.
    • bodywater.value: um fator decimal baseado no gênero biológico, que afeta a forma como o álcool se distribui no corpo (por exemplo, 0,58 para homens, 0,49 para mulheres).
    • O resultado é então multiplicado por 100 para converter o BAC em uma porcentagem.
  3. Estimativa de horas para sóbrio: hoursToSober = (currentBAC / AlcoholMetabolismRate).toFixed(1);

    • Divide a TAS atual pela taxa de metabolismo para estimar o tempo necessário para a TAS chegar a zero.
  4. Determinando o status legal de direção: canDrive = currentBAC

    • Compara o TAS atual com o limite de TAS legal selecionado. Se a TAS atual estiver dentro do limite, o usuário é considerado “apto para dirigir”; caso contrário, eles não são.

A função calculaAnswer então combina esses valores em uma mensagem que mostra a TAS atual, horas até ficar sóbrio e se o usuário está apto para dirigir.


… E isso conclui este tutorial. Sinta-se à vontade para experimentar o CodePen se desejar – talvez criando uma UX mais adequada para crianças. Lembre-se de que esta ferramenta fornece uma estimativa e não leva em consideração fatores como o tempo que você consumiu cada bebida. E lembre-se, provavelmente será usado por pessoas sóbrias!


Demonstração


Capa de DALL·E, a partir do prompt: Gere um carro bêbado em um estilo de desenho animado semelhante aos primeiros Disney e Cupheads, como uma imagem que posso cortar para 1000x420px.

Declaração de lançamento Este artigo foi reproduzido em: https://dev.to/madsstoumann/can-i-drive-coding-an-alcohol-tester-163g?1 Se houver alguma violação, entre em contato com [email protected] para excluí-la
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3