"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Puedo conducir? Codificación de un alcoholímetro

¿Puedo conducir? Codificación de un alcoholímetro

Publicado el 2024-11-18
Navegar:258

En Dinamarca, donde vivo, desgraciadamente tenemos un récord en Europa: nuestros hijos son los mayores bebedores de alcohol del continente. Debido a esto, hay un fuerte enfoque en reducir el consumo de alcohol entre los jóvenes y educar a los niños sobre los efectos del alcohol.

Preparé una calculadora de alcohol en HTML y JavaScript para nuestra escuela local para mostrar a los estudiantes cómo el alcohol afecta al cuerpo y cómo se calcula el contenido de alcohol en sangre (BAC).

¿Cómo se calcula el BAC?

Para estimar el BAC o "promille", necesita algunos datos clave:

  • Tu peso corporal – ya que un cuerpo más grande puede diluir el alcohol más que uno más pequeño.
  • Género biológico – debido a diferentes niveles de contenido de agua corporal, que afectan la distribución del alcohol en el cuerpo.
  • El número de unidades de alcohol consumidas – porque cada tipo de bebida tiene una concentración de alcohol diferente.

Calcular las unidades de alcohol

Las diferentes bebidas aportan diferentes cantidades de alcohol al torrente sanguíneo, dependiendo de su volumen y concentración de alcohol. Para estandarizar esto, el cálculo de la unidad de alcohol generalmente se realiza de la siguiente manera:

volume (cl) * alcohol percentage * 0.8 / 120

Estructura

La "aplicación" completa está estructurada como un con conjuntos de campos organizados y controles con nombre, lo que facilita la extracción de los elementos necesarios con:

const { add, addbeverage, etc. } = app.elements;

Dado que los límites de BAC varían según la región, primero debemos seleccionar una región, ajustar el control deslizante de peso y elegir un género biológico:

Can I Drive? Coding an Alcohol Tester


A continuación, podemos comenzar a agregar bebidas:

Can I Drive? Coding an Alcohol Tester

Este es un

simple, donde los campos individuales para unidades, volumen y porcentaje de alcohol están deshabilitados (y ocultos mediante CSS), hasta que hagas una selección en el selector de bebidas:

Can I Drive? Coding an Alcohol Tester

La visibilidad de estos campos se controla desde una función enableElements:

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

Cuando luego agregamos la bebida, se crea una lista de bebidas consumidas y se calcula el BAC, las horas estimadas para recuperar la sobriedad, etc.:

Can I Drive? Coding an Alcohol Tester

Luego podrás continuar agregando más bebidas y el BAC se actualizará en consecuencia:

Can I Drive? Coding an Alcohol Tester

Fue muy sorprendente para mí saber que el BAC legal en los EE. UU. es 4 veces mayor que el de Suecia o Noruega.

En otras palabras, en Suecia, podrías perder tu licencia por beber una cantidad que estaría legalmente permitida en los EE. UU.


Desglosando el cálculo del BAC

El cálculo principal de BAC se maneja en la función calcularRespuesta:

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 a desglosarlo:

  1. Tasa de metabolismo del alcohol: tasa de metabolismo del alcohol = 0,015

    • Este valor representa la tasa promedio a la que el cuerpo reduce el BAC por hora (aproximadamente 0,015 %).
  2. Calculando el BAC actual: currentBAC = ((total * 10) / ((weight.valueAsNumber * 1000) * parseFloat(bodywater.value))) * 100

    • total * 10: Esto convierte el total de unidades de alcohol consumidas en gramos (ya que una unidad equivale aproximadamente a 10 gramos de alcohol puro).
    • weight.valueAsNumber * 1000: Convierte el peso corporal de kilogramos a gramos para fines de cálculo.
    • bodywater.value: un factor decimal basado en el género biológico, que afecta la forma en que se distribuye el alcohol en el cuerpo (p. ej., 0,58 para hombres, 0,49 para mujeres).
    • El resultado luego se multiplica por 100 para convertir BAC a un porcentaje.
  3. Estimación de horas para estar sobrio: hoursToSober = (currentBAC / alcoholMetabolismRate).toFixed(1);

    • Divide el BAC actual por la tasa de metabolismo para estimar el tiempo necesario para que el BAC llegue a cero.
  4. Determinación del estado de conducción legal: canDrive = currentBAC

    • Compara el BAC actual con el límite de BAC legal seleccionado. Si el BAC actual está dentro del límite, se considera que el usuario está "apto para conducir"; de lo contrario, no lo son.

La función calcularAnswer luego combina estos valores en un mensaje que muestra el BAC actual, las horas hasta que esté sobrio y si el usuario está en condiciones de conducir.


… Y eso concluye este tutorial. Siéntase libre de experimentar con CodePen si lo desea, tal vez creando una experiencia de usuario más amigable para los niños. Solo recuerde, esta herramienta proporciona una estimación y no tiene en cuenta factores como el tiempo en que consumió cada bebida. ¡Y tenga en cuenta que lo más probable es que lo utilicen personas sobrias!


Manifestación


Portada de DALL·E, desde el mensaje: Generar un auto borracho en un estilo caricaturesco similar a los primeros Disney y Cupheads, como una imagen que puedo recortar a 1000x420px.

Declaración de liberación Este artículo se reproduce en: https://dev.to/madsstoumann/can-i-drive-coding-an-alcohol-tester-163g?1 Si hay alguna infracción, comuníquese con [email protected] para eliminarla.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3