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

Preview:

DESCRIPTION

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

Citation preview

1

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

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

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

.PROLOG בנושא : חוברת doribd@yahoo.com לדואר : .WINDOWS XP, התרגילים הורצו על 5.2.1 גרסה SWI-PROLOG החוברת נבנתה על

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

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

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

התחלה

2

תוכן ענייניםתוכן עניינים

: חוקי פרולוג : חוקי פרולוג 11שיעור מס' שיעור מס' הבסיסים.הבסיסים.

: הפעלה והכרת תפריטי ה : הפעלה והכרת תפריטי ה 22שיעור מס' שיעור מס' PrologProlog

: כתיבת תוכנית צאצא : כתיבת תוכנית צאצא33שיעור מס' שיעור מס'

: עריכת קובץ קיים : עריכת קובץ קיים44שיעור מס' שיעור מס'

: החלק : החלק 55שיעור מס' שיעור מס' : הכרת הממשק הגראפי : הכרת הממשק הגראפי66שיעור מס' שיעור מס' המעשיהמעשי

התחלההתחלה

3

11שיעור מס' שיעור מס' נושא השיעור:חוקי פרולוג נושא השיעור:חוקי פרולוג

בסיסיםבסיסים

התחלההתחלה

4

חוקי הפרולוגחוקי הפרולוג

יוגדר כאשר האות השמאלית ביותר תהיה אות לטינית קטנה. יוגדר כאשר האות השמאלית ביותר תהיה אות לטינית קטנה. "קבוע" "קבוע"

יוגדר כאשר האות השמאלית ביותר תהיה אות לטינית גדולה. יוגדר כאשר האות השמאלית ביותר תהיה אות לטינית גדולה. "משתנה" "משתנה"

..parent(a,b)parent(a,b)יוגדר כמחרוזת המכילה סוגרים ונקודה בסוף, למשל יוגדר כמחרוזת המכילה סוגרים ונקודה בסוף, למשל "יחס""יחס"

""arityarity " ".יקרא, מספר הפסיקים בתוך סוגרי היחס ועוד אחד.יקרא, מספר הפסיקים בתוך סוגרי היחס ועוד אחד

יחס אחד או יותר המסתיים בנקודה.יחס אחד או יותר המסתיים בנקודה."פסוק""פסוק"

שלהם. שלהם.arityarity אחד מהקריטריונים להבדל בין יחסים הוא ה אחד מהקריטריונים להבדל בין יחסים הוא ה

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

התחלההתחלה

5

22שיעור מס' שיעור מס' נושא השיעור: נושא השיעור:

הפעלה והכרת תפריטי הפרולוגהפעלה והכרת תפריטי הפרולוג

התחלההתחלה

6

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

התחלההתחלה

7

זהו מסך הפתיחה והמסך בו נעבוד

הפרולוג ממתינה לפקודה מאיתנו

1 מציין כי זו שורה מספר 1הסימן .

:גרסה

התחלההתחלה

8

טעינת קובץעריכת קובץ קייםיצירת קובץ חדש

אם ערכנו קובץ ונרצה לטעון אותו שוב

כמו הסייר של חלונות (מראה את התוכניות שלנו )

התחלההתחלה

9

העתקת תוכן שסומן

הדבקת תוכן שסומן

התחלההתחלה

10

שינוי גופן כללי בתוכנה

הצגת קובץ קונפיגורציות מערכת

הצגה/שינוי גדלי מחסניות

התחלההתחלה

11

הפסקת תוכנית שרצה

פתיחת חלון נוסף לעבודה במקביל

התחלההתחלה

12

צור נקודות מעקב

מעקב גרפי

הצגת סטאטוס כרגע של THREADיםה

התחלההתחלה

13

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

התחלההתחלה

14

33שיעור מס' שיעור מס' נושא השיעור:כתיבת תוכנית נושא השיעור:כתיבת תוכנית

צאצאצאצא

התחלההתחלה

15

"נכנס בתפריט לאופציה "חדש

.עתה נכתוב תוכנית פשוטה שנכתבה בהרצאה, התוכנית מתארת יחס של צאצא ואב

