Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
5
respuestas

[Duda] Desafio Loteria

Hola tengo una duda no pude hacer el código por mi cuenta así que tuve que ver los pasos del instructor pero no entendí por que en un paso ponía la función return y al ultimo la quito, alguien podría explicarme? Gracias (Dejo ambos códigos para comparación)

<meta charset="UTF-8">

<h1>PROGRAMA JUEGO DE ADIVINACION </h1>

<script>

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

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

    function sorteo(n) { 
            return Math.round(Math.random()*n);
        }   

    var numeroPensado = sorteo(10);
    var numeroLanzado = parseInt(prompt("Ingrese un número entre 0-10"))

    if (numeroPensado == numeroLanzado){
        imprimir("usted acertó");
    }
    else {
        imprimir("usted erró, el número pensado era " + numeroPensado);    
    }

</script>
5 respuestas

Y este es como queda el codigo pero sin return 7 con la variante cambiada

<meta charset="UTF-8">

<h1>PROGRAMA JUEGO DE ADIVINACION </h1>

<script>

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

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

    var numeroPensado = Math.round(Math.random()*10);
    var numeroLanzado = parseInt(prompt("Ingrese un número entre 0-10"))

    if(numeroPensado == numeroLanzado){
        imprimir("usted acertó")
    }
    else{
        if (numeroLanzado > numeroPensado){
            imprimir("usted erró, el número pensado era menor que tu número”);
        } 
        else{
            imprimir("usted erró, el número pensado era mayor que tu número”);
        }
    }

</script>

En el primer código se obtiene un número aleatorio entre 0 y 10 mediante un función, a la cual llamó sorteo(n), "n" es el parámetro que recibe la función, la cual se define más abajo, en la línea "var numeroPensado = sorteo(10);". En el segundo código se crea este numero aleatorio mediante una variable "var numeroPensado = Math.round(Math.random()10);" la diferencia entre ambos es que en el primer código tu puedes crear números aleatorios de mas rango (Esto depende del parámetro que le envías), es decir que si a sorteo, le pones el parámetro de 100, (sorteo(100)), este genera números aleatorios entre 0 y 100, en cambio en el segundo código, se puede decir que los números aleatorios son fijos, es decir que solo se obtiene entre 0 y 10. La función sorteo(10) tiene que devolver un número aleatorio por eso se pone la palabra reservada "return". En el segundo código se quita esa palabra porque no se esta creando el número aleatorio mediante una función.

A lo que yo entiendo, es que en el primer caso se está haciendo uso de una función que me regresará un número aleatorio entre 0 y n (n se define más adelante en "var numeroPensado"). Mientras que en el segundo caso, en lugar de usar una función y el valor que me devuelve esta, se utiliza directamente una variable en donde ya defino el valor de "n". Pienso que ambas formas llevan a lo mismo, simplemente que en el segundo caso nos ahorramos de escribir algunas líneas en el código. P.D. Corríjanme si estoy mal, soy re principiante en esto jiji.

Según tengo entendido (y he probado) sin el return, no te va a reconocer el resultado, saldría indefinido porque aunque se haya pedido que se genere, no lo "guardó", puedes probar con el ejemplo que hice:

PROGRAMA SORTEO

Quítale algunas líneas o cambia el orden, si le quitas el return saldrá indefinido aunque en realidad el juego de adivinanza siga corriendo de forma normal.

Dos formas de llamr la func ión: Return n; o sorteo();. Las dos hacen lo mismo