Un pensamiento en “EL LOGO Y EL CICLO RECURSIVO

  1. Eduardo,

    Muy bueno el post!

    Agrego un comentario sobre la “generación de basura”. Se debe a que el intérprete de Logo tiene una pila (stack) donde se van almacenando los precedimientos a medida que se van ejecutando.

    Por ejemplo, si estoy ejecutando el procedimiento INICIO y adentro tengo una llamada al procedimiento SENSADO, el logo tiene que meter en memoria el contenido de SENSADO, sin poder borrar el contenido de INICIO, ya que se tiene que seguir ejecutando cuando SENSADO termine.

    En una recursión, este proceso también se hace recursivo, entonces si SENSADO es recursivo, hay una llamada a SENSADO dentro de SENSADO. Cada vez que se encuentra esa llamada, se pone el contenido de SENSADO en memoria (o en la pila) sin poder borrar el contenido de todas las llamadas anteriores. Es así como la pila se va llenando y cuando no hay más lugar se vacía la pila o se detiene el procedimiento.

    Cuando los procedimientos almacenados en la pila van terminando, se van eliminando de ésta, se libera del espacio que ocupan, dejando espacio libre para nuevos procedimientos y se ejecuta el código “fantasma” que había luego de la llamada al procedimiento que acaba de finalizar.

    Esta pila es como un tubo de ensayo donde lo último que entra es lo primero que sale.

    Esto no sucede en lenguajes que hacen recursión usando GOTO. El GOTO redirige el puntero de ejecución del procedimiento a la dirección de memoria donde comienza dicho procedimiento. Así no hay necesidad de volver a colocar el procedimiento en la pila.

    Espero que se entienda…
    Saludos!

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s