Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

¿Será qué puedo conducir? Usando una función y clausulas de guarda

Yo me decidí por crear una función que compruebe las condiciones para saber si soy apto para conducir. En este caso utilicé una buena practica que me encontré por internet que es utilizar las clausulas de guarda para evitar anidar las condicionales. Queda más limpio y legible. Me quedaré con esa buena practica.

<meta charset="UTF-8">

<h3> Puedes condicir? </h3>

<script>
    function saltarLinea() {
        document.write("<br>");
    }

    function imprimir(frase) {
        document.write(frase);
        saltarLinea();
    }

    function comprobarConduccion(edad, tieneLicencia){
        if(edad < 18) return imprimir("No puedes conducir");
        if(tieneLicencia.toLowerCase() != "s") return imprimir("No puedes conducir");

        return imprimir("Puedes conducir");
    }

    var edad = parseInt(prompt("¿Cuál es tu edad?"));
    var tieneLicencia = prompt("¿Tienes licencia? Responde S o N");

   comprobarConduccion(edad, tieneLicencia);

</script>
1 respuesta

¡Hola Carlos!

Me parece genial que hayas utilizado las cláusulas de guarda para hacer tu código más legible.

En cuanto a tu función, veo que estás comprobando dos condiciones para determinar si puedes conducir: tu edad y si tienes licencia. La función parece estar funcionando correctamente, pero te sugiero que añadas una tercera condición para comprobar si la respuesta a la pregunta de tener licencia es "S" o "N". En caso de que la respuesta no sea ninguna de esas dos opciones, la función imprimirá "No puedes conducir", lo cual no es correcto.

Para solucionar esto, puedes añadir otra cláusula de guarda después de la segunda, que compruebe si la respuesta es diferente a "S" y diferente a "N". Si es así, la función imprimirá un mensaje de error.

Aquí te dejo el código con la tercera cláusula de guarda añadida:

function comprobarConduccion(edad, tieneLicencia){
    if(edad < 18) return imprimir("No puedes conducir");
    if(tieneLicencia.toLowerCase() != "s" && tieneLicencia.toLowerCase() != "n") return imprimir("Respuesta inválida. Introduce S o N.");
    if(tieneLicencia.toLowerCase() != "s") return imprimir("No puedes conducir");

    return imprimir("Puedes conducir");
}

Espero que te sea de ayuda. ¡Buenos estudios!

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios!