שאלת מבחן בשפות תכנות - האוניברסיטה הפתוחה 2024 - מפרשים
לפניך תוכנית בשפת Implicit-Refs (שפת ייחסמוריות):
מה הניב התוכנית הזו?
א.
ב.
ג. התוכנית מחזירה שגיאה בזמן הריצה.
ד.
ה.
ו.
ז.
סמן את התשובה הנכונה ורשם במחברת הבחינה בלנד.
מה הניב התוכנית הזו?
א.
(num-val 12)ב.
(num-val 9)ג. התוכנית מחזירה שגיאה בזמן הריצה.
ד.
(num-val 11)ה.
(num-val 2)ו.
(num-val 4)ז.
(proc-val ...)סמן את התשובה הנכונה ורשם במחברת הבחינה בלנד.
העתק שאלה
שתף שאלה
סמן כחשוב
סמן כבוצע
האוניברסיטה הפתוחהמועד ג2024סמסטר ב
★★★★★
מפרשיםמצבמעקב אחר קודScheme
עקבו אחר ביצוע התוכנית בשפת Implicit-Refs: חשבו את הביטוי
(proc (x) (x 3) x) — זוהי הפעלת פרוצדורה אנונימית עם הארגומנט x (ה-proc-val הנוכחי). בגוף: (x 3) = הפעלת proc-val על 3 = -(3,1) = 2. עדכנו y ל-2.התשובה הנכונה היא ה. `(num-val 2)`.
נעקוב אחר ביצוע התוכנית צעד אחר צעד:
סביבה ראשונית — IMPLICIT-REFS:
כל משתנה מאוחסן בתא זיכרון (ref).
שלב 1:
שלב 2:
שלב 3: בגוף ה-begin, נחשב:
הביטוי
-
- הארגומנט
- גוף הפרוצדורה:
-
לכן
שלב 4:
סיכום:
התשובה: ה. (num-val 2).
נעקוב אחר ביצוע התוכנית צעד אחר צעד:
סביבה ראשונית — IMPLICIT-REFS:
כל משתנה מאוחסן בתא זיכרון (ref).
let y=12 יוצר תא loc0 עם הערך 12.שלב 1:
let y=12 in ... — env: {y→loc0}, store: [loc0]=num-val 12.שלב 2:
let x= proc(x) -(x,1) in ... — יוצר תא loc1 עם proc-val. env: {x→loc1, y→loc0}, store: [loc1]=proc-val(proc(x)-(x,1)).שלב 3: בגוף ה-begin, נחשב:
set y = (proc (x) (x 3) x)
הביטוי
(proc (x) (x 3) x) הוא הפעלת פרוצדורה בשפה. בשפת IMPLICIT-REFS הפרוצדורות הן unary: (f arg) = קריאה ל-f עם ארגומנט arg. לכן:-
(proc (x) (x 3) x) = קריאה לפרוצדורה proc(x) -> (x 3) עם ארגומנט x.- הארגומנט
x (מהסביבה) = proc-val(proc(x)-(x,1)).- גוף הפרוצדורה:
(x 3) — עכשיו x (הפרמטר הפנימי) = proc-val(proc(x)-(x,1)).-
(x 3) = הפעלת proc-val(proc(x)-(x,1)) על 3 = -(3,1) = num-val 2.לכן
set y = num-val 2 → store: [loc0] = num-val 2.שלב 4:
y — קוראים את store[loc0] = num-val 2.סיכום:
(proc (x) (x 3) x) מפעיל פרוצדורה אנונימית עם הפרמטר x כארגומנט. הפרמטר x בגוף הוא proc-val, ולכן (x 3) = -(3,1) = 2. y מקבל 2, ומוחזר 2.התשובה: ה. (num-val 2).