שאלת מבחן בשפות תכנות - האוניברסיטה הפתוחה 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).