קובץ מספר 2 - מלוגיקה לפרולוג

1
‫שפות תכנות‬
‫‪ ‬שפות תכנות מתחלקות לשפות הצהרתיות‬
‫(דקלרטיביות) ולשפות תהליכיות (פרוצדורליות)‪.‬‬
‫‪ ‬בשפות תהליכיות נותנים מעין מתכון לפתרון הבעיה‪,‬‬
‫כלומר מפרטים את התהליך לפתרון הבעיה‪.‬‬
‫‪ ‬בשפות הצהרתיות מנסחים בעזרת חוקי התחביר של‬
‫השפה את הבעיה שיש לפתור‪ ,‬כלומר מצהירים מהי‬
‫הבעיה‪.‬‬
‫‪2‬‬
‫לסרטון‬
‫פרולוג‬
‫‪ ‬שפת פרולוג הינה שפה לתכנות לוגי‬
‫‪ProLog: PROgrammation en LOGique ‬‬
‫פותחה בשנות השבעים של המאה העשרים על ידי קבוצות‬
‫חוקרים בבריטניה ובצרפת‪ .‬פרולוג הפכה לכלי יעיל לפיתוח‬
‫יישומים לאחר שנכתב לה מהדר (קומפיילר) יעיל‪ .‬מאז נכתבו‬
‫בעזרתה יישומים שונים לתחומים רבים‪ ,‬בראשם בינה‬
‫מלאכותית ועיבוד שפה טבעית‪.‬‬
‫‪ ‬פרולוג‪ ,‬בהיותה שפת תכנות לוגי‪ ,‬מתאפיינת בכך שהיא עושה‬
‫שימוש בלוגיקה הקלאסית להצרין מידע ולייצג בעיות‪,‬‬
‫ומשתמשת במנגנון הוכחה לוגי כדי לפתור בעיות‪.‬‬
‫‪3‬‬
‫סביבת העבודה‬
‫‪ ‬קיימים מספר יישומי פרולוג‪ .‬אנו נעבוד בסביבת‬
‫‪!Amzi ‬‬
‫מערכת פיתוח תואמת סטנדרט ‪Edinburgh‬‬
‫המאפשרת לשלב קוד פרולוג במסגרת ‪,++C ,C‬‬
‫ויז'ואל בייסיק‪ ,‬דלפי‪ ,‬אקסס וכלים אחרים של חלונות‪.‬‬
‫סביבה זו הותאמה לכתיבה בעברית‪ ,‬והוספה לה‬
‫מערכת גרפית‪.‬‬
‫‪4‬‬
‫‪ ‬באתר קבוצת מדעי המחשב במחלקה להוראת‬
‫המדעים במכון ויצמן‪ ,‬קיימים חומרים רלבנטיים‪:‬‬
‫‪http://stwww.weizmann.ac.il/g-cs/ ‬‬
‫פרולוג עברי בסביבת חלונות‪:‬‬
‫‪ ‬יש להוריד את חוברת ההדרכה ואת הוראות ההתקנה‪.‬‬
‫‪5‬‬
‫שפת פרולוג ‪ -‬תחביר‬
‫ביטויים בפרולוג‬
‫ביטויים פשוטים‬
‫קבועים‬
‫אטומים‬
‫‪6‬‬
‫ביטויים מורכבים‬
‫משתנים‬
‫מספרים‬
‫אטום‬
‫‪‬‬
‫מחרוזת רצופה של תווים שמתחילה באות עברית (או קטנה‬
‫באנגלית) וכוללת אותיות‪ ,‬ספרות‪ ,‬קו תחתון‪.‬‬
‫דוגמאות‪ :‬ביצה‪ ,‬ביצה_רכה‪ ,‬ביצה‪harry_potter, ,2‬‬
‫‪.harryPotter, harryPotter2‬‬
‫‪‬‬
‫כל רצף תווים שמוקף בגרשיים בודדים‪.‬‬
‫דוגמאות‪' :‬ביצה רכה'‬
‫‪‬‬
‫רצף של תווים מיוחדים‪ .‬אטומים אלה לרוב נושאים משמעות‬
‫מוגדרת‪ .‬דוגמאות‪.; ,-: ,=@= :‬‬
‫‪7‬‬
‫משתנה‬
‫‪ ‬מחרוזת של תווים שמתחילה בקו תחתון (או באות גדולה‬
‫באנגלית) וכוללת אותיות‪ ,‬ספרות‪ ,‬קו תחתון‪.‬‬
‫דוגמאות‪_ :‬שם‪_ ,‬שם_משפחה‪_ ,‬ילד‪Name ,X ,2‬‬
‫‪ ‬שימו לב לדמיון התחבירי בין אטומים למשתנים‪ :‬ניתן להבחין‬
‫ביניהם רק על סמך התו הראשון‪.‬‬
‫‪ ‬קו תחתון בודד (_) הוא משתנה מיוחד‪ ,‬וניפגש בו בהמשך‪.‬‬
‫לרשום במחברת – חוק דפנה מס' ‪1‬‬
‫אין לכתוב משתנים באנגלית!‬
‫‪8‬‬
‫ביטוי מורכב‬
‫‪ ‬ביטויים אלה כשמם כן הם‪ ,‬מורכבים מאטומים‪ ,‬מספרים ומשתנים‪ .‬הם בנויים‬
‫ממתאר (‪ )functor‬שאחריו רצף של מתוארים (‪ )arguments‬בתוך סוגריים‪,‬‬
‫מופרדים בפסיקים‪ .‬המתאר חייב להיות אטום‪ .‬המתוארים יכולים להיות כל ביטוי‬
‫שהוא‪:‬‬
‫דוגמאות‪:‬‬
‫אין רווח בין‬
‫תלמיד(יוסי‪,‬כהן)‪.‬‬
‫המתאר‬
‫תלמיד(יוסי‪,‬בר_מוחא‪,‬י‪.)3,‬‬
‫לסוגריים‬
‫הורה(אברהם‪,‬יצחק)‪.‬‬
‫הורה(יעקב‪_,‬מי)‪.‬‬
‫זוג(שם(משה‪,‬לוי)‪,‬שם(סימה‪,‬בר_יעקב))‪.‬‬
‫‪ ‬חשוב לדעת שהמאפיינים הבסיסיים של ביטוי מורכב הם המתאר שלו ומספר‬
‫המתוארים שלו‪ .‬לכן‪ ,‬שני ביטויים מורכבים שיש להם אותו מתאר‪ ,‬אבל מספר‬
‫מתוארים שונה‪ ,‬נחשבים בפרולוג ביטויים שונים לגמרי‪ .‬נסמן ביטויים מורכבים‬
‫כדלקמן‪ :‬שם המתאר‪ ,‬קו נטוי‪ ,‬ואחריו מספר המתוארים‪.‬‬
‫הביטויים המורכבים שהצגנו בדוגמא האחרונה יתוארו כך‪:‬‬
‫תלמיד‪ ,2/‬תלמיד‪ ,4/‬הורה‪,2/‬זוג‪.2/‬‬
‫‪9‬‬
‫ביטוי מורכב‬
‫‪ .1 ‬מספר המתוארים בתוך הסוגריים אינו מוגבל‪.‬‬
‫‪ .2 ‬הסדר שבחרנו להביע בו את המתוארים הוא‬
‫משמעותי‪.‬‬
‫לכן כשאנו כותבים תוכנית‪ ,‬נרשום הערת תיעוד מתאימה לכל ביטוי מורכב‪:‬‬
‫‪ %‬הורים(_אבא‪_ ,‬אמא‪_ ,‬בן)‪.‬‬
‫הורים(אברהם‪ ,‬שרה‪ ,‬יצחק)‪.‬‬
‫הורים(יצחק‪ ,‬רבקה‪ ,‬יעקב)‪.‬‬
‫הורים(יעקב‪ ,‬רחל‪ ,‬בנימין)‪.‬‬
‫‪ %‬אוהב(_מי_אוהב‪_,‬מה_אוהב)‪.‬‬
‫אוהב(רחל‪ ,‬גלידה)‪.‬‬
‫אוהב(שמעון‪ ,‬לעשות_חיים)‪.‬‬
‫‪10‬‬
‫שפת פרולוג‬
‫שפת פרולוג‬
‫תוכנית פרולוג‬
‫עובדות‬
‫‪11‬‬
‫שאילתות‬
‫חוקים‬
‫עובדות‬
‫‪ ‬עובדות הן פיסות מידע שיש לנו על תחום דיון מסוים‪.‬‬
‫לרשום במחברת – חוק דפנה מס' ‪2‬‬
‫כל עובדה נכתבת בשורה חדשה‪.‬‬
‫עובדה‬
‫מסתיימת‬
‫בנקודה‪.‬‬
‫לדוגמא‪:‬‬
‫ירח‪.‬‬
‫בלון‪.‬‬
‫‪%‬ילד(_שם‪_,‬משפחה)‪.‬‬
‫ילד(משה‪,‬לוי)‪.‬‬
‫לרשום במחברת – חוק דפנה מס' ‪3‬‬
‫ילד(סיגל‪,‬כהן)‪.‬‬
‫עובדות בעלות מתאר משותף נכתבות ברצף‪ ,‬זו אחר זו‪,‬‬
‫כשלפניהן רשומה הערה‪ :‬שם המתאר‪ ,‬ומה כל אחד מהמתוארים‪.‬‬
‫‪12‬‬
‫שאילתות‬
‫ירח‪.‬‬
‫בלון‪.‬‬
‫ילד(משה‪,‬לוי)‪.‬‬
‫ילד(סיגל‪,‬כהן)‪.‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪13‬‬
‫זו תוכנית הפרולוג הראשונה שלנו‪ .‬לגביה‪ ,‬אנו יכולים לשאול‬
‫שאלות‪:‬‬
‫?‪ -‬ירח‪.‬‬
‫כן‪.‬‬
‫ילד(משה‪,‬לוי)‪.‬‬
‫כן‪.‬‬
‫שאילתות‬
‫‪ ‬פרולוג עונה לנו בעצם על השאלה "האם ניתן להסיק את המידע בשאילתא מתוך‬
‫הידוע בתכנית?"‪ .‬לכן‪ ,‬אם בשאילתא יופיע מתאר לא מוכר או מתואר לא מוכר‪,‬‬
‫פרולוג יענה "לא"‪ ,‬פשוט משום שאין ביכולתו להסיק את נכונות המידע‪:‬‬
‫ירח‪.‬‬
‫בלון‪.‬‬
‫ילד(משה‪,‬לוי)‪.‬‬
‫ילד(סיגל‪,‬כהן)‪.‬‬
‫אחים(יעקב‪,‬עשו)‪.‬‬
‫?‪-‬שמש‪.‬‬
‫לא‪.‬‬
‫?‪-‬ילד(סיגל‪,‬לוי)‪.‬‬
‫לא‪.‬‬
‫?‪-‬אחים(עשו‪,‬יעקב)‪.‬‬
‫לא‪.‬‬
‫‪14‬‬
‫שפת פרולוג – קשרים לוגיים‬
‫קשר הגימום (וגם) מסומן בפרולוג באמצעות פסיק‪.‬‬
‫קשר האיווי (או) מסומן בפרולוג באמצעות נקודה פסיק‪.‬‬
‫האם יש תפוז וגם לימון?‬
‫?‪ -‬תפוז‪ ,‬לימון‪.‬‬
‫כן‪.‬‬
‫‪15‬‬
‫‪ ‬נתונה תכנית פרולוג‪:‬‬
‫‪ ‬תפוז‪.‬‬
‫‪ ‬לימון‪.‬‬
‫שפת פרולוג – קשרים לוגיים‬
‫קשר הגימום (וגם) מסומן בפרולוג באמצעות פסיק‪.‬‬
‫קשר האיווי (או) מסומן בפרולוג באמצעות נקודה פסיק‪.‬‬
‫האם יש תפוז וגם אבוקדו?‬
‫?‪ -‬תפוז‪ ,‬אבוקדו‪.‬‬
‫לא‪.‬‬
‫‪16‬‬
‫‪ ‬נתונה תכנית פרולוג‪:‬‬
‫‪ ‬תפוז‪.‬‬
‫‪ ‬לימון‪.‬‬
‫שפת פרולוג – קשרים לוגיים‬
‫קשר הגימום (וגם) מסומן בפרולוג באמצעות פסיק‪.‬‬
‫קשר האיווי (או) מסומן בפרולוג באמצעות נקודה פסיק‪.‬‬
‫האם יש תפוז או אבוקדו?‬
‫?‪ -‬תפוז; אבוקדו‪.‬‬
‫כן‪.‬‬
‫‪17‬‬
‫‪ ‬נתונה תכנית פרולוג‪:‬‬
‫‪ ‬תפוז‪.‬‬
‫‪ ‬לימון‪.‬‬
‫שפת פרולוג – קשרים לוגיים‬
‫קשר הגימום (וגם) מסומן בפרולוג באמצעות פסיק‪.‬‬
‫קשר האיווי (או) מסומן בפרולוג באמצעות נקודה פסיק‪.‬‬
‫האם יש תפוז או לימון?‬
‫?‪ -‬תפוז; לימון‪.‬‬
‫כן‪.‬‬
‫‪18‬‬
‫‪ ‬נתונה תכנית פרולוג‪:‬‬
‫‪ ‬תפוז‪.‬‬
‫‪ ‬לימון‪.‬‬
‫שפת פרולוג – קשרים לוגיים‬
‫נתונות תשובות הפרולוג לשאילתות‪:‬‬
‫?‪-‬‬
‫?‪-‬‬
‫?‪-‬‬
‫?‪-‬‬
‫?‪-‬‬
‫?‪-‬‬
‫ירוק;ורוד‪.‬‬
‫אדום;ירוק‪.‬‬
‫צהוב‪ ,‬לבן‪.‬‬
‫סגול‪ ,‬צהוב‪.‬‬
‫כתום; אדום‪.‬‬
‫כתום‪ ,‬חום‪.‬‬
‫כן‪.‬‬
‫לא‪.‬‬
‫כן‪.‬‬
‫לא‪.‬‬
‫כן‪.‬‬
‫לא‪.‬‬
‫מהן העובדות שיש בתוכנית הפרולוג?‬
‫‪19‬‬
‫משתנים בשאילתות‬
‫‪ ‬נתונה תכנית פרולוג‪:‬‬
‫‪% ‬כבשה(_מי_הכבשה)‪.‬‬
‫‪ ‬כבשה(דולי)‪.‬‬
‫‪ ‬כבשה(מולי)‪.‬‬
‫‪ ‬כבשה(בולי)‪.‬‬
‫‪‬‬
‫‪ %‬עכבר(_מי_העכבר)‪.‬‬
‫‪ ‬עכבר(נבוכדנאצר)‪.‬‬
‫‪ ‬עכבר(זרובבל)‪.‬‬
‫‪20‬‬
‫משתנים בשאילתות‬
‫‪ ‬האם קיימת מישהי שהיא כבש?‬
‫?‪ -‬כבש (_מי)‪.‬‬
‫לא‪.‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫נתונה תכנית פרולוג‪:‬‬
‫‪%‬כבשה(_מי_הכבשה)‪.‬‬
‫כבשה(דולי)‪.‬‬
‫כבשה(מולי)‪.‬‬
‫כבשה(בולי)‪.‬‬
‫‪ %‬עכבר(_מי_העכבר)‪.‬‬
‫עכבר(נבוכדנאצר)‪.‬‬
‫עכבר(זרובבל)‪.‬‬
‫פרולוג לא מבין עברית!‬
‫פרולוג בודק התאמה באטומים!‬
‫נקבל ערך למשתנה‬
‫אך ורק אם השאילתה מצליחה!‬
‫‪21‬‬
‫משתנים בשאילתות‬
‫‪ ‬האם קיימת מישהי שהיא כבשה?‬
‫?‪ -‬כבשה (_מי)‪.‬‬
‫_מי=דולי ‪>-‬‬
‫‪ ‬על מנת לקבל תשובות נוספות‪ ,‬נקיש על כל מקש לבד מ‪-‬‬
‫‪:enter‬‬
‫_מי=מולי ‪;>-‬‬
‫_מי=בולי‪;>-‬‬
‫לא‪.‬‬
‫‪22‬‬
‫תשובה נוספת‬
‫כאשר מבקשים תשובה נוספת‪:‬‬
‫הפרולוג מכשיל את התשובה הקודמת‪ ,‬וממשיך לחפש‬
‫מאותו מקום בו היה בתוכנית!‬
‫?‪ -‬כבשה(_מי)‪.‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪23‬‬
‫נתונה תכנית פרולוג‪:‬‬
‫‪%‬כבשה(_מי_הכבשה)‪.‬‬
‫כבשה(דולי)‪.‬‬
‫כבשה(מולי)‪.‬‬
‫כבשה(בולי)‪.‬‬
‫‪ %‬עכבר(_מי_העכבר)‪.‬‬
‫עכבר(נבוכדנאצר)‪.‬‬
‫עכבר(זרובבל)‪.‬‬
‫תשובה נוספת‬
‫כאשר מבקשים תשובה נוספת‪:‬‬
‫הפרולוג מכשיל את התשובה הקודמת‪ ,‬וממשיך לחפש‬
‫מאותו מקום בו היה בתוכנית!‬
‫?‪ -‬כבשה(_מי)‪.‬‬
‫_מי=דולי‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪24‬‬
‫נתונה תכנית פרולוג‪:‬‬
‫‪%‬כבשה(_מי_הכבשה)‪.‬‬
‫כבשה(דולי)‪.‬‬
‫כבשה(מולי)‪.‬‬
‫כבשה(בולי)‪.‬‬
‫‪ %‬עכבר(_מי_העכבר)‪.‬‬
‫עכבר(נבוכדנאצר)‪.‬‬
‫עכבר(זרובבל)‪.‬‬
‫תשובה נוספת‬
‫כאשר מבקשים תשובה נוספת‪:‬‬
‫הפרולוג מכשיל את התשובה הקודמת‪ ,‬וממשיך לחפש‬
‫מאותו מקום בו היה בתוכנית!‬
‫?‪ -‬כבשה(_מי)‪.‬‬
‫_מי=דולי‬
‫(הקשת מקש)‬
‫(הפרולוג מכשיל את התשובה הקודמת וממשיך‬
‫לחפש מאותו מקום)‬
‫_מי=מולי‬
‫‪25‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫נתונה תכנית פרולוג‪:‬‬
‫‪%‬כבשה(_מי_הכבשה)‪.‬‬
‫כבשה(דולי)‪.‬‬
‫כבשה(מולי)‪.‬‬
‫כבשה(בולי)‪.‬‬
‫‪ %‬עכבר(_מי_העכבר)‪.‬‬
‫עכבר(נבוכדנאצר)‪.‬‬
‫עכבר(זרובבל)‪.‬‬
‫משתנים בשאילתות‬
‫‪ ‬משתנה בפרולוג‪:‬‬
‫* מתייחס אל מתואר בפרולוג‪.‬‬
‫* מחזיר את ערך המתואר במיקום המתאים‪.‬‬
‫* אם יש כמה מתוארים מתאימים‪ ,‬ניתן לבקש תשובות‬
‫נוספות‪.‬‬
‫שאלה בלי משתנה‪ :‬האם יש בתוכנית‪:‬‬
‫?‪-‬שמש‪.‬‬
‫‪26‬‬
‫‪ ‬האם יש "שמש" בתוכנית‪.‬‬
‫משתנים בשאילתות‬
‫‪ ‬משתנה בפרולוג‪:‬‬
‫* מתייחס אל מתואר בפרולוג‪.‬‬
‫* מחזיר את ערך המתואר במיקום המתאים‪.‬‬
‫* אם יש כמה מתוארים מתאימים‪ ,‬ניתן לבקש תשובות‬
‫נוספות‪.‬‬
‫שאלה עם משתנה‪ :‬האם יש בתוכנית‪ ,‬ואם יש מי‪/‬מה זה?‬
‫?‪-‬ילד(_מי)‪.‬‬
‫‪ ‬האם יש "ילד" בתוכנית‪ ,‬ואם כן‪ ,‬מיהו?‬
‫במילים אחרות – האם יש מתואר מתאים בתוכנית‪ ,‬ואם כן‪ ,‬מה ערכו?‬
‫‪27‬‬
‫משתנים בשאילתות‬
‫האם קיימים כבשה וגם עכבר?‬
‫?‪ -‬כבשה (_מי_כבשה(‪ ,‬עכבר(_מי_עכבר)‪.‬‬
‫_מי_כבשה=דולי‬
‫_מי_עכבר=נבוכדנאצר‪;>-‬‬
‫_מי_כבשה=דולי‬
‫_מי_עכבר=זרובבל‪;>-‬‬
‫_מי_כבשה=מולי‬
‫_מי_עכבר=נבוכדנאצר‪;>-‬‬
‫_מי_כבשה=מולי‬
‫_מי_עכבר=זרובבל‪;>-‬‬
‫לא‪.‬‬
‫‪28‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫נתונה תכנית פרולוג‪:‬‬
‫‪%‬כבשה(_מי_הכבשה)‪.‬‬
‫כבשה(דולי)‪.‬‬
‫כבשה(מולי)‪.‬‬
‫‪ %‬עכבר(_מי_העכבר)‪.‬‬
‫‪ ‬עכבר(נבוכדנאצר)‪.‬‬
‫‪ ‬עכבר(זרובבל)‪.‬‬
‫משתנים בשאילתות‬
‫האם קיימים כבשה או עכבר?‬
‫?‪ -‬כבשה (_מי_כבשה) ; עכבר(_מי_עכבר)‪.‬‬
‫_מי_כבשה=דולי;‬
‫_מי_כבשה=מולי;‬
‫_מי_עכבר=נבוכדנאצר‪;>-‬‬
‫_מי_עכבר=זרובבל‪;>-‬‬
‫לא‪.‬‬
‫‪29‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫נתונה תכנית פרולוג‪:‬‬
‫‪%‬כבשה(_מי_הכבשה)‪.‬‬
‫כבשה(דולי)‪.‬‬
‫כבשה(מולי)‪.‬‬
‫‪ %‬עכבר(_מי_העכבר)‪.‬‬
‫‪ ‬עכבר(נבוכדנאצר)‪.‬‬
‫‪ ‬עכבר(זרובבל)‪.‬‬
‫משתנים בשאילתות‬
‫מה המשמעות של‪:‬‬
‫?‪-‬כבשה(_מי)‪,‬עכבר(_מי)‪.‬‬
‫שימוש באותו משתנה משמעותו –‬
‫המשתנה חייב להיות בעל אותו ערך‪.‬‬
‫כמו באלגברה‪:‬‬
‫‪X2-3X-4=0‬‬
‫ל‪ X-‬אותו ערך בכל מופע שלו במשוואה זו‪.‬‬
‫‪30‬‬
‫משתנים בשאילתות‬
‫מה המשמעות של‪:‬‬
‫?‪-‬כבשה(_מי)‪,‬עכבר(_מי)‪.‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫הפרולוג בודק אטום אחרי אטום‪.‬‬
‫התחילה הוא בודק "כבשה(_מי)"‬
‫המשתנה _מי מקבל ערך "דולי"‬
‫לאחר שהצליח‪ ,‬עובר הלאה‪,‬‬
‫ועכשיו בודק "עכבר(דולי)"‬
‫המשתנה _מי קיבל כבר ערך‪ ,‬והוא "דולי"‬
‫‪31‬‬
‫נתונה תכנית פרולוג‪:‬‬
‫‪%‬כבשה(_מי_הכבשה)‪.‬‬
‫כבשה(דולי)‪.‬‬
‫כבשה(מולי)‪.‬‬
‫כבשה(בולי)‪.‬‬
‫‪ %‬עכבר(_מי_העכבר)‪.‬‬
‫עכבר(נבוכדנאצר)‪.‬‬
‫עכבר(זרובבל)‪.‬‬
‫משתנים בשאילתות‬
‫?‪-‬תלמיד(_שם‪_,‬משפחה‪ ,)1‬תלמידה(_שם‪_,‬משפחה‪.)2‬‬
‫_שם=רוני‬
‫_משפחה‪=1‬לוי‬
‫_משפחה‪=2‬מימון ;‬
‫לא‪.‬‬
‫‪32‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫נתונה תכנית פרולוג‪:‬‬
‫‪%‬תלמיד(_פרטי‪_,‬משפחה)‪.‬‬
‫תלמיד(רוני‪,‬לוי)‪.‬‬
‫תלמיד(משה‪,‬לוי)‪.‬‬
‫‪%‬תלמידה(_פרטי‪_,‬משפחה)‪.‬‬
‫תלמידה(רוני‪,‬מימון)‪.‬‬
‫משתנים בשאילתות‬
‫האם מותר לשאול באותה הרצת מחשב‪:‬‬
‫?‪-‬כבשה(_מי)‪.‬‬
‫_מי=דולי‪...‬‬
‫מותר!‬
‫?‪-‬עכבר(_מי)‪.‬‬
‫כמו באלגברה‪:‬‬
‫‪X2-3X-4=0‬‬
‫לא שולל ערך אחר של ‪ X‬בתרגיל אחר‪:‬‬
‫‪8X=-80‬‬
‫ל‪ X-‬אותו ערך בכל מופע שלו באותה שאילתה‪,‬‬
‫אך שאילתה חדשה היא כמו תרגיל חדש במתמטיקה‪.‬‬
‫‪33‬‬
‫משתנים‬
‫כיצד נבקש שתי כבשים מהתוכנית?‬
‫?‪-‬כבשה(_שם‪,)1‬כבשה(_שם‪.)2‬‬
‫_שם‪=1‬דולי‬
‫_שם‪=2‬דולי‬
‫כשיש לפרולוג מטרה מורכבת‬
‫(במקרה הנ"ל שתי מטרות קשורות בקשר גימום)‬
‫הוא מבצע מטרה אחת‪ ,‬וכשמצליח בה‬
‫הוא מתחיל לבצע את המטרה החדשה‬
‫מתחילת התוכנית!‬
‫‪34‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫נתונה תכנית פרולוג‪:‬‬
‫‪%‬כבשה(_מי_הכבשה)‪.‬‬
‫כבשה(דולי)‪.‬‬
‫כבשה(מולי)‪.‬‬
‫כבשה(בולי)‪.‬‬
‫‪ %‬עכבר(_מי_העכבר)‪.‬‬
‫עכבר(נבוכדנאצר)‪.‬‬
‫עכבר(זרובבל)‪.‬‬
‫משתנים‬
‫כיצד נבקש שתי כבשים מהתוכנית?‬
‫?‪-‬כבשה(_שם‪,)1‬כבשה(_שם‪.)2‬‬
‫_שם‪=1‬דולי‬
‫_שם‪=2‬דולי‬
‫כמו באלגברה –‬
‫משתנים שונים יכולים להיות בעלי אותו ערך‬
‫‪2X+3Y=5‬‬
‫אחת התשובות היא‪X=1,Y=1 :‬‬
‫על מנת להכריח את הפרולוג למצוא ערכים שונים למשתנים‬
‫נשתמש בסימן "שונה"‬
‫‪35‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫נתונה תכנית פרולוג‪:‬‬
‫‪%‬כבשה(_מי_הכבשה)‪.‬‬
‫כבשה(דולי)‪.‬‬
‫כבשה(מולי)‪.‬‬
‫כבשה(בולי)‪.‬‬
‫‪ %‬עכבר(_מי_העכבר)‪.‬‬
‫עכבר(נבוכדנאצר)‪.‬‬
‫עכבר(זרובבל)‪.‬‬
‫\=‬
‫משתנים‬
‫כיצד נבקש שתי כבשים מהתוכנית?‬
‫?‪-‬כבשה(_שם‪,)1‬כבשה(_שם‪_ ,)2‬שם‪_ =\ 1‬שם‪.2‬‬
‫_שם‪=1‬דולי‬
‫_שם‪=2‬מולי;‬
‫_שם‪=1‬דולי‬
‫_שם‪=2‬בולי;‬
‫_שם‪=1‬מולי‬
‫_שם‪=2‬דולי;‬
‫_שם‪=1‬מולי‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫נתונה תכנית פרולוג‪:‬‬
‫‪%‬כבשה(_מי_הכבשה)‪.‬‬
‫כבשה(דולי)‪.‬‬
‫כבשה(מולי)‪.‬‬
‫כבשה(בולי)‪.‬‬
‫‪ %‬עכבר(_מי_העכבר)‪.‬‬
‫עכבר(נבוכדנאצר)‪.‬‬
‫עכבר(זרובבל)‪.‬‬
‫_שם‪=2‬בולי;‬
‫_שם‪=1‬בולי‬
‫_שם‪=2‬דולי;‬
‫_שם‪=1‬בולי‬
‫_שם‪=2‬מולי;‬
‫‪36‬‬
‫לא‪.‬‬
‫\=‬
‫משתנה חסר זהות (משתנה אנונימי)‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫נתונה תכנית פרולוג‪:‬‬
‫‪ %‬סרט )_שם_סרט‪_ ,‬שם_קולנוע‪_ ,‬משעה‪_ ,‬עד_שעה‪_ ,‬מחיר_כרטיס(‪.‬‬
‫סרט )אשה_יפה‪ ,‬חן‪. (12,9,7 ,‬‬
‫סרט )רמבו‪ ,‬גן_‪.(23, 8, 5, 3‬‬
‫סרט )רמבו‪ ,‬כוכב‪.(9, 8, 6 ,‬‬
‫סרט )צלילי_המוסיקה‪ ,‬אור_‪.(5, 7, 2, 4‬‬
‫סרט )צלילי_המוסיקה‪ ,‬אור_גן_‪.(26, 5, 4, 6‬‬
‫סרט )עשיר_ועני‪ ,‬חן‪.(9, 11, 8 ,‬‬
‫סרט )בת_הים_הקטנה‪ ,‬פארק‪.(25, 12, 10 ,‬‬
‫סרט )פיטר_פן‪ ,‬דור‪.(30, 14, 12 ,‬‬
‫סרט )אהבה_ומלחמה‪ ,‬לב‪.(50, 11, 9 ,‬‬
‫סרט )ים_המוות‪ ,‬אורגיל‪.(76, 5, 4 ,‬‬
‫כיצד נשאל אילו סרטים יש במסד הידע?‬
‫‪37‬‬
‫משתנה חסר זהות (משתנה אנונימי)‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫נתונה תכנית פרולוג‪:‬‬
‫‪ %‬סרט )_שם_סרט‪_ ,‬שם_קולנוע‪_ ,‬משעה‪_ ,‬עד_שעה‪_ ,‬מחיר_כרטיס(‪.‬‬
‫‪. ( 7 , 9 , 12 ,‬‬
‫‪ ,‬חן‬
‫סרט )אשה_יפה‬
‫‪.( 23 , 8 , 5 ,‬‬
‫‪ ,‬גן_‪3‬‬
‫סרט )רמבו‬
‫‪.( 9 , 8 , 6 ,‬‬
‫‪ ,‬כוכב‬
‫סרט )רמבו‬
‫סרט )צלילי_המוסיקה ‪ ,‬אור_‪.( 5 , 7 , 2 , 4‬‬
‫סרט )צלילי_המוסיקה ‪ ,‬אור_גן_‪.( 26 , 5 , 4 , 6‬‬
‫‪.( 9 , 11 , 8 ,‬‬
‫‪ ,‬חן‬
‫סרט )עשיר_ועני‬
‫‪.( 25 , 12 , 10 ,‬‬
‫סרט )בת_הים_הקטנה‪ ,‬פארק‬
‫‪.( 30 , 14 , 12 ,‬‬
‫‪ ,‬דור‬
‫סרט )פיטר_פן‬
‫‪.( 50 , 11 , 9 ,‬‬
‫סרט )אהבה_ומלחמה ‪ ,‬לב‬
‫‪ ,‬אורגיל ‪.( 6 , 5 , 4 ,‬‬
‫סרט )ים_המוות‬
‫כיצד נשאל אילו סרטים יש במסד הידע?‬
‫‪38‬‬
‫משתנה חסר זהות (משתנה אנונימי)‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫נתונה תכנית פרולוג‪:‬‬
‫‪ %‬סרט )_שם_סרט‪_ ,‬שם_קולנוע‪_ ,‬משעה‪_ ,‬עד_שעה‪_ ,‬מחיר_כרטיס(‪.‬‬
‫סרט )אשה_יפה‪ ,‬חן‪. (12,9,7 ,‬‬
‫סרט )רמבו‪ ,‬גן_‪.(23, 8, 5, 3‬‬
‫סרט )רמבו‪ ,‬כוכב‪.(9, 8, 6 ,‬‬
‫סרט )צלילי_המוסיקה‪ ,‬אור_‪.(5, 7, 2, 4‬‬
‫סרט )צלילי_המוסיקה‪ ,‬אור_גן_‪.(26, 5, 4, 6‬‬
‫סרט )עשיר_ועני‪ ,‬חן‪.(9, 11, 8 ,‬‬
‫סרט )בת_הים_הקטנה‪ ,‬פארק‪.(25, 12, 10 ,‬‬
‫סרט )פיטר_פן‪ ,‬דור‪.(30, 14, 12 ,‬‬
‫סרט )אהבה_ומלחמה‪ ,‬לב‪.(50, 11, 9 ,‬‬
‫סרט )ים_המוות‪ ,‬אורגיל‪.(76, 5, 4 ,‬‬
‫‪ %‬סרט )_שם_סרט‪_ ,‬שם_קולנוע‪_ ,‬משעה‪_ ,‬עד_שעה‪_ ,‬מחיר_כרטיס(‪.‬‬
‫‪39‬‬
‫משתנה חסר זהות (משתנה אנונימי)‬
‫‪ %‬סרט )_שם_סרט‪_ ,‬שם_קולנוע‪_ ,‬משעה‪_ ,‬עד_שעה‪_ ,‬מחיר_כרטיס(‪.‬‬
‫האם מעניין אותנו שם הקולנוע?‬
‫האם מעניינות אותנו השעות?‬
‫האם מעניין אותנו המחיר?‬
‫לא ולא!‬
‫אם נשאל ‪-? :‬סרט(_שם)‪.‬‬
‫נקבל תשובה ‪ -‬לא‪.‬‬
‫לשם כך קיים משתנה חסר זהות – משמעותו – יש מתואר‪ ,‬אך ערכו אינו מעניין אותנו‪:‬‬
‫?‪-‬סרט(_שם‪.)_,_,_,_,‬‬
‫_שם= אישה_יפה ;‬
‫‪40‬‬
‫‪ %‬עובדות‬
‫‪ %‬אוהב(_מי_אוהב‪_,‬את_מי_אוהב)‪.‬‬
‫אוהב (דוד‪ ,‬יהונתן)‪.‬‬
‫משמעות שאילתות‬
‫‪ .1‬האם דוד אוהב את יהונתן?‬
‫?‪-‬אוהב (דוד‪ ,‬יהונתן)‪.‬‬
‫כן‪.‬‬
‫‪ .2‬האם יהונתן אוהב מישהו?‬
‫?‪-‬אוהב (יהונתן‪.) _ ,‬‬
‫לא‪.‬‬
‫‪ .3‬האם קיים מישהו שדוד אוהב‪ ,‬ומי הוא?‬
‫?‪-‬אוהב (דוד‪_ ,‬את_מי_אוהב)‪.‬‬
‫_את_מי_אוהב = יהונתן‪;>-‬‬
‫לא‪.‬‬
‫‪ .4‬האם קיים מישהו שאוהב את יהונתן ומי הוא?‬
‫?‪-‬אוהב (_מי_אוהב‪ ,‬יהונתן)‪.‬‬
‫_מי_אוהב = דוד‪;>-‬‬
‫לא‪.‬‬
‫‪ .5‬האם יש שניים שאחד אוהב את השני ומי הם?‬
‫?‪-‬אוהב (_מי_אוהב‪ ,‬את_מי_אוהב)‪.‬‬
‫_מי_אוהב = דוד‬
‫_את_מי_אוהב = יהונתן‪;>-‬‬
‫לא‪.‬‬
‫‪ .6‬האם קיים מישהו שאוהב את עצמו?‬
‫?‪-‬אוהב (_מי‪_,‬מי)‪.‬‬
‫לא‪.‬‬
‫‪41‬‬
‫שמות משתנים‬
‫מבחינת הפרולוג ניתן לבחור שמות משתנים שהם בעלי משמעות או כאלה שאינם‬
‫בעלי משמעות (כגון ‪(Y,X‬דפנה לא מרשה!)‪_,‬א‪_,‬ב)‪ ,‬אך שמות בעלי משמעות‬
‫מקלים הן על הבנת התכנית ותחזוקתה והן על הבנת התשובות‪.‬‬
‫קוראים לי ‪X‬‬
‫קוראים לי‬
‫_מי_חתן‬
‫‪42‬‬