Dynamischer / statischer Bereich mit Deep / Shallow-Bindung (Übungen)

Ich untersuche den dynamischen / statischen Bereich mit tiefer / flacher Bindung und führe den Code manuell aus, um zu sehen, wie diese verschiedenen Bereiche / Bindungen tatsächlich funktionieren. Ich habe die Theorie gelesen und einige Beispielübungen gegoogelt und die, die ich gefunden habe, sind sehr einfach (wiediese was bei dynamischem Scoping sehr hilfreich war) Aber ich habe Probleme zu verstehen, wie statischer Scope funktioniert.

Hier poste ich eine Übung, die ich gemacht habe, um zu überprüfen, ob ich die richtige Lösung gefunden habe:

Betrachtet man das folgende Programm in Pseudocode geschrieben:

int u = 42; 
int v = 69;
int w = 17;
proc add( z:int )
  u := v + u + z
proc bar( fun:proc )
  int u := w;
  fun(v)
proc foo( x:int, w:int )
  int v := x;
  bar(add)
main
  foo(u,13)
  print(u)
end;

Was wird auf dem Bildschirm gedruckt

a) Verwendung eines statischen Bereichs? Antwort = 180

b) Verwendung von Dynamic Scope und Deep Binding? antwort = 69 (summe für u = 126 aber es ist foo's local v, oder?)

c) mit dynamischem Umfang und flacher Bindung? answer = 69 (summe für u = 101 aber es ist foo's local v, oder?)

PS: Ich versuche, einige Übungen wie diese zu üben, wenn Sie wissen, wo ich diese Art von Problemen finden kann (vorzugsweise mit Lösungen), geben Sie bitte den Link, danke!

Antworten auf die Frage(6)

Ihre Antwort auf die Frage