שאלת מבחן בשפות תכנות - האוניברסיטה הפתוחה 2024 - מודל ההצבה
להלן תוכנית בשפת PROC (שפת "יירשגורי"):
הוצגת התוצאה של התוכנית הנ"ל היא:
א.
ב.
ג.
ד.
ה. התוכנית לא תקינה ותיכשל
ו. התוכנית מחזירה שגיאה בזמן הריצה.
יש לבחור את התוצאה הנכונה מתוך האפשרויות לעיל, ולנמק בדרך של הצגת חישובים והוכחות. את התשובה יש לנמק בלבד.
הוצגת התוצאה של התוכנית הנ"ל היא:
א.
(num-val 12)ב.
(num-val 18)ג.
(num-val 6)ד.
(num-val 9)ה. התוכנית לא תקינה ותיכשל
ו. התוכנית מחזירה שגיאה בזמן הריצה.
יש לבחור את התוצאה הנכונה מתוך האפשרויות לעיל, ולנמק בדרך של הצגת חישובים והוכחות. את התשובה יש לנמק בלבד.
העתק שאלה
שתף שאלה
סמן כחשוב
סמן כבוצע
האוניברסיטה הפתוחהמועד א2024סמסטר ב
★★★★★
מודל ההצבהמעקב אחר קודSchemeתכנות פונקציונליסגוריםתחום לקסיקלי
יש לשים לב לתחום הלקסיקלי: כאשר מחשבים את ביטוי ה-
let הפנימי בתנאי ה-if, הסביבה הפעילה מציבה a=6 (מה-let הפנימי), ולאחר חישוב התנאי, הענף ה-else רץ בסביבה של let a=9 ולא של let a=6. כמו כן, גוף p הוא -(a,-(0,a)) שמחשב .התשובה הנכונה היא ב — `(num-val 18)`.
נמשש את ביצוע התוכנית לפי מודל ההצבה הלקסיקלי של שפת PROC:
שלב 1: הגדרת `p`
גוף הפרוצדורה: .
כלומר,
סביבה: .
שלב 2: `let a=9`
נוצרת סביבה .
שלב 3: חישוב תנאי ה-`if`
התנאי הוא:
בביטוי ה-
חישוב בסביבה :
-
-
- לכן .
-
התנאי הוא שקר.
שלב 4: הענף ה-`else`
מאחר שהתנאי שקר, מחשבים את ענף ה-
-
-
התוצאה הסופית: `(num-val 18)`.
נמשש את ביצוע התוכנית לפי מודל ההצבה הלקסיקלי של שפת PROC:
שלב 1: הגדרת `p`
p מוגדר בסביבה הבסיסית כפרוצדורה:גוף הפרוצדורה: .
כלומר,
p מחשבת את .סביבה: .
שלב 2: `let a=9`
נוצרת סביבה .
שלב 3: חישוב תנאי ה-`if`
התנאי הוא:
בביטוי ה-
let הפנימי נוצרת סביבה . ה-a כאן מצלמי את ה-a החיצוני.חישוב בסביבה :
-
a בסביבה הוא 6.-
(p a) = (p 6): קוראים לפרוצדורה p עם a=6 (בסביבה חדשה עם a=6):- לכן .
-
zero?(6) = שקר (false).התנאי הוא שקר.
שלב 4: הענף ה-`else`
מאחר שהתנאי שקר, מחשבים את ענף ה-
else: (p a) בסביבה (הסביבה של ה-if החיצוני, שם a=9).-
a בסביבה הוא 9 (לא 6 — ה-let a=6 היה מקומי לתנאי בלבד).-
(p 9): קוראים לפרוצדורה p עם a=9:התוצאה הסופית: `(num-val 18)`.