Respuesta :
Answer:
In dynamic scoping the current block is searched by the compiler and then all calling functions consecutively e.g. if a function a() calls a separately defined function b() then b() does have access to the local variables of a(). The visible variables with the name of the function in which it was defined are given below.
Explanation:
In main() function three integer type variables are declared: a,b,c
In fun1() three int type variables are declared/defined: b,c,d
In fun2() three int type variables are declared/defined: c,d,e
In fun3() three int type variables are declared/defined: d,e,f
a. Main calls fun1; fun1 calls fun2; fun2 calls fun3
Here the main() calls fun1() which calls fun2() and fun2() calls func3() . This means first the func3() executes, then fun2(), then fun1() and last main()
Visible Variable: d, e, f Defined in: fun3
Visible Variable: c Defined in: fun2 (the variables d and e of fun2
are not visible)
Visible Variable: b Defined in: fun1 ( c and d of func1 are hidden)
Visible Variable: a Defined in: main (b,c are hidden)
b. Main calls fun1; fun1 calls fun3
Here the main() calls fun1, fun1 calls fun3. This means the body of fun3 executes first, then of fun1 and then in last, of main()
Visible Variable: d, e, f Defined in: fun3
Visible Variable: b, c Defined in: fun1 (d not visible)
Visible Variable: a Defined in: main ( b and c not visible)
c. Main calls fun2; fun2 calls fun3; fun3 calls fun1
Here the main() calls fun2, fun2 calls fun3 and fun3 calls fun1. This means the body of fun1 executes first, then of fun3, then fun2 and in last, of main()
Visible Variable: b, c, d Defined in: fun1
Visible Variable: e, f Defined in: fun3 ( d not visible)
Visible Variable: a Defined in: main ( b and c not visible)
Here variables c, d and e of fun2 are not visible
d. Main calls fun3; fun3 calls fun1
Here the main() calls fun3, fun3 calls fun1. This means the body of fun1 executes first, then of fun3 and then in last, of main()
Visible Variable: b, c, d Defined in: fun1
Visible Variable: e, f Defined in: fun3 ( d not visible )
Visible Variable: a Defined in: main (b and c not visible)
e. Main calls fun1; fun1 calls fun3; fun3 calls fun2
Here the main() calls fun1, fun1 calls fun3 and fun3 calls fun2. This means the body of fun2 executes first, then of fun3, then of fun1 and then in last, of main()
Visible Variable: c, d, e Defined in: fun2
Visible Variable: f Defined in: fun3 ( d and e not visible)
Visible Variable: b Defined in: fun1 ( c and d not visible)
Visible Variable: a Defined in: main ( b and c not visible)
f. Main calls fun3; fun3 calls fun2; fun2 calls fun1
Here the main() calls fun3, fun3 calls fun2 and fun2 calls fun1. This means the body of fun1 executes first, then of fun2, then of fun3 and then in last, of main()
Visible Variable: b, c, d Defined in: fun1
Visible Variable: e Defined in: fun2
Visible Variable: f Defined in: fun3
Visible Variable: a Defined in: main