פרק 7: עוד על ביטויים

7.2 השוואת ביטויים

בסעיף זה נלמד על ההבדל בין שלושה אופרטורים דומים בפרולוג, דומים עד כדי כך שקל להתבלבל ביניהם:

=
==
=:=

הראשון הוא אופרטור ההאחדה שכבר למדנו אודותיו.

השני, ==, הוא אופרטור ההשוואה של פרולוג. הוא מאפשר לנו לבדוק האם שני ביטויים זהים או לא, אבל בלי לבצע האחדות ולהציב בהם ערכים. הוא מצליח אם שני הביטויים מייצגים אותו דבר בדיוק.

השלישי, =:=, הוא אופרטור השוויון. הוא בודק שוויון בין ביטויים מספריים, ונפגשנו בו לראשונה בפרק 2.

נראה דוגמאות שוודאי יעזרו להבהיר את משמעותו של כל אחד מהאופרטורים. תחילה נראה אילו ביטויים פרולוג מחשיב כזהים:

?- harry == harry.
Yes
?- harry == 'harry'.
Yes
?- harry == hermione.
No

במקרים אלה גם שימוש ב-= היה נותן את אותן תוצאות. ואמנם, כאשר היחס == מתקיים בין שני ביטויים, כלומר הם זהים, אזי ניתן לבצע האחדה ביניהם. ההפך אינו תמיד נכון. יש ביטויים שניתן לבצע ביניהם האחדה למרות שאינם זהים. מקרה כזה הוא למשל:

?- X == Y.
No
?- X = Y.
X = _G176
Y = _G176
Yes

המשתנים X ו-Y הם משתנים שעדיין לא הצבנו בהם ערכים. מכיוון שאינם מציינים דבר משותף, הם אינם זהים ופרולוג עונה No על השאילתא הראשונה. עם זאת, ניתן לקשור אותם זה לזה באמצעות האחדה, כפי שרואים בשאילתא השנייה.

כעת לייחודו של האופרטור =:=. שימו לב לתשובות של פרולוג על השאילתות הבאות:

?- 1 = 1+0.
No
?- 1 == 1+0.
No
?- 1 =:= 1+0.
Yes

אנו רואים שהביטויים 1 ו-1+0 זהים רק מבחינת ערכם המספרי. למרות זאת, לא ניתן לבצע ביניהם האחדה משום שאחד הוא קבוע מספרי והשני הוא ביטוי מורכב (מהמתאר +). מבחינה זו הם שונים.

מבוא

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

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

סיכום

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