PUERTA | PUERTA CS 2012 | Pregunta 34

Considere el programa que se muestra a continuación, en un pseudolenguaje estructurado en bloques con alcance léxico y anidamiento de procedimientos permitidos.

Program main;
  Var ...
  
    Procedure A1;
     Var ...
     Call A2;
    End A1
    
    Procedure A2;
      Var ...
  
      Procedure A21;
        Var ...
        Call A1;
        End A21
        
    Call A21;
  End A21
  
    Call A1;
  End main.

Considere la string de llamadas: Principal->A1->A2->A21->A1
El conjunto correcto de registros de activación junto con sus enlaces de acceso está dado por:

gatecs2012activationrecord

gatecs2012activationrecord
(A) A
(B) B
(C) C
(D) D

Respuesta: (D)
Explicación: El enlace de acceso se define como un enlace al registro de activación del bloque léxicamente más cercano en el texto del programa, por lo que los bloques más cercanos respectivamente para A1, A2 y A21 son main , main y A2 Dado que los registros de activación se crean en el momento de la entrada al procedimiento y se destruyen en el momento de la salida del procedimiento.

Solución:
enlace al registro de activación del bloque léxicamente más cercano en el texto del programa. Depende del texto del programa estático.

nitika_36

Aquí la secuencia de llamada se da como,

Principal->A1->A2->A21->A1
Ahora A1, A2 se definen en Principal… Entonces A1, A2 El enlace de acceso apunta al principal A21 se define en A2, por lo tanto, su enlace de acceso apuntará a A2.

Referencia:
http://www.cs.nyu.edu/courses/spring08/G22.2130-001/lectures/lecture-13.html

Esta solución es aportada por Nitika Bansal

Cuestionario de esta pregunta

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *