Dynamische/Statische Rahmen mit Deep/Shallow binding (übungen)

Ich studiere dynamische/statische Rahmen mit deep/shallow binding und ausführen von code manuell zu sehen, wie diese verschiedenen Bereiche/Bindungen tatsächlich funktionieren. Ich lese die Theorie gegoogelt und einige Beispiel-übungen und die, die ich gefunden habe sind sehr einfach (wie diese eine das war sehr hilfreich mit dynamic scoping), Aber ich habe Schwierigkeiten zu verstehen, wie statische Bereich funktioniert.

Hier poste ich eine übung, die ich Tat, um zu überprüfen, wenn ich die richtige Lösung:

unter Berücksichtigung der folgenden geschriebenes Programm in pseudocode:

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 gedruckt wird, auf dem Bildschirm

a) Verwendung von statischen Bereich? Antwort=180

b) mit dynamischen Umfang und Tiefe Bindung? Antwort=69 (Summe u = 126, aber es ist foo lokalen v, richtig?)

c) die Verwendung dynamischer Bereich und flacher Bindung? Antwort=69 (Summe u = 101 aber es ist foo lokalen v, richtig?)

PS: ich bin versucht, um das zu üben einige übungen wie diese, wenn Sie wissen, wo ich finden kann, diese Art von Problemen (vorzugsweise mit Lösungen) geben Sie bitte den link, danke!

InformationsquelleAutor chitty | 2010-10-06
Schreibe einen Kommentar