Funciones y pila de llamadas – parámetros, valores de retorno y ámbito

InformáticaAlgoritmos y resolución de problemasEdades 15–16

Usar con mi clase ✨ Personalizar con IA Informar de un problema

Ejecuta paso a paso programas que llaman a procedimientos y funciones y observa cómo cada llamada apila un marco: argumentos asignados a parámetros, variables locales y el valor de retorno que vuelve a la línea que llamó. Compara variables locales y globales, paso por valor y por referencia, y recursión en Python o pseudocódigo. Un modo biblioteca te deja llamar a rutinas predefinidas para explorar firmas y abstracción.

Lección: Subprogramas: procedimientos, funciones, parámetros y ámbito

Qué muestra

Un subprograma es un bloque de código con nombre que se puede llamar muchas veces. Al llamarlo, el ordenador apila un marco con sus parámetros y variables locales; los argumentos se asignan a los parámetros, y return devuelve un valor y desapila el marco. Las variables locales solo existen durante la llamada y pueden ocultar variables globales con el mismo nombre. La recursión apila muchos marcos de la misma función. Las rutinas de biblioteca ocultan su código tras una firma, y así se descompone un programa en módulos y API.

Cómo usarla

Elige un Ejemplo y un Lenguaje y pulsa Paso para ejecutar una línea cada vez, o Ejecutar para reproducir el programa a la Velocidad elegida. Observa la pila de llamadas, las notas de Qué pasó en este paso y el gráfico de profundidad. Pulsa Editar para cambiar el código. Cambia a Rutinas de biblioteca, elige una Rutina, escribe los argumentos y pulsa Llamar.

Parámetros que puedes cambiar

  • Modo Ejecutar un programa, Rutinas de biblioteca
  • Ejemplo Parámetros y valores de retorno, Variables locales y globales, Funciones que llaman a funciones, Procedimientos y funciones, Recursión (factorial), Paso por valor y por referencia
  • Lenguaje Python, Pseudocódigo
  • Velocidad 0,5–10 pasos/s

Preguntas para explorar

  1. ¿En la llamada area(w, 3), qué valores son los argumentos y qué nombres son los parámetros?
  2. ¿Por qué print(count) en el programa principal sigue mostrando 10 después de ejecutar double(3)?
  3. ¿Cuántos marcos hay en la pila de llamadas cuando factorial(4) llega a su caso base?