אחרי כתיבת התוכנית נסביר כיצד טוענים אותה לזיכרון

התחלההתחלה

16

החלון הבא נפתח. נרשום למטה : את שם הקובץ

relations

את הסיומת הוא מקבל בצורה

אוטומטית מהפרולוג

"לאישור נלחץ על "שמור

התחלההתחלה

17

נקבל מסך חדש, הכולל את העורך : NOTEPAD

נקבל מסך אזהרה שהקובץ אינו קיים ויש ליצור אותו.נאשר ב "כן"

התחלההתחלה

18

נרשום את הקובץ, מההרצאהנלחץ על תפריט "קובץ" (על מנת לשמור אותו)

נבצע "שמור" (לשמירת הקובץ)נצא ע"י לחיצה על "יציאה" ונחזור לפרולוג.

שימו לב לסימן האחוז ולאחריו המספר . הסימן אחוזמסמן הערה, כלומר כל מה שאחרי האחוז הוא הערה.

המלצתי, כתבו את מספרי השורות כדי שיהיה נוח לבצע את המעקב.

התחלההתחלה

19

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

התחלההתחלה

20

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

ונלחץ על פתח

התחלההתחלה

21

הקובץ ניטען כפי שניתן לראות בשורה זו.

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

התחלההתחלה

22

44שיעור מס' שיעור מס' נושא השיעור:עריכת קובץ קיים נושא השיעור:עריכת קובץ קיים

התחלההתחלה

23

עתה נעלה תוכנית פשוטה (מתוך הרצאה)

תוכנית של קשרי משפחה

לשם כך נלחץ על התפריט קובץ ובתוכו עריכה

התחלההתחלה

24

נגיע לספריה המתאימה בה נמצא הקובץ הדרוש אותו אנו רוצים

.לערוך

"נסמן אותו ונלחץ על "פתח

ניתן גם להקיש עליו פעמיים עם .העכבר – הפעולה זהה

התחלההתחלה

25

:לאחר שנסיים, נבצע שמירה ב

NOTEPAD

.ונצא ממנו בחזרה לפרולוג

.כאשר ברגע שנצא, התוכנית תיטען לפרולוג בתצורתה החדשה

