שאלת מבחן בשפות תכנות - האוניברסיטה הפתוחה 2017 - מפרשים
שאלה 2 (25 נקודות)
שאלה זו עוסקת בשפת "יוטורג" (שפה PROC תיאורטית) המוצגת בעמודים 81-74 בעמודים 3 בפרק 3. שאלה זו עוסקת בהגדרה הפשוטה של פרוצדורות לא רקורסיביות.
ברצונינו להחליף את השפה עם ביטויים בוליאניים נוסף על-ידי החדקוד הבא:
ביטויי check שישור של כמה ביטויים בוליאניים עם פונלות and מופעל. המשמעות של משתנים של check היא בוליאנית, ביטויי check היא בוליאנית, ורקו אם ורקו true הוא עורך, אחרת תנביעתו היא false. הביטויים השיתויים שתשורו על-ידי-ידי short-circuit הערכה, התחתיית בערערות short-circuit, אם עורך של אחד מחביטויים הבוליאניים היא false, הערכה של כל הביטויים check הנותרים היא false. על סמך לעירות תחיברית (parser) לביטויי בוליאני בפוליאני, ביטויי מהחיל בממילה end.
בתחביר מופשט, ביטויי check-exp נקראות check הביטויים בבוליאני מופעל - bexps מופעל מופעל וגם - bexps היא רישימה של יתרות הביטויים הבוליאניים.
שאלה זו עוסקת בשפת "יוטורג" (שפה PROC תיאורטית) המוצגת בעמודים 81-74 בעמודים 3 בפרק 3. שאלה זו עוסקת בהגדרה הפשוטה של פרוצדורות לא רקורסיביות.
ברצונינו להחליף את השפה עם ביטויים בוליאניים נוסף על-ידי החדקוד הבא:
ביטויי check שישור של כמה ביטויים בוליאניים עם פונלות and מופעל. המשמעות של משתנים של check היא בוליאנית, ביטויי check היא בוליאנית, ורקו אם ורקו true הוא עורך, אחרת תנביעתו היא false. הביטויים השיתויים שתשורו על-ידי-ידי short-circuit הערכה, התחתיית בערערות short-circuit, אם עורך של אחד מחביטויים הבוליאניים היא false, הערכה של כל הביטויים check הנותרים היא false. על סמך לעירות תחיברית (parser) לביטויי בוליאני בפוליאני, ביטויי מהחיל בממילה end.
בתחביר מופשט, ביטויי check-exp נקראות check הביטויים בבוליאני מופעל - bexps מופעל מופעל וגם - bexps היא רישימה של יתרות הביטויים הבוליאניים.
העתק שאלה
שתף שאלה
סמן כחשוב
סמן כבוצע
האוניברסיטה הפתוחהמבחן 2017 סמסטר ב · 2017 · סמסטר ב
★★★★★
מפרשיםתהליך איטרטיבימודל הסביבהסדר אפליקטיבי
המפתח הוא יישום short-circuit evaluation: יש לעבור על הביטויים ברשימה ברקורסיה, ולהפסיק מיד (מבלי להעריך את השאר) ברגע שמוצאים ביטוי שמוערך ל-
false.הוספת ביטויי
check לשפת PROCתחביר קונקרטי ומופשט
תחביר קונקרטי:
תחביר מופשט (AST):
כאשר הוא הביטוי הבוליאני הראשון, ו- היא רשימה של שאר הביטויים הבוליאניים.
---
הגדרת סוג הנתונים (define-datatype)
---
הפרשן (eval-expression)
המשמעות של
check-exp היא שיתוף AND עם short-circuit evaluation:- אם כל הביטויים מחזירים
true— הערך הואtrue. - אם אחד מהביטויים מחזיר
false— מיד מפסיקים (ללא הערכת השאר) ומחזיריםfalse.
---
הסבר השלבים
| שלב | תיאור |
|---|---|
| 1 | מחלצים את הביטוי הנוכחי curr ומסביבה env |
| 2 | מעריכים אותו: (eval-expression curr env) |
| 3 | אם הערך הוא false — short-circuit: מחזירים (bool-val #f) מיד |
| 4 | אם הערך הוא true והרשימה ריקה — מחזירים (bool-val #t) |
| 5 | אחרת — קריאה רקורסיבית עם ראש הרשימה הנותרת |
---
דוגמה לריצה
הביטוי:
check true and false and true end1. מעריכים
true → #t, ממשיכים.2. מעריכים
false → #f, short-circuit — מפסיקים מיד.3.
true השלישי לא מוערך כלל.4. תוצאה:
(bool-val #f)---
הערה על מודל הסביבה
הסביבה
env מועברת ללא שינוי לכל קריאת eval-expression פנימית, כיוון שביטוי check אינו מגדיר קשירות חדשות — הוא רק מחשב ביטויים קיימים בסביבה הנוכחית.