לולאות בפרולוג

VBMaster2

New member
לולאות בפרולוג

שלום! משהו יודע איך משתמשים בלולאות בפרולוג? תודה!
 

zagzagzag

New member
חוקים ורקורסיה

למשל, "לולאה" שתדפיס את כל המספרים מ1 עד N
loop(0). loop(N) :- M is N-1, loop(M), write(N).​
כמו שבטח שמת לב, זה שונה משפות אחרות. אין לך מבנה "רגיל" של לולאת for או while
 

VBMaster2

New member
אני מתכוון...

אני יודע שאפשר ליישם את זה ברקורסיה, אבל ברקורסיה זה יוצא מאוד לא יעיל... אני יודע שקיימת אפשרות ליצור לולאה בפרולוג ( יש חוק שנקרא repeat, אבל אני לא יודע איך להשתמש בו...)
 

zagzagzag

New member
פרולוג לא נועדה לשימושים האלה

בשביל זה יש לך שפות פרוצדורליות כמו C ופסקל אולי הקישור הבא יעזור בקשר ל-repeat אני גם זוכר במעומעם משהו על חוק בשם for, אבל אני לא יכול לתת עוד פרטים. בכל מקרה, בקישור שנתתי משתמשים ב-repeat עם המנגנונים הרגילים של פרולוג (backtracking וכו'), כך שאני לא חושב שתקבל איזשהו שיפור ביעילות. שוב, אם חשובה לך יעילות בלולאות, עדיף שתשתמש בשפה אחרת (אלא אם זו עבודה לביה"ס, ואז ממילא לאף אחד לא אכפת מיעילות
).
 
למעלה