Contenido principal
Principios de ciencias de la computación avanzados (AP Computer Science Principles)
Curso: Principios de ciencias de la computación avanzados (AP Computer Science Principles) > Unidad 3
Lección 6: ProcedimientosProcedimientos 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));
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.
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;
}
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!
¿Quieres unirte a la conversación?
Sin publicaciones aún.