פרק 6: אופרטורים

בחן את עצמך


1. ענה נכון/לא נכון על כל אחת מארבע הטענות הבאות:

  • לאופרטור -: קדימות גבוהה יותר מלאופרטור ',' (הפסיק).
  • לאופרטור החבור + יש קדימות גבוהה יותר מלאופרטור הכפל *.
  • האופרטור -: מוגדר פעמיים: פעם כאופרטור prefix ופעם כאופרטור infix.
  • האופרטורים ; ו-, (נקודה-פסיק ופסיק) הם אסוציאטיבים לשמאל.

(מידע אודות האופרטורים המוגדרים מראש בגרסת הפרולוג בה אתם משתמשים ניתן למצוא במדריך למשתמש המסופק עם התוכנה).






2. Type של + הוא:






3. אחת מספריות העזר שמספק SWI Prolog מכילה מתארים לזיהוי סוג אופרטור. ההגדרה, מתוך הקובץ explain.pl, היא כדלקמן:

op_type(X, ???) :- atom_chars(X, [f, _]).
op_type(X, ???) :- atom_chars(X, [_, f]).
op_type(X, ???) :- atom_chars(X, [_, f, _]).

atom_chars/2 הוא מתאר שלוקח אטום במתואר הראשון (למשל, prolog) ומחזיר רשימה של תוים ממנו הוא מורכב במתואר השני (בדוגמא זו, [p,r,o,l,o,g]).
כפי ששמתם לב, בכל שורה בהגדרה חסר משהו. מה צריך לכתוב במקום סימני השאלה בכל שורה כדי לקבל הגדרה נכונה?






4. איך צריך לאתחל אתאיך מגדירים את הסימן # להיות אופרטור מסוג infix עם אסוציאטיביות לימין ורמת קדימות זהה לזו של האופרטור +?





5. נניח היינו רוצים להגדיר אופרטורים and, or, implies, ו-not כדי לכתוב בפרולוג בצורה בהירה טענות בלוגיקה, כמו: not (a and b) implies c. אנו רוצים שפרולוג יבין גם את המבנה הפנימי של הטענות כפי שאנו מתכוונים לו, כלומר שיידע להבחין בין not (a and b) implies c לבין (not a and b) implies c, למשל.

איזה מן הטענות הבאות אינה נכונה?







מבוא

נושאים בסיסיים

נושאים מתקדמים

סיכום

© כל הזכויות שמורות למערכת המידע איתן