שפות תכנות

מוסד לימוד
סוג העבודה
מספר ממ"ן 12
מקצוע
מילות מפתח , ,
ציון 100
שנת הגשה 2022
מספר מילים 100
מספר מקורות 1

תקציר העבודה

שאלה 1) 50 נקודות)
בשאלה זו עליכם לממש טיפוס נתונים מופשט המייצג מספר בינרי ופעולות שונות על טיפוס נתונים
זה.
BinaryNum הוא טיפוס נתונים מופשט (ADT (המייצג מספר בינרי ותומך בפעולות הבאות:
• create -מחזירה מספר בינרי עם סיבית אחת שערכה 0.
• bit-add – מקבלת כפרמטרים מספר בינרי וספרה 0 או 1 ,ומוסיפה ספרה זו למספר הבינרי
כביט חדש מימין. פעולה זו מחזירה את המספר הבינרי החדש.
• bit-change – מקבלת מספר בינרי, אינדקס (החל מ- 1 מימין) ומספר 0 או 1 .פעולה זו
משנה את הביט במספר הבינרי באינדקס הנתון לערך שהתקבל כפרמטר, ומחזירה את
המספר הבינרי החדש.
• base10-to – מקבלת מספר בינרי ומחזירה את ערכו לפי בסיס 10.
• right-rotate – מקבלת מספר בינרי ומסובבת את סיביותיו ימינה בסיבית אחת, ומחזירה
את המספר הבינרי החדש.
• left-rotate – מקבלת מספר בינרי ומסובבת את סיביותיו שמאלה בסיבית אחת, ומחזירה
את המספר הבינרי החדש.
א) כתבו אפיון לחתימות של הפעולות. סווגו את הפעולות השונות לסוגים (בנאים, מחלצים,
מנבאים).
ב) כתבו אפיון אלגברי לכל אחת מהפעולות המגדיר את הסמנטיקה (המשמעות) שלהן.
הקפידו על הגדרה מלאה לכל פעולה.
ג) ממשו את טיפוס הנתונים המופשט BinaryNum עלפי הפעולות שהוגדרו באפיון של טיפוס
הנתונים. ניתן לכתוב בנוסף פרוצדורות עזר במקרה הצורך.
אופן המימוש נתון לבחירתכם ויכול להיות ע"י רשימות או פרוצדורלי או ע"י שימוש ב-
define-datatype
8
שאלה 2) 30 נקודות)