If you're seeing this message, it means we're having trouble loading external resources on our website.

Si estás detrás de un filtro de páginas web, por favor asegúrate de que los dominios *.kastatic.org y *.kasandbox.org estén desbloqueados.

Contenido principal

Procedimientos con valores de retorno

Los procedimientos pueden calcular valores para que el resto del programa los use, al regresar valores devueltos.

La necesidad de devolver valores

Nuestros procedimientos de ejemplo hasta ahora han tenido efectos laterales. Eso significa que afectaron a su entorno de alguna manera, como cuando println() muestra la salida en la pantalla.
var score  = (numCorrect/30) * 100;
println(score);
Muchas veces, no queremos mostrar un valor inmediatamente en la pantalla. En su lugar, queremos recordar el resultado de un cálculo y utilizarlo en el futuro de alguna manera. En ese caso, le decimos al procedimiento que devuelva un valor al código que lo llamó.
En el lenguaje JavaScript, podemos devolver valores de una función mediante return seguido de una expresión a devolver.
function calcScore(numCorrect) {
   var score  = (numCorrect/30) * 100;
   return score;
}
Ahora que la función devuelve un valor, podemos almacenar su resultado en una variable, así:
var sallyScore = calcScore(27);
var wilburScore = calcScore(24);
También podemos llamar directamente a la función dentro de otras funciones:
println(calcScore(27));
println(calcScore(24));
O podemos llamar a la función dentro de una expresión más grande:
println("Sally earned: " + calcScore(27));
println("Wilbur earned: " + calcScore(24));
📝 Mira código similar en: App Lab | Snap | Python
Nuestra llamada a calcScore() siempre devuelve un valor, así que podemos usarla donde sea que se espera un valor. ¡Esos son muchos lugares!
De hecho, ya hemos usado varios procedimientos incorporados que devuelven valores, como las operaciones matemáticas y de cadenas:
var maxNum = Math.max(33, 100);
var firstName = "Harry Potter".substr(0, 5);
var yell = "im hungry".toUpperCase();`
Ahora sabemos cómo definir nuestros propios procedimientos con valores devueltos, y podemos construir una biblioteca de procedimientos útiles que calculen valores para nuestro programa.
✏️ El siguiente programa calcula cuántos "yo" ("me") deben apilarse para alcanzar ciertas alturas, como la luna o la estatua de la libertad. Cambia para calcular el número de "tú" en su lugar y añade otra estructura, como el Monte Everest o el sol.
📝 Mira código similar en: App Lab | Snap | Python

Cuidado con devoluciones antes de tiempo

El siguiente fragmento de código tiene un error:
function calcLineSlope(x1, y1, x2, y2) {
    var yDiff = y2 - y1;
    var xDiff = x2 - x1;
    return slope;
    var slope = yDiff / xDiff;
}
¿Ves cuál es? Aquí hay una pista: tan pronto como la computadora ejecute una instrucción return, sale de la función. Al salir de la función, ya no ejecuta más código en la función.
Eso significa que la computadora solo ejecuta este código:
function calcLineSlope(x1, y1, x2, y2) {
    var yDiff = y2 - y1;
    var xDiff = x2 - x1;
    return slope;
}
Nunca llega a la línea que calcula la pendiente, así que devuelve un valor indefinido a quien la llame. La línea de código después de eso es "código muerto", que nunca ejecutará.
En la versión correcta del código, el comando return es la última línea de la función:
function calcLineSlope(x1, y1, x2, y2) {
    var yDiff = y2 - y1;
    var xDiff = x2 - x1;    
    var slope = yDiff / xDiff;
    return slope;
}
📝 Mira código similar en: App Lab | Snap | Python

Devolver valores en pseudocódigo

Este pseudocódigo representa un procedimiento que toma dos parámetros llamados parámetro1 y parámetro2, contiene instrucciones de programación, y luego devuelve el valor de expresión.
PROCEDURE nombre (parámetro1, parámetro2)
{
     <instrucciones>
    RETURN (expresión)
}
Este es pseudocódigo para el procedimiento y llamadas a calcLineSlope:
PROCEDURE calcLineSlope (x1, y1, x2, y2) 
{
    yDiff ← y2 - y1
    xDiff ← x2 - x1    
    slope ← yDiff / xDiff
    RETURN slope
}

slope1 ← calcLineSlope(1, 2, 4, 5)
slope2 ← calcLineSlope(0, -1, 3, 10)

🙋🏽🙋🏻‍♀️🙋🏿‍♂️¿Tienes alguna pregunta sobre este tópico? Nos encantaría contestarte; ¡simplemente pregunta en el area de preguntas abajo!