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