PUERTA | PUERTA-CS-2001 | Pregunta 44

Considere el siguiente programa

Program P2 
    var n: int: 
     procedure W(var x: int) 
     begin 
         x=x+1; 
         print x;   
     end 
  
     procedure D 
     begin  
         var n: int; 
         n=3; 
         W(n);  
     end 
begin //beginP2 
  n=10; 
  D; 
end 

Si el lenguaje tiene alcance dinámico y los parámetros se pasan por referencia, ¿qué imprimirá el programa?
(A) 10
(B) 11
(C) 3
(D) Ninguna de las anteriores

Respuesta: (D)
Explicación:

En el alcance estático o el alcance en tiempo de compilación, las variables libres (variables utilizadas en una función que no son ni variables locales ni parámetros de esa función) se denominan variables globales porque en la compilación solo están disponibles las variables globales.
En el alcance dinámico o el alcance en tiempo de ejecución, las variables libres se denominan variables en el marco más reciente de la pila de llamadas de funciones. En el código dado en la llamada de función del procedimiento W, la variable local x se imprime, es decir, 4. Bajo el alcance dinámico, si x no hubiera estado allí en el procedimiento W, entonces nos referiríamos a x de la función en la pila de llamadas de función, es decir, el procedimiento D y la función principal, pero dado que x es una variable local y no una variable libre, nos referimos a la variable local, por lo tanto, se imprimirá 4.

Consulte la pregunta 4 de https://www.geeksforgeeks.org/principle-of-programming-languages-set-1/

Esta solución es aportada por Parul Sharma.
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 *