1 / 59

כמה כללים לגבי החוברת :

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

deiondre
Download Presentation

כמה כללים לגבי החוברת :

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. כמה כללים לגבי החוברת : • כל תרגילי והסברי החוברת ושימושם הם על אחריות המשתמש בלבד, אינני אחראי לכל תוצאה בגין שימוש בחוברת. • כל החפץ להעתיק, לצלם או לשכפל חוברת זו יוכל לפנות אלי במייל ולקבל אישור. • החוברת פתוחה לשיפורים ואשמח לקבל הערות/הארות לשיפורים, תיקון טעויות או תוספות. לדואר : doribd@yahoo.com בנושא : חוברת PROLOG. • החוברת נבנתה על SWI-PROLOG גרסה 5.2.1, התרגילים הורצו על WINDOWS XP. • בחוברת נכללים תרגילים כשחלקם בוצעו במסגרת שעורי לוגיקה של ד"ר גיורא דולה במכללה האקדמית נתניה. • בכל מערך שיעור נקודת ההנחה היא כי המשתמש הפעיל מחדש את הפרולוג ולא המשיך בעבודתו, מטרת ההפעלה מחדש – ניקוי ושחרור הזיכרון שנתפס במהלך העבודה. כמו כן יכול המשתמש להמשיך בעבודה מבלי לסגור ולהפעיל את הפרולוג. • בממשק הפועל על מחשב – תוכן העניינים מכיל לינקים למיקומים + בכל ע"מ יש הקפצה לתוכן בחזרה. התחלה

  2. תוכן עניינים שיעור מס' 1 : חוקי פרולוג הבסיסים. שיעור מס' 2 : הפעלה והכרת תפריטי ה Prolog שיעור מס' 3 : כתיבת תוכנית צאצא שיעור מס' 4 : עריכת קובץ קיים שיעור מס' 5 : החלק המעשי שיעור מס' 6 : הכרת הממשק הגראפי התחלה

  3. שיעור מס' 1 נושא השיעור:חוקי פרולוג בסיסים התחלה

  4. חוקי הפרולוג • "קבוע" יוגדר כאשר האות השמאלית ביותר תהיה אות לטינית קטנה. • "משתנה" יוגדר כאשר האות השמאלית ביותר תהיה אות לטינית גדולה. • "יחס" יוגדר כמחרוזת המכילה סוגרים ונקודה בסוף, למשל parent(a,b). • "arity" יקרא, מספר הפסיקים בתוך סוגרי היחס ועוד אחד. • "פסוק" יחס אחד או יותר המסתיים בנקודה. • אחד מהקריטריונים להבדל בין יחסים הוא ה arity שלהם. • בפרולוג, הקוד אומנם קצר בדרך כלל אך המעקב יכול להיות קשה היות ומדובר בעקרון הרקורסיה. התחלה

  5. שיעור מס' 2 נושא השיעור:הפעלה והכרת תפריטי הפרולוג התחלה

  6. נסמן את התוכנה לאחר שהותקנה ונפעילה התחלה

  7. זהו מסך הפתיחה והמסך בו נעבוד גרסה: הפרולוג ממתינה לפקודה מאיתנו הסימן 1 מציין כי זו שורה מספר 1. התחלה

  8. טעינת קובץ עריכת קובץ קיים יצירת קובץ חדש אם ערכנו קובץ ונרצה לטעון אותו שוב כמו הסייר של חלונות (מראה את התוכניות שלנו ) התחלה

  9. העתקת תוכן שסומן הדבקת תוכן שסומן התחלה

  10. שינוי גופן כללי בתוכנה הצגת קובץ קונפיגורציות מערכת הצגה/שינוי גדלי מחסניות התחלה

  11. הפסקת תוכנית שרצה פתיחת חלון נוסף לעבודה במקביל התחלה

  12. צור נקודות מעקב יםTHREAD הצגת סטאטוס כרגע של ה מעקב גרפי התחלה

  13. אפשרות לקבלת עזרה או מהרשת או עזרה מובנית התחלה

  14. שיעור מס' 3 נושא השיעור:כתיבת תוכנית צאצא התחלה

  15. נכנס בתפריט לאופציה "חדש" עתה נכתוב תוכנית פשוטה שנכתבה בהרצאה, התוכנית מתארת יחס של צאצא ואב. אחרי כתיבת התוכנית נסביר כיצד טוענים אותה לזיכרון התחלה

  16. החלון הבא נפתח. נרשום למטה את שם הקובץ : relations את הסיומת הוא מקבל בצורה אוטומטית מהפרולוג לאישור נלחץ על "שמור" התחלה

  17. נקבל מסך חדש, הכולל את העורך : NOTEPAD נקבל מסך אזהרה שהקובץ אינו קיים ויש ליצור אותו. נאשר ב "כן" התחלה

  18. נרשום את הקובץ, מההרצאה נלחץ על תפריט "קובץ" (על מנת לשמור אותו) נבצע "שמור" (לשמירת הקובץ) נצא ע"י לחיצה על "יציאה" ונחזור לפרולוג.שימו לב לסימן האחוז ולאחריו המספר . הסימן אחוזמסמן הערה, כלומר כל מה שאחרי האחוז הוא הערה. המלצתי, כתבו את מספרי השורות כדי שיהיה נוח לבצע את המעקב. התחלה

  19. עתה ניטען את הקובץ לזיכרון הפרולוג. כפי שהוסבר בהתחלה, נלחץ על התחלה

  20. נגיע לספריה בה שמרנו את הקובץ מקודם, נסמן אותו ונלחץ על פתח התחלה

  21. הקובץ ניטען כפי שניתן לראות בשורה זו. נקבל מידע על זמן הטעינה וגודל הקובץ שנטען לזיכרון והמיקום בו הוא מאוכסן. התחלה

  22. שיעור מס' 4 נושא השיעור:עריכת קובץ קיים התחלה

  23. עתה נעלה תוכנית פשוטה (מתוך הרצאה) תוכנית של קשרי משפחה לשם כך נלחץ על התפריט קובץ ובתוכו עריכה התחלה

  24. נגיע לספריה המתאימה בה נמצא הקובץ הדרוש אותו אנו רוצים לערוך. נסמן אותו ונלחץ על "פתח" ניתן גם להקיש עליו פעמיים עם העכבר – הפעולה זהה. התחלה

  25. לאחר שנסיים, נבצע שמירה ב: NOTEPAD ונצא ממנו בחזרה לפרולוג. כאשר ברגע שנצא, התוכנית תיטען לפרולוג בתצורתה החדשה. (המלצה שלי – לטעון אותה בצורה ידנית מחדש ולא להסתמך על מנגנון זה.) התחלה

  26. שיעור מס' 5 נושא השיעור:החלק המעשי התחלה

  27. FILE->CONSULTנטען ע"י : כפי שלמדנו בשקפים הקודמים את הקובץ "צאצא" תוכנו הוא : ish(a,x).%1 ish(b,a).%2 ish(c,a).%3 ish(d,b).%4 ish(e,b).%5 ish(f,c).%6 ish(g,c).%7 ish(h,d).%8 ish(i,d).%9 ish(j,e).%10 ish(k,e).%11 tz(X,Y):-ish(X,Y).%12 tz(X,Y):-ish(Z,Y),tz(X,Z).%13 שורות אלו מתארות יחס בין אבא לבן. למשל x הוא אבא של a ו a הוא אבא של b ושל c. הפורמט של צאצא : (צאצא של, האם אני)tz התחלה

  28. עתה נריץ מספר שאילתות על מנת לקבל רושם מה בעצם פרולוג עושה: לפני כן נדגיש כי בפרולוג בכל משפט שנרשם יש לרשום נקודה בסוף. 1 ?- tz(x,a). שאילתה ראשונה שהרצתי No למה קיבלתי תשובה שלילית. בעצם מה שאלתי פה ? שאלתי האם a הוא צאצא של x, לפי בסיס הנתונים זו היא שגיאה ולכן קבלנו תשובה שלילית. 2 ?- tz(b,x). שאילתה שנייה שהרצתי Yes למה קיבלתי תשובה חיובית. בעצם מה שאלתי פה ? שאלתי האם b הוא צאצא של x, לפי בסיס הנתונים a הוא אבא של b ו a הוא הבן של x ולכן b הוא הצאצא של x. התחלה

  29. 3 ?- tz(_,x). שאילתה שלישית Yes למה קיבלתי תשובה חיובית. בעצם מה שאלתי פה ? הקו התחתון אומר לפרולוג לבדוק האם הקשר קיים. השאלה היא בעצם – האם ל x יש צאצאים. 1 ?- tz(WHO,x). שאילתה רביעית WHO = a ; WHO = b ; WHO = c ; WHO = d ; WHO = e ; WHO = h ; WHO = i ; WHO = j ; WHO = k ; WHO = f ; WHO = g ; No מה שאלתי פה ? שאלתי מי הם הצאצאים של x. המשתנה WHO מקבל כל פעם את אחד מהצאצאים. כשאלחץ על נקודה פסיק הפרולוג תבדוק האם יש עוד צאצא, במידה וכן – אקבל אותו, אחרת אקבל NO. התחלה

  30. 2 ?- tz(b,WHO).שאילתה חמישית WHO = a ; WHO = x ; No מה שאלתי פה ? שאלתי של מי b הוא צאצא. במילים אחרות, מי הם האבא, סבא, אבא של סבא של b. קיבלתי אכן כי a ו x ברשימה. וזה נכון היות ו a הוא אכן האבא של b וכמו כן x הוא האבא של a מה שהופך אותו להיות הסבא של b. 3 ?- tz(_,_). Yes מה שאלתי פה ? שאלתי האם קיים קשר צאצא בבסיס הנתונים בכלל. כמובן שקיים קשר כזה ולכן התשובה היא כן. התחלה

  31. שיעור מס' 6 נושא השיעור:הכרת הממשק הגראפי התחלה

  32. בעזרת מקש CTRL+C נקבל את השורה הבאה : Action (h for help) ? נלחץ על h על מנת לקבל את תפריט העזרה : Action (h for help) ? Options: a: abort b: break c: continue e: exit g: goals t: trace h (?): help התחלה

  33. נטען כפי שלמדנו קודם את קובץ ה tz - צאצא נפעיל את ה graphical debugger דרך תפריט debug. נלחץ CTRL+C ולאחר מכן hנקבל את דף האופציות הזה – עתה נלחץ על t לביצוע מעקב גרפי ונקבל בעצם שורה ריקה עם הסמן בה , נלחץ אנטר פעם אחת כדי לקבל את הסימן הזה – נרשום tz(a,c) כלומר נשאל האם a הוא צאצא של c ונלחץ על אנטר לאחר מכן. התחלה

  34. קבלנו את החלון של ה graphical debugger לתוכנת המעקב יש מספר רב של פונקציות, אסביר רק את הפונקציה הרלבנטית לצורך המעקב. להתקדם במעקב זוכרים מה רשמנו לבדיקה ? tz(a,c) עומק העץ ניתן לראות בחלון זה את תוכן הקובץ שהרצנו (tz) ואת הסימן הירוק המצביע על השורה בה אנו נמצאים כרגע הפרולוג חפשה בקובץ את הביטוי tz ומצאה אותו בשורה זו. כדי להתקדם במעקב נלחץ על סימן החץ שהוזכר קודם. התחלה

  35. לחצנו וזה המסך שקיבלנו העץ ממשיך לגדול הסימון הירוק עובר לאיבר הבא אותו הפרולוג תבדוקהאיבר הוא איש ish(x,y) כאשר נרוץ עם איבר זה על המאגר שלנו ונבדוק את היחסים. בפועל נרוץ עם ish(a,c)נלחץ שוב על חץ ההתקדמות ב DEBUGGER התחלה

  36. הסימון הירוק עובר לאיבר הבא אותו הפרולוג תבדוקהאיבר הוא איש ish(x,y) כאשר נרוץ עם איבר זה על המאגר שלנו ונבדוק את היחסים. בפועל נרוץ עם ish(a,c)נלחץ שוב על חץ ההתקדמות ב DEBUGGER התחלה

  37. כצפוי, היות ולא נמצא ה ish(a,c)תנסה הפרולוג את שורה 13ניתן לראות לפי הסימון הצהוב נלחץ שוב על חץ ההתקדמות התחלה

  38. עתה תבדוק הפרולוג את ish(X,c) כלומר האם יש צאצאים ל c. ניתן לראות את הסימון הירוק נלחץ שוב על חץ ההתקדמות התחלה

  39. צאצא ראשון של c הוא f מציאתו תחזירנו לשורה 13 נלחץ שוב על חץ ההתקדמות התחלה

  40. הפרולוג תנסה להפעיל את חלקה השני של שורה 13 ותכשל נלחץ שוב על חץ ההתקדמות התחלה

  41. חוזרים לשורה 12 נלחץ שוב על חץ ההתקדמות התחלה

  42. שוב מתבצעת סריקה מחפשים אחר ish(a,f) לא מוצאים נלחץ שוב על חץ ההתקדמות התחלה

  43. אנו בשורה 13 הפרולוג תכנס פנימה נלחץ שוב על חץ ההתקדמות התחלה

  44. שוב תשאל את השאילתה של אישאבל הפעם עם ish(X,f) כלומר האם יש ל f צאצאים. נלחץ שוב על חץ ההתקדמות התחלה

  45. אין לו ולכן השורה נצבעת בצבע זה נלחץ שוב על חץ ההתקדמות התחלה

  46. סיימנו עם שורה 12 ו 13 עתה כזכור לנו, ל c יש 2 צאצאים שגילינו קודם לכן והם f ו g. עבור f בצענו את השאילתות הדרושות לחקור האם גם לו יש צאצאים ולא מצאנו כאלו. עתה על אותו בסיס נבצע את "עבודת המחקר" עבור צאצא g. נלחץ שוב על חץ ההתקדמות התחלה

  47. חוזרים בסריקת המאגר לשורה 7 נלחץ שוב על חץ ההתקדמות התחלה

  48. חוזרים בסריקת המאגר לשורה 7 נלחץ שוב על חץ ההתקדמות התחלה

  49. אחרי מציאת היחס תעבור הפרולוג בשורה 13 לחלק המסומן בירוק מודגש נלחץ שוב על חץ ההתקדמות התחלה

  50. בדומה לסריקות הקודמות, נבצע עתה ish(a,g) וברור כי נכשל היות ואין יחס כזה (מה גם שידוע לנו ככותבי בסיס הנתונים כי g צאצא של a ולא להיפך). נלחץ שוב על חץ ההתקדמות התחלה

More Related