המלצה שלי – לטעון אותה בצורה ידנית מחדש ולא להסתמך )(.על מנגנון זה

התחלההתחלה

26

55שיעור מס' שיעור מס' נושא השיעור:החלק המעשי נושא השיעור:החלק המעשי

התחלההתחלה

27

FILE->CONSULTFILE->CONSULTנטען ע"ינטען ע"י : :

""כפי שלמדנו בשקפים הקודמים את הקובץ "צאצאכפי שלמדנו בשקפים הקודמים את הקובץ "צאצא

:: תוכנו הואתוכנו הואishish((a,xa,x).).%1%1ishish((b,ab,a).).%2%2ishish((c,ac,a).).%3%3ishish((d,bd,b).).%4%4ishish((e,be,b).).%5%5ishish((f,cf,c).).%6%6ishish((g,cg,c).).%7%7ishish((h,dh,d).).%8%8ishish((i,di,d).).%9%9ishish((j,ej,e).).%10%10ishish((k,ek,e).).%11%11tztz((X,YX,Y):-):-ishish((X,YX,Y).).%12%12tztz((X,YX,Y):-):-ishish((Z,YZ,Y)),tz,tz((X,ZX,Z).).%13%13

aa הוא אבא של הוא אבא של xxשורות אלו מתארות יחס בין אבא לבן. למשל שורות אלו מתארות יחס בין אבא לבן. למשל

..cc ושל ושל bb הוא אבא של הוא אבא של aaו ו

tztzהפורמט של צאצא : (צאצא של, האם אני)הפורמט של צאצא : (צאצא של, האם אני) התחלההתחלה

28

עתה נריץ מספר שאילתות על מנת לקבל רושם מה בעצםעתה נריץ מספר שאילתות על מנת לקבל רושם מה בעצם

::פרולוג עושהפרולוג עושה

לפני כן נדגיש כי בפרולוג בכל משפט שנרשם יש לרשום נקודה לפני כן נדגיש כי בפרולוג בכל משפט שנרשם יש לרשום נקודה ..בסוףבסוף

1 ?1 ?- - tztz((x,ax,a). ). שאילתה ראשונה שהרצתישאילתה ראשונה שהרצתי

NoNoלמה קיבלתי תשובה שלילית. בעצם מה שאלתי פה ?למה קיבלתי תשובה שלילית. בעצם מה שאלתי פה ?

, לפי בסיס הנתונים זו היא שגיאה , לפי בסיס הנתונים זו היא שגיאה xx הוא צאצא של הוא צאצא של aaשאלתי האם שאלתי האם ולכןולכן

קבלנו תשובה שלילית.קבלנו תשובה שלילית.

2 ?- tz(b,x).2 ?- tz(b,x). שאילתה שנייה שהרצתישאילתה שנייה שהרצתי

YesYesלמה קיבלתי תשובה חיובית. בעצם מה שאלתי פה ?למה קיבלתי תשובה חיובית. בעצם מה שאלתי פה ?

bb הוא אבא של הוא אבא של aa, לפי בסיס הנתונים , לפי בסיס הנתונים xx הוא צאצא של הוא צאצא של bbשאלתי האם שאלתי האם ..xx הוא הצאצא של הוא הצאצא של bb ולכן ולכן xx הוא הבן של הוא הבן של aaו ו

התחלההתחלה

29

3 ?- tz(_,x). 3 ?- tz(_,x). שאילתה שלישיתשאילתה שלישית

YesYesלמה קיבלתי תשובה חיובית. בעצם מה שאלתי פה ?למה קיבלתי תשובה חיובית. בעצם מה שאלתי פה ?

יש יש xxהקו התחתון אומר לפרולוג לבדוק האם הקשר קיים. השאלה היא בעצם – האם ל הקו התחתון אומר לפרולוג לבדוק האם הקשר קיים. השאלה היא בעצם – האם ל צאצאים.צאצאים.

1 ?- tz(WHO,x).1 ?- tz(WHO,x). שאילתה רביעיתשאילתה רביעית

WHO = a ;WHO = a ;WHO = b ;WHO = b ;WHO = c ;WHO = c ;WHO = d ;WHO = d ;WHO = e ;WHO = e ;WHO = h ;WHO = h ;WHO = i ;WHO = i ;WHO = j ;WHO = j ;WHO = k ;WHO = k ;WHO = f ;WHO = f ;WHO = g ;WHO = g ;NoNo

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

..NONOוכן – אקבל אותו, אחרת אקבל וכן – אקבל אותו, אחרת אקבל התחלההתחלה

30

2 ?- tz(b,WHO).2 ?- tz(b,WHO).שאילתה חמישיתשאילתה חמישית

WHO = a ;WHO = a ;

WHO = x ;WHO = x ;

NoNoמה שאלתי פה ?מה שאלתי פה ?

..bb הוא צאצא. במילים אחרות, מי הם האבא, סבא, אבא של סבא של הוא צאצא. במילים אחרות, מי הם האבא, סבא, אבא של סבא של bbשאלתי של מי שאלתי של מי הוא האבא הוא האבא xx וכמו כן וכמו כן bb הוא אכן האבא של הוא אכן האבא של aa ברשימה. וזה נכון היות ו ברשימה. וזה נכון היות ו xx ו ו aaקיבלתי אכן כי קיבלתי אכן כי

..bb מה שהופך אותו להיות הסבא של מה שהופך אותו להיות הסבא של aaשל של

3 ?3 ?- - tztz((_,__,_).).

YesYesמה שאלתי פה ?מה שאלתי פה ?

שאלתי האם קיים קשר צאצא בבסיס הנתונים בכלל. כמובן שקיים קשר כזה ולכן שאלתי האם קיים קשר צאצא בבסיס הנתונים בכלל. כמובן שקיים קשר כזה ולכן התשובה היא התשובה היא

כן.כן.

התחלההתחלה

31

66שיעור מס' שיעור מס' נושא השיעור:הכרת הממשק נושא השיעור:הכרת הממשק

הגראפיהגראפי

התחלההתחלה

32

נקבל את השורה הבאה : נקבל את השורה הבאה : CTRLCTRL++CCבעזרת מקש בעזרת מקש

Action Action ((h for helph for help) ) ? ? על מנת לקבל את תפריט העזרה : על מנת לקבל את תפריט העזרה : hhנלחץ על נלחץ על

Action (h for help) ? Options:Action (h for help) ? Options:a: abort b: breaka: abort b: breakc: continue e: exitc: continue e: exitg: goals t: traceg: goals t: traceh (?): helph (?): help

התחלההתחלה

33

- tzנטען כפי שלמדנו קודם את קובץ ה צאצא

. debug דרך תפריט graphical debuggerנפעיל את ה

h ולאחר מכן CTRL+Cנלחץ נקבל את דף האופציות הזה –

לביצוע מעקב גרפי ונקבל בעצם tעתה נלחץ על שורה ריקה עם הסמן בה , נלחץ אנטר פעם אחת

כדי לקבל את הסימן הזה – הוא צאצא a כלומר נשאל האם tz(a,c)נרשום

ונלחץ על אנטר לאחר מכן.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

f הוא cצאצא ראשון של 13מציאתו תחזירנו לשורה

נלחץ שוב על חץ ההתקדמות

התחלההתחלה

40

הפרולוג תנסה להפעיל את חלקה ותכשל13השני של שורה

נלחץ שוב על חץ ההתקדמות

התחלההתחלה

41

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

התחלההתחלה

42

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

נלחץ שוב על חץ ההתקדמות

התחלההתחלה

43

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

התחלההתחלה

44

שוב תשאל את השאילתה של איש כלומר ish(X,f)אבל הפעם עם

צאצאים.fהאם יש ל נלחץ שוב על חץ ההתקדמות

התחלההתחלה

45

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

התחלההתחלה

46

עתה כזכור 13 ו 12סיימנו עם שורה צאצאים שגילינו קודם 2 יש cלנו, ל

בצענו את f. עבור g ו fלכן והם השאילתות הדרושות לחקור האם גם לו יש צאצאים ולא מצאנו כאלו.

עתה על אותו בסיס נבצע את .g"עבודת המחקר" עבור צאצא

נלחץ שוב על חץ ההתקדמות

התחלההתחלה

47

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

התחלההתחלה

48

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

התחלההתחלה

49

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

נלחץ שוב על חץ ההתקדמות

התחלההתחלה

50

בדומה לסריקות הקודמות, נבצע עתה ish(a,g) וברור כי נכשל היות ואין יחס כזה

(מה גם שידוע לנו ככותבי בסיס הנתונים כי g צאצא של a.(ולא להיפך

נלחץ שוב על חץ ההתקדמות

התחלההתחלה

51

היחס אינו נמצא והוא נכשל.נלחץ שוב על חץ ההתקדמות

התחלההתחלה

52

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

התחלההתחלה

53

13הפרולוג נכנסת פנימה בשורה ish(X,g)ומנסה להפעיל את היחס .gכלומר חיפוש אחר צאצאי

כמובן שהיא תיכשל נלחץ שוב על חץ ההתקדמות

התחלההתחלה

54

מתבצעת סריקה וכישלון צפוי callנשים לב כיצד העץ בריבוע

stack.חוזר אחורה ברקורסיה נלחץ שוב על חץ ההתקדמות

התחלההתחלה

55

מחזירנו 13הכישלון של שורה שגם היא נכשלת 12לשורה

כתוצאה מכך

נלחץ שוב על חץ ההתקדמות

התחלההתחלה

56

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

התחלההתחלה

57

שלבי החזרה ברקורסיה , ניתן לשים לב בשלבים אלו לעץ הרקורסיה

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

התחלההתחלה

58

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

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

הפרולוג.נלחץ שוב על חץ ההתקדמות

התחלההתחלה

59

קיבלנו תוצאה שלילית וצפויה צאצא בשם cשמשמעותה – אין ל

a .אחרת דרך אגב – תוך כדי הבדיקה

במסך המעקב הגראפי היינו מקבלים את התוצאות בחלון הזה

של הפרולוג.

התחלההתחלה

Recommended