Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Solucionado (ver solución)
Solucionado
(ver solución)
5
respuestas

10 ¿Será qué puedo conducir? - Consulta

Hola! Quisiera hacer la siguiente consulta, antes de ver la resolución del profesor. Realice el ejercicios de la siguiente forma:

<meta charset="UTF-8">

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

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

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


if(edad >=  18 && tieneLicencia == "S") {
    tieneLicencia == "S";
    imprimir("puede conducir");
} else {
    if (tieneLicencia = "N");
    imprimir("no puede conducir");
}


</script>

Pero en la resolucion el profesor el if: *if((edad >= 18) && (tieneLicencia == "S")) { *

Es decir, pone doble paréntesis, en el if, yo lo puse con uno solo: if(edad >= 18 && tieneLicencia == "S") {

Y aparentemente funciona... jaja, pero queria saber si es mala practica hacer esto. Gracias!

5 respuestas

Realmente si, ya que al separarlo por los paréntesis, en el If te hace 2 comprobaciones

(edad >= 18)  && (tieneLicencia == "S")

en este caso, si las 2 condiciones son correctas. El if la evalúa como true, pero si solo tienes esta condición

(edad >= 18 && tieneLicencia == "S")

solo hace 1 comprobación. Espero no estar equivocado y poder resolver tu duda :)

solución!

Es correcto lo que te comenta el compañero de arriba, sin embargo se podría dar el caso de que una persona tenga 18 años pero no tenga licencia de conducir, por lo que a mi opinión lo más optimo es preguntar por la licencia luego de comprobar la edad.

var edad = parseInt(prompt("¿Cuál es tu edad?"));

    if (edad >= 18) {
        var tieneLicencia = prompt("¿Tienes licencia? Responde S o N");

        if (tieneLicencia == "S") {
            imprimir("Puedes conducir.");
        }
        else{
            imprimir("No puedes conducir.");
        }
    } else{
        imprimir("No puedes conducir.");
    }

No hay que olvidar que pueden responder con mayúscula o minúscula. Yo lo hice de la siguiente manera:

if(edad>=18 && tieneLicencia.toUpperCase() == "S"){ imprimir("Puede conducir") } else { imprimir("No puede conducir") }

Es completamente correcto preguntar sin paréntesis el operador lógico && será true solamente si todas son correctas, con los paréntesis es igual si no los tiene. Quizá lo que puede considerar la lógica el programador es solo preguntar por la licencia a los mayores de edad tal como lo hace Benjamín con el cual comparto su lógica.

(edad >=  18 && tieneLicencia == "S")
// es equivalente a
(edad >=  18) && (tieneLicencia == "S")

// para considerar responder en mayúsculas o minúsculas es mejor
((edad >=  18 && tieneLicencia == "S") || (edad >=  18 && tieneLicencia == "s") )

o como lo hizo Ramiro, que también se puede haber hecho en el ingreso como:

var tieneLicencia=prompt("Tiene licencia "S" o "N": ).toUpperCase()

Muchas Gracias a todos por sus aportes! Saludos!