Question: Consider the following pseudo-code: x : integer; -- global procedure set_x (n : integer) x := n; procedure print_x write_integer (x); procedure foo (S, P

Consider the following pseudo-code:

x : integer; -- global

procedure set_x (n : integer)

x := n;

procedure print_x

write_integer (x);

procedure foo (S, P : procedure; n : integer)

x : integer;

if n in {1,3}

set_x(n);

else

S(n);

if n in {1,2}

print_x;

else P;

-- main program

set_x(0); foo (set_x, print_x, 1); print_x;

set_x(0); foo (set_x, print_x, 2); print_x;

set_x(0); foo (set_x, print_x, 3); print_x;

set_x(0); foo (set_x, print_x, 4); print_x;

Assume that the language uses dynamic scoping. What does this program print if the language uses shallow binding? Why?

What does it print with deep binding? Why?

Note : At exactly one point during execution in the deep binding case, the program will attempt to print an uninitialized variable. Simply write a ? for the value printed at that point.

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!