SlideShare a Scribd company logo
1 of 112
Download to read offline
‫מדעי‬ ‫לתכנות‬ ‫מבוא‬
‫הרצאה‬10‫חלק‬1
Namespace
2017
Igor Kleiner ©
‫מטרה‬
‫בפייתון‬ ‫השמות‬ ‫מרחב‬ ‫על‬ ‫ללמוד‬
‫השמות‬ ‫מרחב‬ ‫מהו‬
•‫בפייתון‬‫השמות‬ ‫מרחב‬‫לאובייקטים‬ ‫משתנים‬ ‫שמות‬ ‫בין‬ ‫מיפוי‬ ‫טבלת‬ ‫הוא‬
‫השמות‬ ‫מרחב‬ ‫מהו‬
•‫בפייתון‬‫השמות‬ ‫מרחב‬‫לאובייקטים‬ ‫משתנים‬ ‫שמות‬ ‫בין‬ ‫מיפוי‬ ‫טבלת‬ ‫הוא‬
•‫פשוטה‬ ‫מדוגמא‬ ‫נתחיל‬:
Namespace
x 12
z 22
y “Hello”
‫משתנים‬ ‫של‬ ‫שמות‬
‫ערכים‬
‫השמות‬ ‫מרחב‬ ‫מהו‬
•‫בפייתון‬‫השמות‬ ‫מרחב‬‫לאובייקטים‬ ‫משתנים‬ ‫שמות‬ ‫בין‬ ‫מיפוי‬ ‫טבלת‬ ‫הוא‬
•‫מודול‬ ‫לכל‬ ‫בפייתון‬,‫פונקציה‬ ‫לכל‬,‫מחלקה‬ ‫ולכל‬(‫נלמד‬ ‫לא‬)‫משלו‬ ‫השמות‬ ‫מרחב‬ ‫יש‬
•‫נקרא‬ ‫כזה‬ ‫השמות‬ ‫מרחב‬‫לוקאלי‬‫מסוים‬ ‫לאובייקט‬ ‫משויך‬ ‫הוא‬ ‫כי‬–‫פונקציה‬,‫וכו‬ ‫מודול‬'
Namespace
x 12
z 22
y “Hello”
‫השמות‬ ‫מרחב‬ ‫מהו‬
•‫בפייתון‬‫השמות‬ ‫מרחב‬‫לאובייקטים‬ ‫משתנים‬ ‫שמות‬ ‫בין‬ ‫מיפוי‬ ‫טבלת‬ ‫הוא‬
•‫מודול‬ ‫לכל‬ ‫בפייתון‬,‫פונקציה‬ ‫לכל‬,‫מחלקה‬ ‫לכל‬(‫נלמד‬ ‫לא‬)‫משלו‬ ‫השמות‬ ‫מרחב‬ ‫יש‬
•‫נקרא‬ ‫כזה‬ ‫השמות‬ ‫מרחב‬‫לוקאלי‬‫מסוים‬ ‫לאובייקט‬ ‫משויך‬ ‫הוא‬ ‫כי‬:‫פונקציה‬,‫וכו‬ ‫מודול‬'
•‫הסתיים‬ ‫הפונקציה‬ ‫של‬ ‫ביצוע‬ ‫וכאשר‬ ‫עבורה‬ ‫מיוצר‬ ‫השמות‬ ‫מרחב‬ ‫לפונקציה‬ ‫קוראים‬ ‫אנו‬ ‫כאשר‬
‫נמחק‬ ‫המרחב‬
Namespace
x 12
z 22
y “Hello”
‫השמות‬ ‫מרחב‬ ‫מהו‬
•‫בפייתון‬‫השמות‬ ‫מרחב‬‫לאובייקטים‬ ‫משתנים‬ ‫שמות‬ ‫בין‬ ‫מיפוי‬ ‫טבלת‬ ‫הוא‬
•‫מודול‬ ‫לכל‬ ‫בפייתון‬,‫פונקציה‬ ‫לכל‬,‫מחלקה‬ ‫לכל‬(‫נלמד‬ ‫לא‬)‫משלו‬ ‫השמות‬ ‫מרחב‬ ‫יש‬
•‫נקרא‬ ‫כזה‬ ‫השמות‬ ‫מרחב‬‫לוקאלי‬‫מסוים‬ ‫לאובייקט‬ ‫משויך‬ ‫הוא‬ ‫כי‬:‫פונקציה‬,‫וכו‬ ‫מודול‬'
•‫הסתיים‬ ‫הפונקציה‬ ‫של‬ ‫ביצוע‬ ‫וכאשר‬ ‫עבורה‬ ‫מיוצר‬ ‫השמות‬ ‫מרחב‬ ‫לפונקציה‬ ‫קוראים‬ ‫אנו‬ ‫כאשר‬
‫נמחק‬ ‫המרחב‬
•‫גלובאלי‬ ‫שמות‬ ‫למרחב‬ ‫ושייכים‬ ‫גלובאליים‬ ‫נקראים‬ ‫תוכנה‬ ‫של‬ ‫ראשי‬ ‫בגוף‬ ‫שמוגדרים‬ ‫משתנים‬
Namespace
x 12
z 22
y “Hello”
‫קריאה‬ ‫בעת‬ ‫מיוצר‬ ‫לוקאלי‬ ‫השמות‬ ‫מרחב‬
‫לפונקציה‬f
‫גלובאלי‬ ‫השמות‬ ‫מרחב‬
‫חזרה‬ ‫לאחר‬ ‫ימחק‬ ‫לוקאלי‬ ‫שמות‬ ‫מרחב‬
‫מפונקציה‬
‫השמות‬ ‫מרחב‬ ‫מהו‬
•‫בפייתון‬‫השמות‬ ‫מרחב‬‫לאובייקטים‬ ‫משתנים‬ ‫שמות‬ ‫בין‬ ‫מיפוי‬ ‫טבלת‬ ‫הוא‬
•‫מודול‬ ‫לכל‬ ‫בפייתון‬,‫פונקציה‬ ‫לכל‬,‫מחלקה‬ ‫ולכל‬(‫למדנו‬ ‫לא‬)‫משלו‬ ‫השמות‬ ‫מרחב‬ ‫יש‬
•‫נקרא‬ ‫הזה‬ ‫השמות‬ ‫מרחב‬‫לוקאלי‬‫מסוים‬ ‫לאובייקט‬ ‫משויך‬ ‫הוא‬ ‫כי‬:‫פונקציה‬,‫וכו‬ ‫מודול‬'
•‫הסתיים‬ ‫הפונקציה‬ ‫של‬ ‫ביצוע‬ ‫וכאשר‬ ‫עבורה‬ ‫מיוצר‬ ‫השמות‬ ‫המרחב‬ ‫לפונקציה‬ ‫קוראים‬ ‫אנו‬ ‫כאשר‬
‫נמחק‬ ‫המרחב‬
•‫גלובאלי‬ ‫שמות‬ ‫למרחב‬ ‫ושייכים‬ ‫גלובאליים‬ ‫נקראים‬ ‫תוכנה‬ ‫של‬ ‫ראשי‬ ‫בגוף‬ ‫שמוגדרים‬ ‫משתנים‬
•‫שונים‬ ‫שמות‬ ‫במרחבי‬ ‫למשתנים‬ ‫שם‬ ‫אותו‬ ‫לתת‬ ‫אפשר‬
Namespace
x 12
z 22
y “Hello”
‫מדעי‬ ‫לתכנות‬ ‫מבוא‬
‫הרצאה‬10‫חלק‬2
‫ההכרה‬ ‫תחום‬Scope -
2017
Igor Kleiner
‫מטרה‬
‫של‬ ‫ההכרה‬ ‫תחום‬ ‫על‬ ‫ללמוד‬‫בפייתון‬ ‫משתנים‬
‫השמות‬ ‫מרחב‬–‫תזכורת‬
•‫משלה‬ ‫השמות‬ ‫מרחב‬ ‫יש‬ ‫מחלקה‬ ‫או‬ ‫מודול‬ ‫או‬ ‫פונקציה‬ ‫לכל‬ ‫בפייתון‬
•‫לפונקציה‬ ‫קריאה‬ ‫בעת‬‫הפונקציה‬ ‫של‬ ‫השמות‬ ‫מרחב‬ ‫מיוצר‬
•‫נמחק‬ ‫הפונקציה‬ ‫של‬ ‫השמות‬ ‫המרחב‬ ‫מהפונקציה‬ ‫יוצאים‬ ‫כאשר‬
‫השמות‬ ‫מרחב‬–‫תזכורת‬
•‫משלה‬ ‫השמות‬ ‫מרחב‬ ‫יש‬ ‫מחלקה‬ ‫או‬ ‫מודול‬ ‫או‬ ‫פונקציה‬ ‫לכל‬ ‫בפייתון‬
•‫לפונקציה‬ ‫קריאה‬ ‫בעת‬‫הפונקציה‬ ‫של‬ ‫השמות‬ ‫מרחב‬ ‫מיוצר‬
•‫נמחק‬ ‫שמות‬ ‫המרחב‬ ‫מהפונקציה‬ ‫יוצאים‬ ‫כאשר‬
•‫מסקנה‬:‫תוכנה‬ ‫ביצוע‬ ‫בזמן‬–‫השמות‬ ‫מרחבי‬ ‫מספר‬ ‫קיים‬
‫השמות‬ ‫מרחב‬–‫תזכורת‬
•‫משלה‬ ‫השמות‬ ‫מרחב‬ ‫יש‬ ‫מחלקה‬ ‫או‬ ‫מודול‬ ‫או‬ ‫פונקציה‬ ‫לכל‬ ‫בפייתון‬
•‫לפונקציה‬ ‫קריאה‬ ‫בעת‬‫הפונקציה‬ ‫של‬ ‫השמות‬ ‫מרחב‬ ‫מיוצר‬
•‫נמחק‬ ‫שמות‬ ‫המרחב‬ ‫מהפונקציה‬ ‫יוצאים‬ ‫כאשר‬
•‫מסקנה‬:‫תוכנה‬ ‫ביצוע‬ ‫בזמן‬–‫השמות‬ ‫מרחבי‬ ‫מספר‬ ‫קיים‬
•‫בו‬ ‫משתמשים‬ ‫שכעת‬ ‫משתנה‬ ‫מצביע‬ ‫שעליו‬ ‫ערך‬ ‫מהו‬ ‫יודע‬ ‫פייתון‬ ‫איך‬?
‫ההכרה‬ ‫תחום‬
•‫בקוד‬ ‫מקום‬ ‫מכל‬ ‫משתנה‬ ‫לכל‬ ‫לגשת‬ ‫ניתן‬ ‫לא‬
•‫בו‬ ‫להשתמש‬ ‫וניתן‬ ‫קיים‬ ‫המשתנה‬ ‫שבו‬ ‫קוד‬ ‫של‬ ‫חלק‬ ‫הוא‬ ‫משתנה‬ ‫של‬ ‫ההכרה‬ ‫תחום‬
•‫לפי‬ ‫המשתנה‬ ‫הגדרת‬ ‫את‬ ‫מחפש‬ ‫תמיד‬ ‫הוא‬ ‫המשתנה‬ ‫מוגדר‬ ‫איפו‬ ‫מחפש‬ ‫פייתון‬ ‫כאשר‬
‫הבא‬ ‫סדר‬:
Local->Enclosed->Global->Built-In
‫ההכרה‬ ‫תחום‬
•‫בקוד‬ ‫מקום‬ ‫מכל‬ ‫משתנה‬ ‫לכל‬ ‫לגשת‬ ‫ניתן‬ ‫לא‬
•‫בו‬ ‫להשתמש‬ ‫וניתן‬ ‫קיים‬ ‫המשתנה‬ ‫שבו‬ ‫קוד‬ ‫של‬ ‫חלק‬ ‫הוא‬ ‫משתנה‬ ‫של‬ ‫ההכרה‬ ‫תחום‬
•‫לפי‬ ‫המשתנה‬ ‫הגדרת‬ ‫את‬ ‫מחפש‬ ‫תמיד‬ ‫הוא‬ ‫המשתנה‬ ‫מוגדר‬ ‫איפו‬ ‫מחפש‬ ‫פייתון‬ ‫כאשר‬
‫הבא‬ ‫סדר‬:
Local->Enclosed->Global->Built-in
•‫מודול‬ ‫או‬ ‫פונקציה‬ ‫בתוך‬ ‫השמות‬ ‫מרחב‬ ‫הוא‬ ‫לוקאלי‬ ‫השמות‬ ‫מרחב‬
•Local:‫המודול‬ ‫או‬ ‫הפונקציה‬ ‫בתוך‬ ‫לוקלי‬ ‫הוא‬ ‫מודול‬ ‫או‬ ‫פונקציה‬ ‫בתוך‬ ‫המוגדר‬ ‫משתנה‬ ‫כל‬
•Enclosed‫משתמשים‬ ‫שבה‬ ‫פונקציה‬ ‫מוגדרת‬ ‫שבה‬ ‫הפונקציה‬ ‫של‬ ‫השמות‬ ‫מרחב‬ ‫הוא‬
‫במשתנה‬
•Global‫התוכנה‬ ‫כל‬ ‫של‬ ‫השמות‬ ‫מרחב‬ ‫הוא‬
•Built-In‫פייתון‬ ‫של‬ ‫השמורים‬ ‫המשתנים‬ ‫הפונקציות‬ ‫כל‬ ‫עם‬ ‫פייתון‬ ‫של‬ ‫השמות‬ ‫מרחב‬
‫ההכרה‬ ‫תחום‬
•‫המשתנה‬ ‫של‬ ‫הערך‬ ‫את‬ ‫אחפש‬ ‫קודם‬ ‫פייתון‬ ‫אז‬ ‫בקוד‬ ‫במשתנה‬ ‫נשתמש‬ ‫אנו‬ ‫כאשר‬ ‫ולכן‬
‫הלוקאלי‬ ‫השמות‬ ‫במרחב‬,‫השמות‬ ‫במרחב‬ ‫אזי‬ ‫אותו‬ ‫ימצא‬ ‫לא‬ ‫ואם‬Enclosed‫אז‬ ‫לא‬ ‫ואם‬
‫ב‬-Global‫ב‬ ‫אז‬ ‫לא‬ ‫ואם‬-Built-In
‫ההכרה‬ ‫תחום‬
•‫המשתנה‬ ‫של‬ ‫הערך‬ ‫את‬ ‫אחפש‬ ‫קודם‬ ‫פייתון‬ ‫אז‬ ‫בקוד‬ ‫במשתנה‬ ‫נשתמש‬ ‫אנו‬ ‫כאשר‬ ‫ולכן‬
‫הלוקאלי‬ ‫השמות‬ ‫במרחב‬,‫השמות‬ ‫במרחב‬ ‫אזי‬ ‫אותו‬ ‫ימצא‬ ‫לא‬ ‫ואם‬Enclosed‫אז‬ ‫לא‬ ‫ואם‬
‫ב‬-Global‫ב‬ ‫אז‬ ‫לא‬ ‫ואם‬-Built-In
‫ההכרה‬ ‫תחום‬
•‫המשתנה‬ ‫של‬ ‫הערך‬ ‫את‬ ‫אחפש‬ ‫קודם‬ ‫פייתון‬ ‫אז‬ ‫בקוד‬ ‫במשתנה‬ ‫נשתמש‬ ‫אנו‬ ‫כאשר‬ ‫ולכן‬
‫הלוקאלי‬ ‫השמות‬ ‫במרחב‬,‫השמות‬ ‫במרחב‬ ‫אזי‬ ‫אותו‬ ‫ימצא‬ ‫לא‬ ‫ואם‬Enclosed‫אז‬ ‫לא‬ ‫ואם‬
‫ב‬-Global‫ב‬ ‫אז‬ ‫לא‬ ‫ואם‬-Built-In
‫ההכרה‬ ‫תחום‬
•‫המשתנה‬ ‫של‬ ‫הערך‬ ‫את‬ ‫אחפש‬ ‫קודם‬ ‫פייתון‬ ‫אז‬ ‫בקוד‬ ‫במשתנה‬ ‫נשתמש‬ ‫אנו‬ ‫כאשר‬ ‫ולכן‬
‫הלוקאלי‬ ‫השמות‬ ‫במרחב‬,‫השמות‬ ‫במרחב‬ ‫אזי‬ ‫אותו‬ ‫ימצא‬ ‫לא‬ ‫ואם‬Enclosed‫אז‬ ‫לא‬ ‫ואם‬
‫ב‬-Global‫ב‬ ‫אז‬ ‫לא‬ ‫ואם‬-Built-In
‫ההכרה‬ ‫תחום‬
•‫המשתנה‬ ‫של‬ ‫הערך‬ ‫את‬ ‫אחפש‬ ‫קודם‬ ‫פייתון‬ ‫אז‬ ‫בקוד‬ ‫במשתנה‬ ‫נשתמש‬ ‫אנו‬ ‫כאשר‬ ‫ולכן‬
‫הלוקאלי‬ ‫השמות‬ ‫במרחב‬,‫השמות‬ ‫במרחב‬ ‫אזי‬ ‫אותו‬ ‫ימצא‬ ‫לא‬ ‫ואם‬Enclosed‫אז‬ ‫לא‬ ‫ואם‬
‫ב‬-Global‫ב‬ ‫אז‬ ‫לא‬ ‫ואם‬-Built-In
‫ההכרה‬ ‫תחום‬
•‫המשתנה‬ ‫של‬ ‫הערך‬ ‫את‬ ‫אחפש‬ ‫קודם‬ ‫פייתון‬ ‫אז‬ ‫בקוד‬ ‫במשתנה‬ ‫נשתמש‬ ‫אנו‬ ‫כאשר‬ ‫ולכן‬
‫הלוקאלי‬ ‫השמות‬ ‫במרחב‬,‫השמות‬ ‫במרחב‬ ‫אזי‬ ‫אותו‬ ‫ימצא‬ ‫לא‬ ‫ואם‬Enclosed‫אז‬ ‫לא‬ ‫ואם‬
‫ב‬-Global‫ב‬ ‫אז‬ ‫לא‬ ‫ואם‬-Built-In
‫ההכרה‬ ‫תחום‬
•‫המשתנה‬ ‫של‬ ‫הערך‬ ‫את‬ ‫אחפש‬ ‫קודם‬ ‫פייתון‬ ‫אז‬ ‫בקוד‬ ‫במשתנה‬ ‫נשתמש‬ ‫אנו‬ ‫כאשר‬ ‫ולכן‬
‫הלוקאלי‬ ‫השמות‬ ‫במרחב‬,‫השמות‬ ‫במרחב‬ ‫אזי‬ ‫אותו‬ ‫ימצא‬ ‫לא‬ ‫ואם‬Enclosed‫אז‬ ‫לא‬ ‫ואם‬
‫ב‬-Global‫ב‬ ‫אז‬ ‫לא‬ ‫ואם‬-Built-In
‫ההכרה‬ ‫תחום‬
•‫המשתנה‬ ‫של‬ ‫הערך‬ ‫את‬ ‫אחפש‬ ‫קודם‬ ‫פייתון‬ ‫אז‬ ‫בקוד‬ ‫במשתנה‬ ‫נשתמש‬ ‫אנו‬ ‫כאשר‬ ‫ולכן‬
‫הלוקאלי‬ ‫השמות‬ ‫במרחב‬,‫השמות‬ ‫במרחב‬ ‫אזי‬ ‫אותו‬ ‫ימצא‬ ‫לא‬ ‫ואם‬Enclosed‫אז‬ ‫לא‬ ‫ואם‬
‫ב‬-Global‫ב‬ ‫אז‬ ‫לא‬ ‫ואם‬-Built-In
‫נוספת‬ ‫דוגמא‬
‫נוספת‬ ‫דוגמא‬
‫ב‬ ‫שימוש‬-global
‫ב‬ ‫שימוש‬-global
•‫של‬ ‫במנגנון‬ ‫להשתמש‬ ‫ממליצים‬ ‫לא‬ ‫כלל‬ ‫בדרך‬global‫התוכנה‬ ‫את‬ ‫הופך‬ ‫וזה‬ ‫היות‬
‫לתחזוקה‬ ‫קשה‬ ‫ויותר‬ ‫קריאה‬ ‫לפחות‬
‫סיכום‬
‫הפונקציה‬ ‫של‬ ‫גוף‬ ‫הוא‬ ‫הפונקציה‬ ‫בתוך‬ ‫המוגדרים‬ ‫ומשתנים‬ ‫פונקציה‬ ‫של‬ ‫פרמטרים‬ ‫של‬ ‫ההכרה‬ ‫תחום‬
‫פונקציות‬ ‫של‬ ‫ופרמטרים‬ ‫למשתנים‬ ‫לגשת‬ ‫ניתן‬ ‫לא‬ ‫גלובאלי‬ ‫מקוד‬
‫למעט‬ ‫אחרת‬ ‫בפונקציה‬ ‫המוגדרים‬ ‫משתנים‬ ‫או‬ ‫לפרמטרים‬ ‫לגשת‬ ‫ניתן‬ ‫לא‬ ‫אחד‬ ‫פונקציה‬ ‫מתוך‬‫מקרים‬
‫פונקציה‬ ‫כאשר‬‫שניה‬ ‫פונקציה‬ ‫בתוך‬ ‫מוגדרת‬ ‫אחד‬
‫מדעי‬ ‫לתכנות‬ ‫מבוא‬
‫הרצאה‬10‫חלק‬3
Functions: passing arguments and return values
2017
Igor Kleiner
‫מטרה‬
‫לפונקציה‬ ‫פרמטרים‬ ‫העברת‬ ‫מנגנון‬ ‫להבין‬
‫מטרה‬
‫לפונקציה‬ ‫פרמטרים‬ ‫העברת‬ ‫מנגנון‬ ‫להבין‬
‫לשינוי‬ ‫שניתנים‬ ‫פונקציה‬ ‫של‬ ‫פרמטרים‬ ‫בין‬ ‫הבדל‬ ‫להבין‬
(mutable)‫לשינוי‬ ‫ניתנים‬ ‫שלא‬ ‫לפרמטרים‬(immutable)
‫מוטיבציה‬:‫דוגמא‬
‫מוטיבציה‬:‫דוגמא‬
‫מוטיבציה‬:‫דוגמא‬
‫מוטיבציה‬:‫דוגמא‬
‫מוטיבציה‬:‫דוגמא‬immutable mutable
Mutable  Immutable types
Int, float, bool immutable
str immutable
tuple immutable
List mutable
dictionary mutable
Example: immutability of integers
Int, float, bool immutable
str immutable
tuple immutable
List mutable
dictionary mutable
10i
Example: immutability of integers
Int, float, bool immutable
str immutable
tuple immutable
List mutable
dictionary mutable
10i
20
Example: immutability of integers
Int, float, bool immutable
str immutable
tuple immutable
List mutable
dictionary mutable
10i
Example: immutability of integers
Int, float, bool immutable
str immutable
tuple immutable
List mutable
dictionary mutable
10i
j
Example: immutability of integers
Int, float, bool immutable
str immutable
tuple immutable
List mutable
dictionary mutable
10i
j
20
Aliasing
•Aliasing‫משתנים‬ ‫שתי‬ ‫כאשר‬ ‫תופעה‬ ‫היא‬‫מצביעים‬‫ערך‬ ‫אותו‬ ‫על‬
Aliasing
•Aliasing‫משתנים‬ ‫שתי‬ ‫כאשר‬ ‫תופעה‬ ‫היא‬‫מצביעים‬‫ערך‬ ‫אותו‬ ‫על‬
‫לדוגמא‬:
Aliasing
•Aliasing‫משתנים‬ ‫שתי‬ ‫כאשר‬ ‫תופעה‬ ‫היא‬‫מצביעים‬‫ערך‬ ‫אותו‬ ‫על‬
‫לדוגמא‬:
‫של‬ ‫מהערכים‬ ‫אחד‬ ‫את‬ ‫נשנה‬ ‫כאשר‬ ‫יקרא‬ ‫מה‬-y?
Aliasing
Aliasing
‫תופעת‬ ‫לפעמים‬Aliasing‫ליווי‬ ‫לתופעות‬ ‫וגורמת‬ ‫הקוד‬ ‫הבנת‬ ‫את‬ ‫מסבכת‬
‫צורך‬ ‫ללא‬ ‫אותה‬ ‫לייצר‬ ‫כדאי‬ ‫לא‬ ‫לכן‬
Immutable objects as function arguments
•‫להבין‬ ‫חשוב‬‫של‬ ‫פרמטר‬ ‫וגם‬ ‫הארגומנט‬ ‫גם‬ ‫אזי‬ ‫ארגומנט‬ ‫לפונקציה‬ ‫מעבירים‬ ‫שכאשר‬
‫הפונקציה‬‫מצביעים‬‫ערך‬ ‫אותו‬ ‫על‬(aliasing)
Immutable objects as function arguments
•‫להבין‬ ‫חשוב‬‫של‬ ‫פרמטר‬ ‫וגם‬ ‫הארגומנט‬ ‫גם‬ ‫אזי‬ ‫ארגומנט‬ ‫לפונקציה‬ ‫מעבירים‬ ‫שכאשר‬
‫הפונקציה‬‫מצביעים‬‫ערך‬ ‫אותו‬ ‫על‬(aliasing)
1j
Immutable objects as function arguments
•‫להבין‬ ‫חשוב‬‫של‬ ‫פרמטר‬ ‫וגם‬ ‫הארגומנט‬ ‫גם‬ ‫אזי‬ ‫ארגומנט‬ ‫לפונקציה‬ ‫מעבירים‬ ‫שכאשר‬
‫הפונקציה‬‫מצביעים‬‫ערך‬ ‫אותו‬ ‫על‬(aliasing)
1j
i
Immutable objects as function arguments
•‫להבין‬ ‫חשוב‬‫של‬ ‫פרמטר‬ ‫וגם‬ ‫הארגומנט‬ ‫גם‬ ‫אזי‬ ‫ארגומנט‬ ‫לפונקציה‬ ‫מעבירים‬ ‫שכאשר‬
‫הפונקציה‬‫מצביעים‬‫ערך‬ ‫אותו‬ ‫על‬(aliasing)
1j
i 2
Immutable objects as function arguments
•‫להבין‬ ‫חשוב‬‫של‬ ‫פרמטר‬ ‫וגם‬ ‫הארגומנט‬ ‫גם‬ ‫אזי‬ ‫ארגומנט‬ ‫לפונקציה‬ ‫מעבירים‬ ‫שכאשר‬
‫הפונקציה‬‫מצביעים‬‫ערך‬ ‫אותו‬ ‫על‬(aliasing)
1j
Immutable objects as function arguments
•‫להבין‬ ‫חשוב‬‫של‬ ‫פרמטר‬ ‫וגם‬ ‫הארגומנט‬ ‫גם‬ ‫אזי‬ ‫ארגומנט‬ ‫לפונקציה‬ ‫מעבירים‬ ‫שכאשר‬
‫הפונקציה‬‫מצביעים‬‫ערך‬ ‫אותו‬ ‫על‬(aliasing)
•‫מסקנה‬:‫כאשר‬ ‫קיבלה‬ ‫שהיא‬ ‫ארגומנט‬ ‫של‬ ‫הערך‬ ‫את‬ ‫לשנות‬ ‫יכולה‬ ‫לא‬ ‫פונקציה‬
‫הוא‬ ‫הארגומנט‬immutable
Immutable objects as function arguments
•‫להבין‬ ‫חשוב‬‫של‬ ‫פרמטר‬ ‫וגם‬ ‫הארגומנט‬ ‫גם‬ ‫אזי‬ ‫ארגומנט‬ ‫לפונקציה‬ ‫מעבירים‬ ‫שכאשר‬
‫הפונקציה‬‫מצביעים‬‫ערך‬ ‫אותו‬ ‫על‬(aliasing)
•‫מסקנה‬:‫כאשר‬ ‫קיבלה‬ ‫שהיא‬ ‫ארגומנט‬ ‫של‬ ‫הערך‬ ‫את‬ ‫לשנות‬ ‫יכולה‬ ‫לא‬ ‫פונקציה‬
‫הוא‬ ‫הארגומנט‬immutable
•‫פונקציה‬ ‫לעשות‬ ‫רוצים‬ ‫אנו‬ ‫זאת‬ ‫בכל‬ ‫אם‬inc‫ב‬ ‫פרמטר‬ ‫של‬ ‫הערך‬ ‫את‬ ‫שמגדילה‬-1‫אזי‬
‫הבא‬ ‫בקוד‬ ‫להשתמש‬ ‫אפשר‬:
1
Mutable objects as function arguments
•‫להבין‬ ‫חשוב‬‫של‬ ‫פרמטר‬ ‫וגם‬ ‫הארגומנט‬ ‫גם‬ ‫אזי‬ ‫ארגומנט‬ ‫לפונקציה‬ ‫מעבירים‬ ‫שכאשר‬
‫הפונקציה‬‫מצביעים‬‫ערך‬ ‫אותו‬ ‫על‬(aliasing)
[1]l
mutable objects as function arguments
•‫להבין‬ ‫חשוב‬‫של‬ ‫פרמטר‬ ‫וגם‬ ‫הארגומנט‬ ‫גם‬ ‫אזי‬ ‫ארגומנט‬ ‫לפונקציה‬ ‫מעבירים‬ ‫שכאשר‬
‫הפונקציה‬‫מצביעים‬‫ערך‬ ‫אותו‬ ‫על‬(aliasing)
[1]l
m
mutable objects as function arguments
•‫להבין‬ ‫חשוב‬‫של‬ ‫פרמטר‬ ‫וגם‬ ‫הארגומנט‬ ‫גם‬ ‫אזי‬ ‫ארגומנט‬ ‫לפונקציה‬ ‫מעבירים‬ ‫שכאשר‬
‫הפונקציה‬‫מצביעים‬‫ערך‬ ‫אותו‬ ‫על‬(aliasing)
[2]l
m
mutable objects as function arguments
•‫להבין‬ ‫חשוב‬‫של‬ ‫פרמטר‬ ‫וגם‬ ‫הארגומנט‬ ‫גם‬ ‫אזי‬ ‫ארגומנט‬ ‫לפונקציה‬ ‫מעבירים‬ ‫שכאשר‬
‫הפונקציה‬‫מצביעים‬‫ערך‬ ‫אותו‬ ‫על‬(aliasing)
[2]l
mutable objects as function arguments
•‫להבין‬ ‫חשוב‬‫של‬ ‫פרמטר‬ ‫וגם‬ ‫הארגומנט‬ ‫גם‬ ‫אזי‬ ‫ארגומנט‬ ‫לפונקציה‬ ‫מעבירים‬ ‫שכאשר‬
‫הפונקציה‬‫מצביעים‬‫ערך‬ ‫אותו‬ ‫על‬(aliasing)
•‫חשובה‬ ‫מסקנה‬:‫הוא‬ ‫כאשר‬ ‫שלה‬ ‫הארגומנט‬ ‫את‬ ‫לשנות‬ ‫יכולה‬ ‫פונקציה‬mutable
mutable objects as function arguments
•‫להבין‬ ‫חשוב‬‫של‬ ‫פרמטר‬ ‫וגם‬ ‫הארגומנט‬ ‫גם‬ ‫אזי‬ ‫ארגומנט‬ ‫לפונקציה‬ ‫מעבירים‬ ‫שכאשר‬
‫הפונקציה‬‫מצביעים‬‫ערך‬ ‫אותו‬ ‫על‬(aliasing)
•‫חשובה‬ ‫מסקנה‬:‫הוא‬ ‫כאשר‬ ‫שלה‬ ‫הארגומנט‬ ‫את‬ ‫לשנות‬ ‫יכולה‬ ‫פונקציה‬mutable
•‫דוגמא‬:
mutable objects as function arguments
•‫להבין‬ ‫חשוב‬‫של‬ ‫פרמטר‬ ‫וגם‬ ‫הארגומנט‬ ‫גם‬ ‫אזי‬ ‫ארגומנט‬ ‫לפונקציה‬ ‫מעבירים‬ ‫שכאשר‬
‫הפונקציה‬‫מצביעים‬‫ערך‬ ‫אותו‬ ‫על‬(aliasing)
•‫חשובה‬ ‫מסקנה‬:‫הוא‬ ‫כאשר‬ ‫שלה‬ ‫הארגומנט‬ ‫את‬ ‫לשנות‬ ‫יכולה‬ ‫פונקציה‬mutable
•‫דוגמא‬:
‫מדעי‬ ‫לתכנות‬ ‫מבוא‬
‫הרצאה‬10‫חלק‬4
‫קונווי‬ ‫של‬ ‫חיים‬ ‫משחק‬
2017
Igor Kleiner ©
‫השיעור‬ ‫של‬ ‫מטרה‬
‫קונווי‬ ‫של‬ ‫חיים‬ ‫משחק‬ ‫להכיר‬
‫חיים‬ ‫למשחק‬ ‫אלגוריתם‬ ‫לפתח‬
‫המשחק‬ ‫של‬ ‫קוד‬ ‫לפתח‬
Conway's game of life
Conway's game of life
‫בגודל‬ ‫סופי‬ ‫לוח‬ ‫על‬ ‫חיים‬ ‫משחק‬n*n
•‫מטרה‬‫סופי‬ ‫לוח‬ ‫על‬ ‫חיים‬ ‫משחק‬ ‫לממש‬ ‫שלנו‬
‫בגודל‬ ‫סופי‬ ‫לוח‬ ‫על‬ ‫חיים‬ ‫משחק‬n*n
•‫מטרה‬‫סופי‬ ‫לוח‬ ‫על‬ ‫חיים‬ ‫משחק‬ ‫לממש‬ ‫היא‬ ‫שלנו‬
•‫הלוח‬ ‫על‬ ‫אקראית‬ ‫מקונפיגורציה‬ ‫יתחיל‬ ‫המשחק‬,‫בהסתברות‬ ‫כאשר‬p‫כל‬
‫ובהסתברות‬ ‫חייה‬ ‫תהי‬ ‫משבצת‬1-p‫ב‬ ‫באופן‬ ‫מתה‬ ‫תהיה‬ ‫משבצת‬ ‫כל‬"‫ת‬
‫משבצות‬ ‫בשאר‬
‫בגודל‬ ‫סופי‬ ‫לוח‬ ‫על‬ ‫חיים‬ ‫משחק‬n*n
•‫מטרה‬‫סופי‬ ‫לוח‬ ‫על‬ ‫חיים‬ ‫משחק‬ ‫לממש‬ ‫היא‬ ‫שלנו‬
•‫הלוח‬ ‫על‬ ‫אקראית‬ ‫מקונפיגורציה‬ ‫יתחיל‬ ‫המשחק‬,‫בהסתברות‬ ‫כאשר‬p‫כל‬
‫ובהסתברות‬ ‫חייה‬ ‫תהי‬ ‫משבצת‬1-p‫ב‬ ‫באופן‬ ‫מתה‬ ‫תהיה‬ ‫משבצת‬ ‫כל‬"‫ת‬
‫משבצות‬ ‫בשאר‬
•‫הבא‬ ‫דור‬ ‫לחישוב‬ ‫המשחק‬ ‫חוקי‬:
•‫למשבצת‬ ‫אם‬‫חייה‬‫מ‬ ‫יותר‬ ‫יש‬-3‫הבא‬ ‫בדור‬ ‫מצפיפות‬ ‫תמות‬ ‫היא‬ ‫שכנים‬
•‫למשבצת‬ ‫אם‬‫חייה‬‫מ‬ ‫פחות‬ ‫יש‬-2‫הבא‬ ‫בדור‬ ‫בידור‬ ‫מחוסר‬ ‫תמות‬ ‫היא‬ ‫שכנים‬
•‫יש‬ ‫מתה‬ ‫למשבצת‬ ‫אם‬3‫תהיה‬ ‫היא‬ ‫הבא‬ ‫בדור‬ ‫אזי‬ ‫שכנים‬‫חייה‬
•‫של‬ ‫המצב‬ ‫המקרים‬ ‫בשאר‬‫המשבצת‬‫משתנה‬ ‫לא‬
‫בגודל‬ ‫סופי‬ ‫לוח‬ ‫על‬ ‫חיים‬ ‫משחק‬n*n
•‫מטרה‬‫סופי‬ ‫לוח‬ ‫על‬ ‫חיים‬ ‫משחק‬ ‫לממש‬ ‫היא‬ ‫שלנו‬
•‫אותו‬ ‫נעדן‬ ‫ואז‬ ‫אלגוריתם‬ ‫של‬ ‫כללי‬ ‫מתיור‬ ‫נתחיל‬
‫בגודל‬ ‫סופי‬ ‫לוח‬ ‫על‬ ‫חיים‬ ‫משחק‬n*n
•‫מטרה‬‫סופי‬ ‫לוח‬ ‫על‬ ‫חיים‬ ‫משחק‬ ‫לממש‬ ‫היא‬ ‫שלנו‬
•‫אותו‬ ‫נעדן‬ ‫ואז‬ ‫אלגוריתם‬ ‫של‬ ‫כללי‬ ‫מתיור‬ ‫נתחיל‬
•‫חדש‬ ‫אקראי‬ ‫לוח‬ ‫נכין‬–‫דור‬0‫אותו‬ ‫ונצייר‬
‫בגודל‬ ‫סופי‬ ‫לוח‬ ‫על‬ ‫חיים‬ ‫משחק‬n*n
•‫מטרה‬‫סופי‬ ‫לוח‬ ‫על‬ ‫חיים‬ ‫משחק‬ ‫לממש‬ ‫היא‬ ‫שלנו‬
•‫אותו‬ ‫נעדן‬ ‫ואז‬ ‫אלגוריתם‬ ‫של‬ ‫כללי‬ ‫מתיור‬ ‫נתחיל‬
•‫חדש‬ ‫אקראי‬ ‫לוח‬ ‫נכין‬–‫דור‬0‫ונצייר‬‫הלוח‬ ‫את‬
•‫נגמר‬ ‫לא‬ ‫שהמשחק‬ ‫עד‬,‫הבא‬ ‫לוח‬ ‫נחשב‬(‫הבא‬ ‫דור‬)‫אותו‬ ‫ונצייר‬
‫בגודל‬ ‫סופי‬ ‫לוח‬ ‫על‬ ‫חיים‬ ‫משחק‬n*n
•‫מטרה‬‫סופי‬ ‫לוח‬ ‫על‬ ‫חיים‬ ‫משחק‬ ‫לממש‬ ‫היא‬ ‫שלנו‬
•‫אותו‬ ‫נעדן‬ ‫ואז‬ ‫אלגוריתם‬ ‫של‬ ‫כללי‬ ‫מתיור‬ ‫נתחיל‬
•‫חדש‬ ‫אקראי‬ ‫לוח‬ ‫נכין‬–‫דור‬0,‫הלוח‬ ‫את‬ ‫נצייר‬
•‫נגמר‬ ‫לא‬ ‫שהמשחק‬ ‫עד‬,‫הבא‬ ‫לוח‬ ‫נחשב‬(‫הבא‬ ‫דור‬)‫אותו‬ ‫ונצייר‬
‫בגודל‬ ‫סופי‬ ‫לוח‬ ‫על‬ ‫חיים‬ ‫משחק‬n*n
•‫מטרה‬‫סופי‬ ‫לוח‬ ‫על‬ ‫חיים‬ ‫משחק‬ ‫לממש‬ ‫היא‬ ‫שלנו‬
•‫אותו‬ ‫נעדן‬ ‫ואז‬ ‫אלגוריתם‬ ‫של‬ ‫כללי‬ ‫מתיור‬ ‫נתחיל‬
•‫חדש‬ ‫אקראי‬ ‫לוח‬ ‫נכין‬–‫דור‬0,‫הלוח‬ ‫את‬ ‫נצייר‬
•‫נגמר‬ ‫לא‬ ‫שהמשחק‬ ‫עד‬,‫הבא‬ ‫לוח‬ ‫נחשב‬(‫הבא‬ ‫דור‬)‫אותו‬ ‫ונצייר‬
‫בגודל‬ ‫סופי‬ ‫לוח‬ ‫על‬ ‫חיים‬ ‫משחק‬n*n
•‫מטרה‬‫סופי‬ ‫לוח‬ ‫על‬ ‫חיים‬ ‫משחק‬ ‫לממש‬ ‫היא‬ ‫שלנו‬
•‫אותו‬ ‫נעדן‬ ‫ואז‬ ‫אלגוריתם‬ ‫של‬ ‫כללי‬ ‫מתיור‬ ‫נתחיל‬
•‫חדש‬ ‫אקראי‬ ‫לוח‬ ‫נכין‬–‫דור‬0,‫הלוח‬ ‫את‬ ‫נצייר‬
•‫נגמר‬ ‫לא‬ ‫שהמשחק‬ ‫עד‬,‫הבא‬ ‫לוח‬ ‫נחשב‬(‫הבא‬ ‫דור‬)‫אותו‬ ‫ונצייר‬
‫שתי‬ ‫לפחות‬ ‫לממש‬ ‫שנצטרך‬ ‫רואים‬ ‫אנו‬ ‫מכאן‬
‫פונקציות‬
‫משחק‬ ‫לוח‬ ‫לייצוג‬ ‫נתונים‬ ‫מבנה‬ ‫בחירת‬
•‫המשחק‬ ‫של‬ ‫הלוח‬ ‫את‬ ‫נציג‬ ‫שבעזרתו‬ ‫נתונים‬ ‫מבנה‬ ‫ולבחור‬ ‫לחשוב‬ ‫צריכים‬ ‫אנו‬:
•‫רשימה‬
•‫דו‬ ‫רשימה‬‫מימדית‬
•tuple
•‫מחרוזת‬
•‫מילון‬
•set
‫משחק‬ ‫לוח‬ ‫לייצוג‬ ‫נתונים‬ ‫מבנה‬ ‫בחירת‬
•‫המשחק‬ ‫של‬ ‫הלוח‬ ‫את‬ ‫נציג‬ ‫שבעזרתו‬ ‫נתונים‬ ‫מבנה‬ ‫ולבחור‬ ‫לחשוב‬ ‫צריכים‬ ‫אנו‬:
•‫רשימה‬
•‫דו‬ ‫רשימה‬‫מימדית‬
•tuple
•‫מחרוזת‬
•‫מילון‬
•set
•‫בעזרת‬ ‫הלוח‬ ‫את‬ ‫נציג‬‫מימדית‬ ‫דו‬ ‫רשימה‬,‫מספר‬ ‫פנימית‬ ‫רשימה‬ ‫כאשר‬i‫תציג‬
‫לוח‬ ‫של‬ ‫שורה‬‫מספר‬i
‫משחק‬ ‫לוח‬ ‫לייצוג‬ ‫נתונים‬ ‫מבנה‬ ‫בחירת‬
•‫המשחק‬ ‫של‬ ‫הלוח‬ ‫את‬ ‫נציג‬ ‫שבעזרתו‬ ‫נתונים‬ ‫מבנה‬ ‫ולבחור‬ ‫לחשוב‬ ‫צריכים‬ ‫אנו‬:
•‫רשימה‬
•‫דו‬ ‫רשימה‬‫מימדית‬
•tuple
•‫מחרוזת‬
•‫מילון‬
•set
•‫בעזרת‬ ‫הלוח‬ ‫את‬ ‫נציג‬‫מימדית‬ ‫דו‬ ‫רשימה‬,‫מספר‬ ‫פנימית‬ ‫רשימה‬ ‫כאשר‬i‫תציג‬
‫לוח‬ ‫של‬ ‫שורה‬‫מספר‬i
‫עם‬ ‫מימדית‬ ‫דו‬ ‫רשימה‬ ‫הגדרת‬
FALSE‫משבצת‬ ‫בכל‬
‫משחק‬ ‫לוח‬ ‫לייצוג‬ ‫נתונים‬ ‫מבנה‬ ‫בחירת‬‫טריק‬
•‫הבא‬ ‫דור‬ ‫של‬ ‫לוח‬ ‫נבנה‬ ‫אנו‬ ‫כאשר‬,‫לבחון‬ ‫נצטרך‬ ‫משבצת‬ ‫כל‬ ‫עבור‬?‫שכנים‬
‫שלה‬
‫משחק‬ ‫לוח‬ ‫לייצוג‬ ‫נתונים‬ ‫מבנה‬ ‫בחירת‬‫טריק‬
•‫הבא‬ ‫דור‬ ‫של‬ ‫לוח‬ ‫נבנה‬ ‫אנו‬ ‫כאשר‬,‫לבחון‬ ‫נצטרך‬ ‫משבצת‬ ‫כל‬ ‫עבור‬8‫שכנים‬
‫שלה‬
‫משחק‬ ‫לוח‬ ‫לייצוג‬ ‫נתונים‬ ‫מבנה‬ ‫בחירת‬‫טריק‬
•‫הבא‬ ‫דור‬ ‫של‬ ‫לוח‬ ‫נבנה‬ ‫אנו‬ ‫כאשר‬,‫לבחון‬ ‫נצטרך‬ ‫משבצת‬ ‫כל‬ ‫עבור‬8‫שכנים‬
‫שלה‬
•‫בעיה‬ ‫יש‬ ‫אבל‬:
‫משחק‬ ‫לוח‬ ‫לייצוג‬ ‫נתונים‬ ‫מבנה‬ ‫בחירת‬‫טריק‬
•‫הבא‬ ‫דור‬ ‫של‬ ‫לוח‬ ‫נבנה‬ ‫אנו‬ ‫כאשר‬,‫לבחון‬ ‫נצטרך‬ ‫משבצת‬ ‫כל‬ ‫עבור‬8‫שכנים‬
‫שלה‬
•‫בעיה‬ ‫יש‬ ‫אבל‬:‫יש‬ ‫משבצת‬ ‫לכל‬ ‫לא‬8‫שכנים‬
‫משחק‬ ‫לוח‬ ‫לייצוג‬ ‫נתונים‬ ‫מבנה‬ ‫בחירת‬‫טריק‬
•‫הבא‬ ‫דור‬ ‫של‬ ‫לוח‬ ‫נבנה‬ ‫אנו‬ ‫כאשר‬,‫לבחון‬ ‫נצטרך‬ ‫משבצת‬ ‫כל‬ ‫עבור‬8‫שכנים‬
‫שלה‬
•‫בעיה‬ ‫יש‬ ‫אבל‬:‫יש‬ ‫משבצת‬ ‫לכל‬ ‫לא‬8‫שכנים‬
8
5
3
‫משחק‬ ‫לוח‬ ‫לייצוג‬ ‫נתונים‬ ‫מבנה‬ ‫בחירת‬‫טריק‬
•‫הבא‬ ‫דור‬ ‫של‬ ‫לוח‬ ‫נבנה‬ ‫אנו‬ ‫כאשר‬,‫לבחון‬ ‫נצטרך‬ ‫משבצת‬ ‫כל‬ ‫עבור‬8‫שכנים‬
‫שלה‬
•‫בעיה‬ ‫יש‬ ‫אבל‬:‫יש‬ ‫משבצת‬ ‫לכל‬ ‫לא‬8‫שכנים‬
•‫על‬‫בטריק‬ ‫נעזר‬ ‫בפתרון‬ ‫הכלליות‬ ‫את‬ ‫לשבור‬ ‫לא‬ ‫מנת‬‫הבא‬:‫לוח‬ ‫לייצר‬ ‫במקום‬
‫בגודל‬n*n‫בגודל‬ ‫לוח‬ ‫נייצר‬n+2‫על‬n+2‫כולה‬ ‫תהי‬ ‫החיצונית‬ ‫המעטפת‬ ‫כאשר‬
False
8
8
8
‫בגודל‬ ‫סופי‬ ‫לוח‬ ‫על‬ ‫חיים‬ ‫משחק‬n*n
•‫מטרה‬‫סופי‬ ‫לוח‬ ‫על‬ ‫חיים‬ ‫משחק‬ ‫לממש‬ ‫היא‬ ‫שלנו‬
•‫אותו‬ ‫נעדן‬ ‫ואז‬ ‫אלגוריתם‬ ‫של‬ ‫כללי‬ ‫מתיור‬ ‫נתחיל‬
•‫חדש‬ ‫אקראי‬ ‫לוח‬ ‫נכין‬–‫דור‬0,‫הלוח‬ ‫את‬ ‫נצייר‬
•‫נגמר‬ ‫לא‬ ‫שהמשחק‬ ‫עד‬,‫הבא‬ ‫לוח‬ ‫נחשב‬(‫הבא‬ ‫דור‬)‫אותו‬ ‫ונצייר‬
GenerateNewBoard(n,p)
•‫מקבלת‬ ‫הפונקציה‬‫לוח‬ ‫של‬ ‫גודל‬–n‫מסוימת‬ ‫שמשבצת‬ ‫והסתברות‬‫חיה‬p
•‫מחזירה‬ ‫הפונקציה‬‫דו‬ ‫רשימה‬-‫בגודל‬ ‫ממידית‬(n+2)*(n+2)
•‫ערך‬ ‫בעלות‬ ‫הן‬ ‫חיצונית‬ ‫מעטפת‬ ‫של‬ ‫משבצות‬ ‫כל‬ ‫זו‬ ‫ברשימה‬ ‫כאשר‬False
•‫היא‬ ‫המשבצות‬ ‫משאר‬ ‫אחת‬ ‫וכל‬True‫בהסתברות‬p‫ו‬-False‫בהסתברות‬1-p
GenerateNewBoard(n,p)
•‫מקבלת‬ ‫הפונקציה‬‫לוח‬ ‫של‬ ‫גודל‬–n‫חיה‬ ‫מסוימת‬ ‫שמשבצת‬ ‫והסתברות‬p
•‫מחזירה‬ ‫הפונקציה‬‫דו‬ ‫רשימה‬-‫בגודל‬ ‫ממידית‬(n+2)*(n+2)
•‫ערך‬ ‫בעלות‬ ‫הן‬ ‫חיצונית‬ ‫מעטפת‬ ‫של‬ ‫משבצות‬ ‫כל‬ ‫זו‬ ‫ברשימה‬ ‫כאשר‬False
•‫היא‬ ‫המשבצות‬ ‫משאר‬ ‫אחת‬ ‫וכל‬True‫בהסתברות‬p‫ו‬-False‫בהסתברות‬1-p
GenerateNewBoard(n,p)
•‫מקבלת‬ ‫הפונקציה‬‫לוח‬ ‫של‬ ‫גודל‬–n‫חיה‬ ‫מסוימת‬ ‫שמשבצת‬ ‫והסתברות‬p
•‫מחזירה‬ ‫הפונקציה‬‫דו‬ ‫רשימה‬-‫בגודל‬ ‫ממידית‬(n+2)*(n+2)
•‫ערך‬ ‫בעלות‬ ‫הן‬ ‫חיצונית‬ ‫מעטפת‬ ‫של‬ ‫משבצות‬ ‫כל‬ ‫זו‬ ‫ברשימה‬ ‫כאשר‬False
•‫היא‬ ‫המשבצות‬ ‫משאר‬ ‫אחת‬ ‫וכל‬True‫בהסתברות‬p‫ו‬-False‫בהסתברות‬1-p
GenerateNewBoard(n,p)
•‫מקבלת‬ ‫הפונקציה‬‫לוח‬ ‫של‬ ‫גודל‬–n‫חיה‬ ‫מסוימת‬ ‫שמשבצת‬ ‫והסתברות‬p
•‫מחזירה‬ ‫הפונקציה‬‫דו‬ ‫רשימה‬-‫בגודל‬ ‫ממידית‬(n+2)*(n+2)
•‫ערך‬ ‫בעלות‬ ‫הן‬ ‫חיצונית‬ ‫מעטפת‬ ‫של‬ ‫משבצות‬ ‫כל‬ ‫זו‬ ‫ברשימה‬ ‫כאשר‬False
•‫היא‬ ‫המשבצות‬ ‫משאר‬ ‫אחת‬ ‫וכל‬True‫בהסתברות‬p‫ו‬-False‫בהסתברות‬1-p
GenerateNewBoard(n,p)
•‫שלנו‬ ‫קוד‬ ‫נבדוק‬:
GenerateNewBoard(n,p)
•‫שלנו‬ ‫קוד‬ ‫נבדוק‬:
GenerateNewBoard(n,p)
•‫שלנו‬ ‫קוד‬ ‫נבדוק‬:
‫בגודל‬ ‫סופי‬ ‫לוח‬ ‫על‬ ‫חיים‬ ‫משחק‬n*n
•‫מטרה‬‫סופי‬ ‫לוח‬ ‫על‬ ‫חיים‬ ‫משחק‬ ‫לממש‬ ‫היא‬ ‫שלנו‬
•‫אותו‬ ‫נעדן‬ ‫ואז‬ ‫אלגוריתם‬ ‫של‬ ‫כללי‬ ‫מתיור‬ ‫נתחיל‬
•‫חדש‬ ‫אקראי‬ ‫לוח‬ ‫נכין‬–‫דור‬0,‫הלוח‬ ‫את‬ ‫נצייר‬
•‫נגמר‬ ‫לא‬ ‫שהמשחק‬ ‫עד‬,‫הבא‬ ‫לוח‬ ‫נחשב‬(‫הבא‬ ‫דור‬)‫אותו‬ ‫ונצייר‬
‫סיימנו‬
GenerateNextBoard(Board)
•‫מקבלת‬ ‫הפונקציה‬‫מימדית‬ ‫דו‬ ‫רשימה‬:‫נוכחי‬ ‫דור‬ ‫שמייצג‬ ‫לוח‬‫ומחזירה‬
‫מימדית‬ ‫דו‬ ‫רשימה‬:‫הבא‬ ‫דור‬ ‫שמייצג‬ ‫לוח‬
GenerateNextBoard(Board)
•‫מקבלת‬ ‫הפונקציה‬‫מימדית‬ ‫דו‬ ‫רשימה‬:‫נוכחי‬ ‫דור‬ ‫שמייצג‬ ‫לוח‬‫ומחזירה‬
‫מימדית‬ ‫דו‬ ‫רשימה‬:‫הבא‬ ‫דור‬ ‫שמייצג‬ ‫לוח‬
•‫אלגוריתם‬:
•‫עם‬ ‫חדשה‬ ‫מימדית‬ ‫דו‬ ‫רשימה‬ ‫נכין‬False‫מקום‬ ‫בכל‬–‫הבא‬ ‫דור‬ ‫של‬ ‫לוח‬ ‫נשמור‬ ‫כאן‬
GenerateNextBoard(Board)
•‫מקבלת‬ ‫הפונקציה‬‫מימדית‬ ‫דו‬ ‫רשימה‬:‫נוכחי‬ ‫דור‬ ‫שמייצג‬ ‫לוח‬‫ומחזירה‬
‫מימדית‬ ‫דו‬ ‫רשימה‬:‫הבא‬ ‫דור‬ ‫שמייצג‬ ‫לוח‬
•‫אלגוריתם‬:
•‫עם‬ ‫חדשה‬ ‫מימדית‬ ‫דו‬ ‫רשימה‬ ‫נכין‬False‫מקום‬ ‫בכל‬–‫הבא‬ ‫דור‬ ‫של‬ ‫לוח‬ ‫נשמור‬ ‫כאן‬
•‫ישן‬ ‫בלוח‬ ‫פנימית‬ ‫משבצת‬ ‫כל‬ ‫על‬ ‫נעבור‬,‫נשמור‬ ‫ואז‬ ‫למשבצת‬ ‫יש‬ ‫שכנים‬ ‫כמה‬ ‫נספור‬
‫של‬ ‫ערך‬ ‫מתאים‬ ‫במקום‬ ‫חדש‬ ‫בלוח‬‫המשבצת‬:‫משחק‬ ‫כללי‬ ‫לפי‬ ‫מתה‬ ‫או‬ ‫חיה‬
‫שהגדרנו‬
GenerateNextBoard(Board)
•‫מקבלת‬ ‫הפונקציה‬‫מימדית‬ ‫דו‬ ‫רשימה‬:‫נוכחי‬ ‫דור‬ ‫שמייצג‬ ‫לוח‬‫ומחזירה‬
‫מימדית‬ ‫דו‬ ‫רשימה‬:‫הבא‬ ‫דור‬ ‫שמייצג‬ ‫לוח‬
•‫אלגוריתם‬:
•‫עם‬ ‫חדשה‬ ‫מימדית‬ ‫דו‬ ‫רשימה‬ ‫נכין‬False‫מקום‬ ‫בכל‬–‫הבא‬ ‫דור‬ ‫של‬ ‫לוח‬ ‫נשמור‬ ‫כאן‬
•‫ישן‬ ‫בלוח‬ ‫פנימית‬ ‫משבצת‬ ‫כל‬ ‫על‬ ‫נעבור‬,‫נשמור‬ ‫ואז‬ ‫למשבצת‬ ‫יש‬ ‫שכנים‬ ‫כמה‬ ‫נספור‬
‫של‬ ‫ערך‬ ‫מתאים‬ ‫במקום‬ ‫חדש‬ ‫בלוח‬‫המשבצת‬:‫משחק‬ ‫כללי‬ ‫לפי‬ ‫מתה‬ ‫או‬ ‫חיה‬
‫שהגדרנו‬
GenerateNextBoard(Board)
•‫מקבלת‬ ‫הפונקציה‬‫מימדית‬ ‫דו‬ ‫רשימה‬:‫נוכחי‬ ‫דור‬ ‫שמייצג‬ ‫לוח‬‫ומחזירה‬
‫מימדית‬ ‫דו‬ ‫רשימה‬:‫הבא‬ ‫דור‬ ‫שמייצג‬ ‫לוח‬
•‫אלגוריתם‬:
•‫עם‬ ‫חדשה‬ ‫מימדית‬ ‫דו‬ ‫רשימה‬ ‫נכין‬False‫מקום‬ ‫בכל‬–‫הבא‬ ‫דור‬ ‫של‬ ‫לוח‬ ‫נשמור‬ ‫כאן‬
•‫ישן‬ ‫בלוח‬ ‫פנימית‬ ‫משבצת‬ ‫כל‬ ‫על‬ ‫נעבור‬,‫נשמור‬ ‫ואז‬ ‫למשבצת‬ ‫יש‬ ‫שכנים‬ ‫כמה‬ ‫נספור‬
‫של‬ ‫ערך‬ ‫מתאים‬ ‫במקום‬ ‫חדש‬ ‫בלוח‬‫המשבצת‬:‫משחק‬ ‫כללי‬ ‫לפי‬ ‫מתה‬ ‫או‬ ‫חיה‬
‫שהגדרנו‬
GenerateNextBoard(Board)
•‫מקבלת‬ ‫הפונקציה‬‫מימדית‬ ‫דו‬ ‫רשימה‬:‫נוכחי‬ ‫דור‬ ‫שמייצג‬ ‫לוח‬‫ומחזירה‬
‫מימדית‬ ‫דו‬ ‫רשימה‬:‫הבא‬ ‫דור‬ ‫שמייצג‬ ‫לוח‬
•‫לסיכום‬:
GenerateNextBoard(Board)
•‫מקבלת‬ ‫הפונקציה‬‫מימדית‬ ‫דו‬ ‫רשימה‬:‫נוכחי‬ ‫דור‬ ‫שמייצג‬ ‫לוח‬‫ומחזירה‬
‫מימדית‬ ‫דו‬ ‫רשימה‬:‫הבא‬ ‫דור‬ ‫שמייצג‬ ‫לוח‬
•‫לסיכום‬:
CalcLiveNeigbours(Board,I,j)
•‫מקבלת‬ ‫הפונקציה‬‫של‬ ‫וקואורדינטות‬ ‫המשחק‬ ‫של‬ ‫לוח‬‫מסוימת‬ ‫משבצת‬,
‫הפונקציה‬‫מחזירה‬‫המשבצת‬ ‫של‬ ‫חיים‬ ‫שכנים‬ ‫כמות‬
CalcLiveNeigbours(Board,I,j)
•‫מקבלת‬ ‫הפונקציה‬‫של‬ ‫וקואורדינטות‬ ‫המשחק‬ ‫של‬ ‫לוח‬‫משבצת‬,‫הפונקציה‬
‫מחזירה‬‫המשבצת‬ ‫של‬ ‫חיים‬ ‫שכנים‬ ‫כמות‬
•‫אלגוריתם‬:
CalcLiveNeigbours(Board,I,j)
•‫מקבלת‬ ‫הפונקציה‬‫של‬ ‫וקואורדינטות‬ ‫המשחק‬ ‫של‬ ‫לוח‬‫משבצת‬,‫הפונקציה‬
‫מחזירה‬‫המשבצת‬ ‫של‬ ‫חיים‬ ‫שכנים‬ ‫כמות‬
•‫אלגוריתם‬:
•‫מ‬ ‫אחד‬ ‫כל‬ ‫על‬ ‫נעבור‬-8‫חיים‬ ‫מהם‬ ‫כמה‬ ‫ונספור‬ ‫המשבצת‬ ‫של‬ ‫שכנים‬
CalcLiveNeigbours(Board,I,j)
•‫מקבלת‬ ‫הפונקציה‬‫הפונקציה‬ ‫משבצת‬ ‫של‬ ‫וקואורדינטות‬ ‫המשחק‬ ‫של‬ ‫לוח‬
‫מחזירה‬‫המשבצת‬ ‫של‬ ‫חיים‬ ‫שכנים‬ ‫כמות‬
•‫אלגוריתם‬:
•‫מ‬ ‫אחד‬ ‫כל‬ ‫על‬ ‫נעבור‬-8‫חיים‬ ‫מהם‬ ‫כמה‬ ‫ונספור‬ ‫המשבצת‬ ‫של‬ ‫שכנים‬
http://www.codeskulptor.org/#user43_uDT5C2tdqH_0.py

More Related Content

More from Igor Kleiner

More from Igor Kleiner (20)

Анализ данных просто и доступно - урок 1
Анализ данных просто и доступно - урок 1Анализ данных просто и доступно - урок 1
Анализ данных просто и доступно - урок 1
 
מדעי נתונים לכל אחד
מדעי נתונים לכל אחדמדעי נתונים לכל אחד
מדעי נתונים לכל אחד
 
מדע נתונים - למידה מכונות
מדע נתונים - למידה מכונותמדע נתונים - למידה מכונות
מדע נתונים - למידה מכונות
 
מבוא למדעי הנתונים שבוע 2
מבוא למדעי הנתונים שבוע 2מבוא למדעי הנתונים שבוע 2
מבוא למדעי הנתונים שבוע 2
 
מבוא למדעי הנתונים הרצאה 1
מבוא למדעי הנתונים הרצאה 1מבוא למדעי הנתונים הרצאה 1
מבוא למדעי הנתונים הרצאה 1
 
תכנות דינמי הרצאה 3
תכנות דינמי הרצאה 3תכנות דינמי הרצאה 3
תכנות דינמי הרצאה 3
 
תכנות דינמי הרצאה 4
תכנות דינמי הרצאה 4תכנות דינמי הרצאה 4
תכנות דינמי הרצאה 4
 
שאלות לתרגול עצמי
שאלות לתרגול עצמישאלות לתרגול עצמי
שאלות לתרגול עצמי
 
פתרון תרגיל 3
פתרון תרגיל 3פתרון תרגיל 3
פתרון תרגיל 3
 
תכנות מדעי פייתון: הרצאה 12: סיבוכיות
תכנות מדעי פייתון: הרצאה 12: סיבוכיותתכנות מדעי פייתון: הרצאה 12: סיבוכיות
תכנות מדעי פייתון: הרצאה 12: סיבוכיות
 
מבוא לתכנות מדעי: פייתון: הרצאה 11: דבגינג + תכנות דינמי
מבוא לתכנות מדעי: פייתון: הרצאה 11: דבגינג + תכנות דינמימבוא לתכנות מדעי: פייתון: הרצאה 11: דבגינג + תכנות דינמי
מבוא לתכנות מדעי: פייתון: הרצאה 11: דבגינג + תכנות דינמי
 
תכנות מדעי: פייתון : הרצאה 7: 2017
תכנות מדעי: פייתון : הרצאה 7: 2017תכנות מדעי: פייתון : הרצאה 7: 2017
תכנות מדעי: פייתון : הרצאה 7: 2017
 
מבוא לתכנות מדעי: פייתון: הרצאה 4: 2017
מבוא לתכנות מדעי: פייתון: הרצאה 4: 2017מבוא לתכנות מדעי: פייתון: הרצאה 4: 2017
מבוא לתכנות מדעי: פייתון: הרצאה 4: 2017
 
מבוא לתכנות מדעי: פייתון: הרצאה 3: לולאות
מבוא לתכנות מדעי: פייתון: הרצאה 3: לולאותמבוא לתכנות מדעי: פייתון: הרצאה 3: לולאות
מבוא לתכנות מדעי: פייתון: הרצאה 3: לולאות
 
מבוא לתכנות מדעי: פייתון: הרצאה 2: 2017
מבוא לתכנות מדעי: פייתון: הרצאה 2: 2017מבוא לתכנות מדעי: פייתון: הרצאה 2: 2017
מבוא לתכנות מדעי: פייתון: הרצאה 2: 2017
 
פייתון: הרצאה 1
פייתון: הרצאה 1פייתון: הרצאה 1
פייתון: הרצאה 1
 
למידה ממוכנת פגישה 8
למידה ממוכנת פגישה 8 למידה ממוכנת פגישה 8
למידה ממוכנת פגישה 8
 
מערכות לומדות פגישה 7-1 יער אקראי
מערכות לומדות פגישה 7-1 יער אקראימערכות לומדות פגישה 7-1 יער אקראי
מערכות לומדות פגישה 7-1 יער אקראי
 
מערכות לומדות תרגול 3 עצים
מערכות לומדות תרגול 3 עציםמערכות לומדות תרגול 3 עצים
מערכות לומדות תרגול 3 עצים
 
מערכות לומדות פגישה 6
מערכות לומדות פגישה 6מערכות לומדות פגישה 6
מערכות לומדות פגישה 6
 

תכנות מדעי: פייתון: הרצאה 10: : תחום הכרעה

  • 3. ‫השמות‬ ‫מרחב‬ ‫מהו‬ •‫בפייתון‬‫השמות‬ ‫מרחב‬‫לאובייקטים‬ ‫משתנים‬ ‫שמות‬ ‫בין‬ ‫מיפוי‬ ‫טבלת‬ ‫הוא‬
  • 4. ‫השמות‬ ‫מרחב‬ ‫מהו‬ •‫בפייתון‬‫השמות‬ ‫מרחב‬‫לאובייקטים‬ ‫משתנים‬ ‫שמות‬ ‫בין‬ ‫מיפוי‬ ‫טבלת‬ ‫הוא‬ •‫פשוטה‬ ‫מדוגמא‬ ‫נתחיל‬: Namespace x 12 z 22 y “Hello” ‫משתנים‬ ‫של‬ ‫שמות‬ ‫ערכים‬
  • 5. ‫השמות‬ ‫מרחב‬ ‫מהו‬ •‫בפייתון‬‫השמות‬ ‫מרחב‬‫לאובייקטים‬ ‫משתנים‬ ‫שמות‬ ‫בין‬ ‫מיפוי‬ ‫טבלת‬ ‫הוא‬ •‫מודול‬ ‫לכל‬ ‫בפייתון‬,‫פונקציה‬ ‫לכל‬,‫מחלקה‬ ‫ולכל‬(‫נלמד‬ ‫לא‬)‫משלו‬ ‫השמות‬ ‫מרחב‬ ‫יש‬ •‫נקרא‬ ‫כזה‬ ‫השמות‬ ‫מרחב‬‫לוקאלי‬‫מסוים‬ ‫לאובייקט‬ ‫משויך‬ ‫הוא‬ ‫כי‬–‫פונקציה‬,‫וכו‬ ‫מודול‬' Namespace x 12 z 22 y “Hello”
  • 6. ‫השמות‬ ‫מרחב‬ ‫מהו‬ •‫בפייתון‬‫השמות‬ ‫מרחב‬‫לאובייקטים‬ ‫משתנים‬ ‫שמות‬ ‫בין‬ ‫מיפוי‬ ‫טבלת‬ ‫הוא‬ •‫מודול‬ ‫לכל‬ ‫בפייתון‬,‫פונקציה‬ ‫לכל‬,‫מחלקה‬ ‫לכל‬(‫נלמד‬ ‫לא‬)‫משלו‬ ‫השמות‬ ‫מרחב‬ ‫יש‬ •‫נקרא‬ ‫כזה‬ ‫השמות‬ ‫מרחב‬‫לוקאלי‬‫מסוים‬ ‫לאובייקט‬ ‫משויך‬ ‫הוא‬ ‫כי‬:‫פונקציה‬,‫וכו‬ ‫מודול‬' •‫הסתיים‬ ‫הפונקציה‬ ‫של‬ ‫ביצוע‬ ‫וכאשר‬ ‫עבורה‬ ‫מיוצר‬ ‫השמות‬ ‫מרחב‬ ‫לפונקציה‬ ‫קוראים‬ ‫אנו‬ ‫כאשר‬ ‫נמחק‬ ‫המרחב‬ Namespace x 12 z 22 y “Hello”
  • 7. ‫השמות‬ ‫מרחב‬ ‫מהו‬ •‫בפייתון‬‫השמות‬ ‫מרחב‬‫לאובייקטים‬ ‫משתנים‬ ‫שמות‬ ‫בין‬ ‫מיפוי‬ ‫טבלת‬ ‫הוא‬ •‫מודול‬ ‫לכל‬ ‫בפייתון‬,‫פונקציה‬ ‫לכל‬,‫מחלקה‬ ‫לכל‬(‫נלמד‬ ‫לא‬)‫משלו‬ ‫השמות‬ ‫מרחב‬ ‫יש‬ •‫נקרא‬ ‫כזה‬ ‫השמות‬ ‫מרחב‬‫לוקאלי‬‫מסוים‬ ‫לאובייקט‬ ‫משויך‬ ‫הוא‬ ‫כי‬:‫פונקציה‬,‫וכו‬ ‫מודול‬' •‫הסתיים‬ ‫הפונקציה‬ ‫של‬ ‫ביצוע‬ ‫וכאשר‬ ‫עבורה‬ ‫מיוצר‬ ‫השמות‬ ‫מרחב‬ ‫לפונקציה‬ ‫קוראים‬ ‫אנו‬ ‫כאשר‬ ‫נמחק‬ ‫המרחב‬ •‫גלובאלי‬ ‫שמות‬ ‫למרחב‬ ‫ושייכים‬ ‫גלובאליים‬ ‫נקראים‬ ‫תוכנה‬ ‫של‬ ‫ראשי‬ ‫בגוף‬ ‫שמוגדרים‬ ‫משתנים‬ Namespace x 12 z 22 y “Hello”
  • 8.
  • 9.
  • 10. ‫קריאה‬ ‫בעת‬ ‫מיוצר‬ ‫לוקאלי‬ ‫השמות‬ ‫מרחב‬ ‫לפונקציה‬f ‫גלובאלי‬ ‫השמות‬ ‫מרחב‬
  • 11. ‫חזרה‬ ‫לאחר‬ ‫ימחק‬ ‫לוקאלי‬ ‫שמות‬ ‫מרחב‬ ‫מפונקציה‬
  • 12. ‫השמות‬ ‫מרחב‬ ‫מהו‬ •‫בפייתון‬‫השמות‬ ‫מרחב‬‫לאובייקטים‬ ‫משתנים‬ ‫שמות‬ ‫בין‬ ‫מיפוי‬ ‫טבלת‬ ‫הוא‬ •‫מודול‬ ‫לכל‬ ‫בפייתון‬,‫פונקציה‬ ‫לכל‬,‫מחלקה‬ ‫ולכל‬(‫למדנו‬ ‫לא‬)‫משלו‬ ‫השמות‬ ‫מרחב‬ ‫יש‬ •‫נקרא‬ ‫הזה‬ ‫השמות‬ ‫מרחב‬‫לוקאלי‬‫מסוים‬ ‫לאובייקט‬ ‫משויך‬ ‫הוא‬ ‫כי‬:‫פונקציה‬,‫וכו‬ ‫מודול‬' •‫הסתיים‬ ‫הפונקציה‬ ‫של‬ ‫ביצוע‬ ‫וכאשר‬ ‫עבורה‬ ‫מיוצר‬ ‫השמות‬ ‫המרחב‬ ‫לפונקציה‬ ‫קוראים‬ ‫אנו‬ ‫כאשר‬ ‫נמחק‬ ‫המרחב‬ •‫גלובאלי‬ ‫שמות‬ ‫למרחב‬ ‫ושייכים‬ ‫גלובאליים‬ ‫נקראים‬ ‫תוכנה‬ ‫של‬ ‫ראשי‬ ‫בגוף‬ ‫שמוגדרים‬ ‫משתנים‬ •‫שונים‬ ‫שמות‬ ‫במרחבי‬ ‫למשתנים‬ ‫שם‬ ‫אותו‬ ‫לתת‬ ‫אפשר‬ Namespace x 12 z 22 y “Hello”
  • 13.
  • 15. ‫מטרה‬ ‫של‬ ‫ההכרה‬ ‫תחום‬ ‫על‬ ‫ללמוד‬‫בפייתון‬ ‫משתנים‬
  • 16. ‫השמות‬ ‫מרחב‬–‫תזכורת‬ •‫משלה‬ ‫השמות‬ ‫מרחב‬ ‫יש‬ ‫מחלקה‬ ‫או‬ ‫מודול‬ ‫או‬ ‫פונקציה‬ ‫לכל‬ ‫בפייתון‬ •‫לפונקציה‬ ‫קריאה‬ ‫בעת‬‫הפונקציה‬ ‫של‬ ‫השמות‬ ‫מרחב‬ ‫מיוצר‬ •‫נמחק‬ ‫הפונקציה‬ ‫של‬ ‫השמות‬ ‫המרחב‬ ‫מהפונקציה‬ ‫יוצאים‬ ‫כאשר‬
  • 17. ‫השמות‬ ‫מרחב‬–‫תזכורת‬ •‫משלה‬ ‫השמות‬ ‫מרחב‬ ‫יש‬ ‫מחלקה‬ ‫או‬ ‫מודול‬ ‫או‬ ‫פונקציה‬ ‫לכל‬ ‫בפייתון‬ •‫לפונקציה‬ ‫קריאה‬ ‫בעת‬‫הפונקציה‬ ‫של‬ ‫השמות‬ ‫מרחב‬ ‫מיוצר‬ •‫נמחק‬ ‫שמות‬ ‫המרחב‬ ‫מהפונקציה‬ ‫יוצאים‬ ‫כאשר‬ •‫מסקנה‬:‫תוכנה‬ ‫ביצוע‬ ‫בזמן‬–‫השמות‬ ‫מרחבי‬ ‫מספר‬ ‫קיים‬
  • 18. ‫השמות‬ ‫מרחב‬–‫תזכורת‬ •‫משלה‬ ‫השמות‬ ‫מרחב‬ ‫יש‬ ‫מחלקה‬ ‫או‬ ‫מודול‬ ‫או‬ ‫פונקציה‬ ‫לכל‬ ‫בפייתון‬ •‫לפונקציה‬ ‫קריאה‬ ‫בעת‬‫הפונקציה‬ ‫של‬ ‫השמות‬ ‫מרחב‬ ‫מיוצר‬ •‫נמחק‬ ‫שמות‬ ‫המרחב‬ ‫מהפונקציה‬ ‫יוצאים‬ ‫כאשר‬ •‫מסקנה‬:‫תוכנה‬ ‫ביצוע‬ ‫בזמן‬–‫השמות‬ ‫מרחבי‬ ‫מספר‬ ‫קיים‬ •‫בו‬ ‫משתמשים‬ ‫שכעת‬ ‫משתנה‬ ‫מצביע‬ ‫שעליו‬ ‫ערך‬ ‫מהו‬ ‫יודע‬ ‫פייתון‬ ‫איך‬?
  • 19. ‫ההכרה‬ ‫תחום‬ •‫בקוד‬ ‫מקום‬ ‫מכל‬ ‫משתנה‬ ‫לכל‬ ‫לגשת‬ ‫ניתן‬ ‫לא‬ •‫בו‬ ‫להשתמש‬ ‫וניתן‬ ‫קיים‬ ‫המשתנה‬ ‫שבו‬ ‫קוד‬ ‫של‬ ‫חלק‬ ‫הוא‬ ‫משתנה‬ ‫של‬ ‫ההכרה‬ ‫תחום‬ •‫לפי‬ ‫המשתנה‬ ‫הגדרת‬ ‫את‬ ‫מחפש‬ ‫תמיד‬ ‫הוא‬ ‫המשתנה‬ ‫מוגדר‬ ‫איפו‬ ‫מחפש‬ ‫פייתון‬ ‫כאשר‬ ‫הבא‬ ‫סדר‬: Local->Enclosed->Global->Built-In
  • 20. ‫ההכרה‬ ‫תחום‬ •‫בקוד‬ ‫מקום‬ ‫מכל‬ ‫משתנה‬ ‫לכל‬ ‫לגשת‬ ‫ניתן‬ ‫לא‬ •‫בו‬ ‫להשתמש‬ ‫וניתן‬ ‫קיים‬ ‫המשתנה‬ ‫שבו‬ ‫קוד‬ ‫של‬ ‫חלק‬ ‫הוא‬ ‫משתנה‬ ‫של‬ ‫ההכרה‬ ‫תחום‬ •‫לפי‬ ‫המשתנה‬ ‫הגדרת‬ ‫את‬ ‫מחפש‬ ‫תמיד‬ ‫הוא‬ ‫המשתנה‬ ‫מוגדר‬ ‫איפו‬ ‫מחפש‬ ‫פייתון‬ ‫כאשר‬ ‫הבא‬ ‫סדר‬: Local->Enclosed->Global->Built-in •‫מודול‬ ‫או‬ ‫פונקציה‬ ‫בתוך‬ ‫השמות‬ ‫מרחב‬ ‫הוא‬ ‫לוקאלי‬ ‫השמות‬ ‫מרחב‬ •Local:‫המודול‬ ‫או‬ ‫הפונקציה‬ ‫בתוך‬ ‫לוקלי‬ ‫הוא‬ ‫מודול‬ ‫או‬ ‫פונקציה‬ ‫בתוך‬ ‫המוגדר‬ ‫משתנה‬ ‫כל‬ •Enclosed‫משתמשים‬ ‫שבה‬ ‫פונקציה‬ ‫מוגדרת‬ ‫שבה‬ ‫הפונקציה‬ ‫של‬ ‫השמות‬ ‫מרחב‬ ‫הוא‬ ‫במשתנה‬ •Global‫התוכנה‬ ‫כל‬ ‫של‬ ‫השמות‬ ‫מרחב‬ ‫הוא‬ •Built-In‫פייתון‬ ‫של‬ ‫השמורים‬ ‫המשתנים‬ ‫הפונקציות‬ ‫כל‬ ‫עם‬ ‫פייתון‬ ‫של‬ ‫השמות‬ ‫מרחב‬
  • 21. ‫ההכרה‬ ‫תחום‬ •‫המשתנה‬ ‫של‬ ‫הערך‬ ‫את‬ ‫אחפש‬ ‫קודם‬ ‫פייתון‬ ‫אז‬ ‫בקוד‬ ‫במשתנה‬ ‫נשתמש‬ ‫אנו‬ ‫כאשר‬ ‫ולכן‬ ‫הלוקאלי‬ ‫השמות‬ ‫במרחב‬,‫השמות‬ ‫במרחב‬ ‫אזי‬ ‫אותו‬ ‫ימצא‬ ‫לא‬ ‫ואם‬Enclosed‫אז‬ ‫לא‬ ‫ואם‬ ‫ב‬-Global‫ב‬ ‫אז‬ ‫לא‬ ‫ואם‬-Built-In
  • 22. ‫ההכרה‬ ‫תחום‬ •‫המשתנה‬ ‫של‬ ‫הערך‬ ‫את‬ ‫אחפש‬ ‫קודם‬ ‫פייתון‬ ‫אז‬ ‫בקוד‬ ‫במשתנה‬ ‫נשתמש‬ ‫אנו‬ ‫כאשר‬ ‫ולכן‬ ‫הלוקאלי‬ ‫השמות‬ ‫במרחב‬,‫השמות‬ ‫במרחב‬ ‫אזי‬ ‫אותו‬ ‫ימצא‬ ‫לא‬ ‫ואם‬Enclosed‫אז‬ ‫לא‬ ‫ואם‬ ‫ב‬-Global‫ב‬ ‫אז‬ ‫לא‬ ‫ואם‬-Built-In
  • 23. ‫ההכרה‬ ‫תחום‬ •‫המשתנה‬ ‫של‬ ‫הערך‬ ‫את‬ ‫אחפש‬ ‫קודם‬ ‫פייתון‬ ‫אז‬ ‫בקוד‬ ‫במשתנה‬ ‫נשתמש‬ ‫אנו‬ ‫כאשר‬ ‫ולכן‬ ‫הלוקאלי‬ ‫השמות‬ ‫במרחב‬,‫השמות‬ ‫במרחב‬ ‫אזי‬ ‫אותו‬ ‫ימצא‬ ‫לא‬ ‫ואם‬Enclosed‫אז‬ ‫לא‬ ‫ואם‬ ‫ב‬-Global‫ב‬ ‫אז‬ ‫לא‬ ‫ואם‬-Built-In
  • 24. ‫ההכרה‬ ‫תחום‬ •‫המשתנה‬ ‫של‬ ‫הערך‬ ‫את‬ ‫אחפש‬ ‫קודם‬ ‫פייתון‬ ‫אז‬ ‫בקוד‬ ‫במשתנה‬ ‫נשתמש‬ ‫אנו‬ ‫כאשר‬ ‫ולכן‬ ‫הלוקאלי‬ ‫השמות‬ ‫במרחב‬,‫השמות‬ ‫במרחב‬ ‫אזי‬ ‫אותו‬ ‫ימצא‬ ‫לא‬ ‫ואם‬Enclosed‫אז‬ ‫לא‬ ‫ואם‬ ‫ב‬-Global‫ב‬ ‫אז‬ ‫לא‬ ‫ואם‬-Built-In
  • 25. ‫ההכרה‬ ‫תחום‬ •‫המשתנה‬ ‫של‬ ‫הערך‬ ‫את‬ ‫אחפש‬ ‫קודם‬ ‫פייתון‬ ‫אז‬ ‫בקוד‬ ‫במשתנה‬ ‫נשתמש‬ ‫אנו‬ ‫כאשר‬ ‫ולכן‬ ‫הלוקאלי‬ ‫השמות‬ ‫במרחב‬,‫השמות‬ ‫במרחב‬ ‫אזי‬ ‫אותו‬ ‫ימצא‬ ‫לא‬ ‫ואם‬Enclosed‫אז‬ ‫לא‬ ‫ואם‬ ‫ב‬-Global‫ב‬ ‫אז‬ ‫לא‬ ‫ואם‬-Built-In
  • 26. ‫ההכרה‬ ‫תחום‬ •‫המשתנה‬ ‫של‬ ‫הערך‬ ‫את‬ ‫אחפש‬ ‫קודם‬ ‫פייתון‬ ‫אז‬ ‫בקוד‬ ‫במשתנה‬ ‫נשתמש‬ ‫אנו‬ ‫כאשר‬ ‫ולכן‬ ‫הלוקאלי‬ ‫השמות‬ ‫במרחב‬,‫השמות‬ ‫במרחב‬ ‫אזי‬ ‫אותו‬ ‫ימצא‬ ‫לא‬ ‫ואם‬Enclosed‫אז‬ ‫לא‬ ‫ואם‬ ‫ב‬-Global‫ב‬ ‫אז‬ ‫לא‬ ‫ואם‬-Built-In
  • 27. ‫ההכרה‬ ‫תחום‬ •‫המשתנה‬ ‫של‬ ‫הערך‬ ‫את‬ ‫אחפש‬ ‫קודם‬ ‫פייתון‬ ‫אז‬ ‫בקוד‬ ‫במשתנה‬ ‫נשתמש‬ ‫אנו‬ ‫כאשר‬ ‫ולכן‬ ‫הלוקאלי‬ ‫השמות‬ ‫במרחב‬,‫השמות‬ ‫במרחב‬ ‫אזי‬ ‫אותו‬ ‫ימצא‬ ‫לא‬ ‫ואם‬Enclosed‫אז‬ ‫לא‬ ‫ואם‬ ‫ב‬-Global‫ב‬ ‫אז‬ ‫לא‬ ‫ואם‬-Built-In
  • 28. ‫ההכרה‬ ‫תחום‬ •‫המשתנה‬ ‫של‬ ‫הערך‬ ‫את‬ ‫אחפש‬ ‫קודם‬ ‫פייתון‬ ‫אז‬ ‫בקוד‬ ‫במשתנה‬ ‫נשתמש‬ ‫אנו‬ ‫כאשר‬ ‫ולכן‬ ‫הלוקאלי‬ ‫השמות‬ ‫במרחב‬,‫השמות‬ ‫במרחב‬ ‫אזי‬ ‫אותו‬ ‫ימצא‬ ‫לא‬ ‫ואם‬Enclosed‫אז‬ ‫לא‬ ‫ואם‬ ‫ב‬-Global‫ב‬ ‫אז‬ ‫לא‬ ‫ואם‬-Built-In
  • 32. ‫ב‬ ‫שימוש‬-global •‫של‬ ‫במנגנון‬ ‫להשתמש‬ ‫ממליצים‬ ‫לא‬ ‫כלל‬ ‫בדרך‬global‫התוכנה‬ ‫את‬ ‫הופך‬ ‫וזה‬ ‫היות‬ ‫לתחזוקה‬ ‫קשה‬ ‫ויותר‬ ‫קריאה‬ ‫לפחות‬
  • 33. ‫סיכום‬ ‫הפונקציה‬ ‫של‬ ‫גוף‬ ‫הוא‬ ‫הפונקציה‬ ‫בתוך‬ ‫המוגדרים‬ ‫ומשתנים‬ ‫פונקציה‬ ‫של‬ ‫פרמטרים‬ ‫של‬ ‫ההכרה‬ ‫תחום‬ ‫פונקציות‬ ‫של‬ ‫ופרמטרים‬ ‫למשתנים‬ ‫לגשת‬ ‫ניתן‬ ‫לא‬ ‫גלובאלי‬ ‫מקוד‬ ‫למעט‬ ‫אחרת‬ ‫בפונקציה‬ ‫המוגדרים‬ ‫משתנים‬ ‫או‬ ‫לפרמטרים‬ ‫לגשת‬ ‫ניתן‬ ‫לא‬ ‫אחד‬ ‫פונקציה‬ ‫מתוך‬‫מקרים‬ ‫פונקציה‬ ‫כאשר‬‫שניה‬ ‫פונקציה‬ ‫בתוך‬ ‫מוגדרת‬ ‫אחד‬
  • 34.
  • 37. ‫מטרה‬ ‫לפונקציה‬ ‫פרמטרים‬ ‫העברת‬ ‫מנגנון‬ ‫להבין‬ ‫לשינוי‬ ‫שניתנים‬ ‫פונקציה‬ ‫של‬ ‫פרמטרים‬ ‫בין‬ ‫הבדל‬ ‫להבין‬ (mutable)‫לשינוי‬ ‫ניתנים‬ ‫שלא‬ ‫לפרמטרים‬(immutable)
  • 43. Mutable Immutable types Int, float, bool immutable str immutable tuple immutable List mutable dictionary mutable
  • 44. Example: immutability of integers Int, float, bool immutable str immutable tuple immutable List mutable dictionary mutable 10i
  • 45. Example: immutability of integers Int, float, bool immutable str immutable tuple immutable List mutable dictionary mutable 10i 20
  • 46. Example: immutability of integers Int, float, bool immutable str immutable tuple immutable List mutable dictionary mutable 10i
  • 47. Example: immutability of integers Int, float, bool immutable str immutable tuple immutable List mutable dictionary mutable 10i j
  • 48. Example: immutability of integers Int, float, bool immutable str immutable tuple immutable List mutable dictionary mutable 10i j 20
  • 49. Aliasing •Aliasing‫משתנים‬ ‫שתי‬ ‫כאשר‬ ‫תופעה‬ ‫היא‬‫מצביעים‬‫ערך‬ ‫אותו‬ ‫על‬
  • 50. Aliasing •Aliasing‫משתנים‬ ‫שתי‬ ‫כאשר‬ ‫תופעה‬ ‫היא‬‫מצביעים‬‫ערך‬ ‫אותו‬ ‫על‬ ‫לדוגמא‬:
  • 51. Aliasing •Aliasing‫משתנים‬ ‫שתי‬ ‫כאשר‬ ‫תופעה‬ ‫היא‬‫מצביעים‬‫ערך‬ ‫אותו‬ ‫על‬ ‫לדוגמא‬: ‫של‬ ‫מהערכים‬ ‫אחד‬ ‫את‬ ‫נשנה‬ ‫כאשר‬ ‫יקרא‬ ‫מה‬-y?
  • 53. Aliasing ‫תופעת‬ ‫לפעמים‬Aliasing‫ליווי‬ ‫לתופעות‬ ‫וגורמת‬ ‫הקוד‬ ‫הבנת‬ ‫את‬ ‫מסבכת‬ ‫צורך‬ ‫ללא‬ ‫אותה‬ ‫לייצר‬ ‫כדאי‬ ‫לא‬ ‫לכן‬
  • 54. Immutable objects as function arguments •‫להבין‬ ‫חשוב‬‫של‬ ‫פרמטר‬ ‫וגם‬ ‫הארגומנט‬ ‫גם‬ ‫אזי‬ ‫ארגומנט‬ ‫לפונקציה‬ ‫מעבירים‬ ‫שכאשר‬ ‫הפונקציה‬‫מצביעים‬‫ערך‬ ‫אותו‬ ‫על‬(aliasing)
  • 55. Immutable objects as function arguments •‫להבין‬ ‫חשוב‬‫של‬ ‫פרמטר‬ ‫וגם‬ ‫הארגומנט‬ ‫גם‬ ‫אזי‬ ‫ארגומנט‬ ‫לפונקציה‬ ‫מעבירים‬ ‫שכאשר‬ ‫הפונקציה‬‫מצביעים‬‫ערך‬ ‫אותו‬ ‫על‬(aliasing) 1j
  • 56. Immutable objects as function arguments •‫להבין‬ ‫חשוב‬‫של‬ ‫פרמטר‬ ‫וגם‬ ‫הארגומנט‬ ‫גם‬ ‫אזי‬ ‫ארגומנט‬ ‫לפונקציה‬ ‫מעבירים‬ ‫שכאשר‬ ‫הפונקציה‬‫מצביעים‬‫ערך‬ ‫אותו‬ ‫על‬(aliasing) 1j i
  • 57. Immutable objects as function arguments •‫להבין‬ ‫חשוב‬‫של‬ ‫פרמטר‬ ‫וגם‬ ‫הארגומנט‬ ‫גם‬ ‫אזי‬ ‫ארגומנט‬ ‫לפונקציה‬ ‫מעבירים‬ ‫שכאשר‬ ‫הפונקציה‬‫מצביעים‬‫ערך‬ ‫אותו‬ ‫על‬(aliasing) 1j i 2
  • 58. Immutable objects as function arguments •‫להבין‬ ‫חשוב‬‫של‬ ‫פרמטר‬ ‫וגם‬ ‫הארגומנט‬ ‫גם‬ ‫אזי‬ ‫ארגומנט‬ ‫לפונקציה‬ ‫מעבירים‬ ‫שכאשר‬ ‫הפונקציה‬‫מצביעים‬‫ערך‬ ‫אותו‬ ‫על‬(aliasing) 1j
  • 59. Immutable objects as function arguments •‫להבין‬ ‫חשוב‬‫של‬ ‫פרמטר‬ ‫וגם‬ ‫הארגומנט‬ ‫גם‬ ‫אזי‬ ‫ארגומנט‬ ‫לפונקציה‬ ‫מעבירים‬ ‫שכאשר‬ ‫הפונקציה‬‫מצביעים‬‫ערך‬ ‫אותו‬ ‫על‬(aliasing) •‫מסקנה‬:‫כאשר‬ ‫קיבלה‬ ‫שהיא‬ ‫ארגומנט‬ ‫של‬ ‫הערך‬ ‫את‬ ‫לשנות‬ ‫יכולה‬ ‫לא‬ ‫פונקציה‬ ‫הוא‬ ‫הארגומנט‬immutable
  • 60. Immutable objects as function arguments •‫להבין‬ ‫חשוב‬‫של‬ ‫פרמטר‬ ‫וגם‬ ‫הארגומנט‬ ‫גם‬ ‫אזי‬ ‫ארגומנט‬ ‫לפונקציה‬ ‫מעבירים‬ ‫שכאשר‬ ‫הפונקציה‬‫מצביעים‬‫ערך‬ ‫אותו‬ ‫על‬(aliasing) •‫מסקנה‬:‫כאשר‬ ‫קיבלה‬ ‫שהיא‬ ‫ארגומנט‬ ‫של‬ ‫הערך‬ ‫את‬ ‫לשנות‬ ‫יכולה‬ ‫לא‬ ‫פונקציה‬ ‫הוא‬ ‫הארגומנט‬immutable •‫פונקציה‬ ‫לעשות‬ ‫רוצים‬ ‫אנו‬ ‫זאת‬ ‫בכל‬ ‫אם‬inc‫ב‬ ‫פרמטר‬ ‫של‬ ‫הערך‬ ‫את‬ ‫שמגדילה‬-1‫אזי‬ ‫הבא‬ ‫בקוד‬ ‫להשתמש‬ ‫אפשר‬: 1
  • 61. Mutable objects as function arguments •‫להבין‬ ‫חשוב‬‫של‬ ‫פרמטר‬ ‫וגם‬ ‫הארגומנט‬ ‫גם‬ ‫אזי‬ ‫ארגומנט‬ ‫לפונקציה‬ ‫מעבירים‬ ‫שכאשר‬ ‫הפונקציה‬‫מצביעים‬‫ערך‬ ‫אותו‬ ‫על‬(aliasing) [1]l
  • 62. mutable objects as function arguments •‫להבין‬ ‫חשוב‬‫של‬ ‫פרמטר‬ ‫וגם‬ ‫הארגומנט‬ ‫גם‬ ‫אזי‬ ‫ארגומנט‬ ‫לפונקציה‬ ‫מעבירים‬ ‫שכאשר‬ ‫הפונקציה‬‫מצביעים‬‫ערך‬ ‫אותו‬ ‫על‬(aliasing) [1]l m
  • 63. mutable objects as function arguments •‫להבין‬ ‫חשוב‬‫של‬ ‫פרמטר‬ ‫וגם‬ ‫הארגומנט‬ ‫גם‬ ‫אזי‬ ‫ארגומנט‬ ‫לפונקציה‬ ‫מעבירים‬ ‫שכאשר‬ ‫הפונקציה‬‫מצביעים‬‫ערך‬ ‫אותו‬ ‫על‬(aliasing) [2]l m
  • 64. mutable objects as function arguments •‫להבין‬ ‫חשוב‬‫של‬ ‫פרמטר‬ ‫וגם‬ ‫הארגומנט‬ ‫גם‬ ‫אזי‬ ‫ארגומנט‬ ‫לפונקציה‬ ‫מעבירים‬ ‫שכאשר‬ ‫הפונקציה‬‫מצביעים‬‫ערך‬ ‫אותו‬ ‫על‬(aliasing) [2]l
  • 65. mutable objects as function arguments •‫להבין‬ ‫חשוב‬‫של‬ ‫פרמטר‬ ‫וגם‬ ‫הארגומנט‬ ‫גם‬ ‫אזי‬ ‫ארגומנט‬ ‫לפונקציה‬ ‫מעבירים‬ ‫שכאשר‬ ‫הפונקציה‬‫מצביעים‬‫ערך‬ ‫אותו‬ ‫על‬(aliasing) •‫חשובה‬ ‫מסקנה‬:‫הוא‬ ‫כאשר‬ ‫שלה‬ ‫הארגומנט‬ ‫את‬ ‫לשנות‬ ‫יכולה‬ ‫פונקציה‬mutable
  • 66. mutable objects as function arguments •‫להבין‬ ‫חשוב‬‫של‬ ‫פרמטר‬ ‫וגם‬ ‫הארגומנט‬ ‫גם‬ ‫אזי‬ ‫ארגומנט‬ ‫לפונקציה‬ ‫מעבירים‬ ‫שכאשר‬ ‫הפונקציה‬‫מצביעים‬‫ערך‬ ‫אותו‬ ‫על‬(aliasing) •‫חשובה‬ ‫מסקנה‬:‫הוא‬ ‫כאשר‬ ‫שלה‬ ‫הארגומנט‬ ‫את‬ ‫לשנות‬ ‫יכולה‬ ‫פונקציה‬mutable •‫דוגמא‬:
  • 67. mutable objects as function arguments •‫להבין‬ ‫חשוב‬‫של‬ ‫פרמטר‬ ‫וגם‬ ‫הארגומנט‬ ‫גם‬ ‫אזי‬ ‫ארגומנט‬ ‫לפונקציה‬ ‫מעבירים‬ ‫שכאשר‬ ‫הפונקציה‬‫מצביעים‬‫ערך‬ ‫אותו‬ ‫על‬(aliasing) •‫חשובה‬ ‫מסקנה‬:‫הוא‬ ‫כאשר‬ ‫שלה‬ ‫הארגומנט‬ ‫את‬ ‫לשנות‬ ‫יכולה‬ ‫פונקציה‬mutable •‫דוגמא‬:
  • 68.
  • 70. ‫השיעור‬ ‫של‬ ‫מטרה‬ ‫קונווי‬ ‫של‬ ‫חיים‬ ‫משחק‬ ‫להכיר‬ ‫חיים‬ ‫למשחק‬ ‫אלגוריתם‬ ‫לפתח‬ ‫המשחק‬ ‫של‬ ‫קוד‬ ‫לפתח‬
  • 73.
  • 74. ‫בגודל‬ ‫סופי‬ ‫לוח‬ ‫על‬ ‫חיים‬ ‫משחק‬n*n •‫מטרה‬‫סופי‬ ‫לוח‬ ‫על‬ ‫חיים‬ ‫משחק‬ ‫לממש‬ ‫שלנו‬
  • 75. ‫בגודל‬ ‫סופי‬ ‫לוח‬ ‫על‬ ‫חיים‬ ‫משחק‬n*n •‫מטרה‬‫סופי‬ ‫לוח‬ ‫על‬ ‫חיים‬ ‫משחק‬ ‫לממש‬ ‫היא‬ ‫שלנו‬ •‫הלוח‬ ‫על‬ ‫אקראית‬ ‫מקונפיגורציה‬ ‫יתחיל‬ ‫המשחק‬,‫בהסתברות‬ ‫כאשר‬p‫כל‬ ‫ובהסתברות‬ ‫חייה‬ ‫תהי‬ ‫משבצת‬1-p‫ב‬ ‫באופן‬ ‫מתה‬ ‫תהיה‬ ‫משבצת‬ ‫כל‬"‫ת‬ ‫משבצות‬ ‫בשאר‬
  • 76. ‫בגודל‬ ‫סופי‬ ‫לוח‬ ‫על‬ ‫חיים‬ ‫משחק‬n*n •‫מטרה‬‫סופי‬ ‫לוח‬ ‫על‬ ‫חיים‬ ‫משחק‬ ‫לממש‬ ‫היא‬ ‫שלנו‬ •‫הלוח‬ ‫על‬ ‫אקראית‬ ‫מקונפיגורציה‬ ‫יתחיל‬ ‫המשחק‬,‫בהסתברות‬ ‫כאשר‬p‫כל‬ ‫ובהסתברות‬ ‫חייה‬ ‫תהי‬ ‫משבצת‬1-p‫ב‬ ‫באופן‬ ‫מתה‬ ‫תהיה‬ ‫משבצת‬ ‫כל‬"‫ת‬ ‫משבצות‬ ‫בשאר‬ •‫הבא‬ ‫דור‬ ‫לחישוב‬ ‫המשחק‬ ‫חוקי‬: •‫למשבצת‬ ‫אם‬‫חייה‬‫מ‬ ‫יותר‬ ‫יש‬-3‫הבא‬ ‫בדור‬ ‫מצפיפות‬ ‫תמות‬ ‫היא‬ ‫שכנים‬ •‫למשבצת‬ ‫אם‬‫חייה‬‫מ‬ ‫פחות‬ ‫יש‬-2‫הבא‬ ‫בדור‬ ‫בידור‬ ‫מחוסר‬ ‫תמות‬ ‫היא‬ ‫שכנים‬ •‫יש‬ ‫מתה‬ ‫למשבצת‬ ‫אם‬3‫תהיה‬ ‫היא‬ ‫הבא‬ ‫בדור‬ ‫אזי‬ ‫שכנים‬‫חייה‬ •‫של‬ ‫המצב‬ ‫המקרים‬ ‫בשאר‬‫המשבצת‬‫משתנה‬ ‫לא‬
  • 77. ‫בגודל‬ ‫סופי‬ ‫לוח‬ ‫על‬ ‫חיים‬ ‫משחק‬n*n •‫מטרה‬‫סופי‬ ‫לוח‬ ‫על‬ ‫חיים‬ ‫משחק‬ ‫לממש‬ ‫היא‬ ‫שלנו‬ •‫אותו‬ ‫נעדן‬ ‫ואז‬ ‫אלגוריתם‬ ‫של‬ ‫כללי‬ ‫מתיור‬ ‫נתחיל‬
  • 78. ‫בגודל‬ ‫סופי‬ ‫לוח‬ ‫על‬ ‫חיים‬ ‫משחק‬n*n •‫מטרה‬‫סופי‬ ‫לוח‬ ‫על‬ ‫חיים‬ ‫משחק‬ ‫לממש‬ ‫היא‬ ‫שלנו‬ •‫אותו‬ ‫נעדן‬ ‫ואז‬ ‫אלגוריתם‬ ‫של‬ ‫כללי‬ ‫מתיור‬ ‫נתחיל‬ •‫חדש‬ ‫אקראי‬ ‫לוח‬ ‫נכין‬–‫דור‬0‫אותו‬ ‫ונצייר‬
  • 79. ‫בגודל‬ ‫סופי‬ ‫לוח‬ ‫על‬ ‫חיים‬ ‫משחק‬n*n •‫מטרה‬‫סופי‬ ‫לוח‬ ‫על‬ ‫חיים‬ ‫משחק‬ ‫לממש‬ ‫היא‬ ‫שלנו‬ •‫אותו‬ ‫נעדן‬ ‫ואז‬ ‫אלגוריתם‬ ‫של‬ ‫כללי‬ ‫מתיור‬ ‫נתחיל‬ •‫חדש‬ ‫אקראי‬ ‫לוח‬ ‫נכין‬–‫דור‬0‫ונצייר‬‫הלוח‬ ‫את‬ •‫נגמר‬ ‫לא‬ ‫שהמשחק‬ ‫עד‬,‫הבא‬ ‫לוח‬ ‫נחשב‬(‫הבא‬ ‫דור‬)‫אותו‬ ‫ונצייר‬
  • 80. ‫בגודל‬ ‫סופי‬ ‫לוח‬ ‫על‬ ‫חיים‬ ‫משחק‬n*n •‫מטרה‬‫סופי‬ ‫לוח‬ ‫על‬ ‫חיים‬ ‫משחק‬ ‫לממש‬ ‫היא‬ ‫שלנו‬ •‫אותו‬ ‫נעדן‬ ‫ואז‬ ‫אלגוריתם‬ ‫של‬ ‫כללי‬ ‫מתיור‬ ‫נתחיל‬ •‫חדש‬ ‫אקראי‬ ‫לוח‬ ‫נכין‬–‫דור‬0,‫הלוח‬ ‫את‬ ‫נצייר‬ •‫נגמר‬ ‫לא‬ ‫שהמשחק‬ ‫עד‬,‫הבא‬ ‫לוח‬ ‫נחשב‬(‫הבא‬ ‫דור‬)‫אותו‬ ‫ונצייר‬
  • 81. ‫בגודל‬ ‫סופי‬ ‫לוח‬ ‫על‬ ‫חיים‬ ‫משחק‬n*n •‫מטרה‬‫סופי‬ ‫לוח‬ ‫על‬ ‫חיים‬ ‫משחק‬ ‫לממש‬ ‫היא‬ ‫שלנו‬ •‫אותו‬ ‫נעדן‬ ‫ואז‬ ‫אלגוריתם‬ ‫של‬ ‫כללי‬ ‫מתיור‬ ‫נתחיל‬ •‫חדש‬ ‫אקראי‬ ‫לוח‬ ‫נכין‬–‫דור‬0,‫הלוח‬ ‫את‬ ‫נצייר‬ •‫נגמר‬ ‫לא‬ ‫שהמשחק‬ ‫עד‬,‫הבא‬ ‫לוח‬ ‫נחשב‬(‫הבא‬ ‫דור‬)‫אותו‬ ‫ונצייר‬
  • 82. ‫בגודל‬ ‫סופי‬ ‫לוח‬ ‫על‬ ‫חיים‬ ‫משחק‬n*n •‫מטרה‬‫סופי‬ ‫לוח‬ ‫על‬ ‫חיים‬ ‫משחק‬ ‫לממש‬ ‫היא‬ ‫שלנו‬ •‫אותו‬ ‫נעדן‬ ‫ואז‬ ‫אלגוריתם‬ ‫של‬ ‫כללי‬ ‫מתיור‬ ‫נתחיל‬ •‫חדש‬ ‫אקראי‬ ‫לוח‬ ‫נכין‬–‫דור‬0,‫הלוח‬ ‫את‬ ‫נצייר‬ •‫נגמר‬ ‫לא‬ ‫שהמשחק‬ ‫עד‬,‫הבא‬ ‫לוח‬ ‫נחשב‬(‫הבא‬ ‫דור‬)‫אותו‬ ‫ונצייר‬ ‫שתי‬ ‫לפחות‬ ‫לממש‬ ‫שנצטרך‬ ‫רואים‬ ‫אנו‬ ‫מכאן‬ ‫פונקציות‬
  • 83. ‫משחק‬ ‫לוח‬ ‫לייצוג‬ ‫נתונים‬ ‫מבנה‬ ‫בחירת‬ •‫המשחק‬ ‫של‬ ‫הלוח‬ ‫את‬ ‫נציג‬ ‫שבעזרתו‬ ‫נתונים‬ ‫מבנה‬ ‫ולבחור‬ ‫לחשוב‬ ‫צריכים‬ ‫אנו‬: •‫רשימה‬ •‫דו‬ ‫רשימה‬‫מימדית‬ •tuple •‫מחרוזת‬ •‫מילון‬ •set
  • 84. ‫משחק‬ ‫לוח‬ ‫לייצוג‬ ‫נתונים‬ ‫מבנה‬ ‫בחירת‬ •‫המשחק‬ ‫של‬ ‫הלוח‬ ‫את‬ ‫נציג‬ ‫שבעזרתו‬ ‫נתונים‬ ‫מבנה‬ ‫ולבחור‬ ‫לחשוב‬ ‫צריכים‬ ‫אנו‬: •‫רשימה‬ •‫דו‬ ‫רשימה‬‫מימדית‬ •tuple •‫מחרוזת‬ •‫מילון‬ •set •‫בעזרת‬ ‫הלוח‬ ‫את‬ ‫נציג‬‫מימדית‬ ‫דו‬ ‫רשימה‬,‫מספר‬ ‫פנימית‬ ‫רשימה‬ ‫כאשר‬i‫תציג‬ ‫לוח‬ ‫של‬ ‫שורה‬‫מספר‬i
  • 85. ‫משחק‬ ‫לוח‬ ‫לייצוג‬ ‫נתונים‬ ‫מבנה‬ ‫בחירת‬ •‫המשחק‬ ‫של‬ ‫הלוח‬ ‫את‬ ‫נציג‬ ‫שבעזרתו‬ ‫נתונים‬ ‫מבנה‬ ‫ולבחור‬ ‫לחשוב‬ ‫צריכים‬ ‫אנו‬: •‫רשימה‬ •‫דו‬ ‫רשימה‬‫מימדית‬ •tuple •‫מחרוזת‬ •‫מילון‬ •set •‫בעזרת‬ ‫הלוח‬ ‫את‬ ‫נציג‬‫מימדית‬ ‫דו‬ ‫רשימה‬,‫מספר‬ ‫פנימית‬ ‫רשימה‬ ‫כאשר‬i‫תציג‬ ‫לוח‬ ‫של‬ ‫שורה‬‫מספר‬i ‫עם‬ ‫מימדית‬ ‫דו‬ ‫רשימה‬ ‫הגדרת‬ FALSE‫משבצת‬ ‫בכל‬
  • 86. ‫משחק‬ ‫לוח‬ ‫לייצוג‬ ‫נתונים‬ ‫מבנה‬ ‫בחירת‬‫טריק‬ •‫הבא‬ ‫דור‬ ‫של‬ ‫לוח‬ ‫נבנה‬ ‫אנו‬ ‫כאשר‬,‫לבחון‬ ‫נצטרך‬ ‫משבצת‬ ‫כל‬ ‫עבור‬?‫שכנים‬ ‫שלה‬
  • 87. ‫משחק‬ ‫לוח‬ ‫לייצוג‬ ‫נתונים‬ ‫מבנה‬ ‫בחירת‬‫טריק‬ •‫הבא‬ ‫דור‬ ‫של‬ ‫לוח‬ ‫נבנה‬ ‫אנו‬ ‫כאשר‬,‫לבחון‬ ‫נצטרך‬ ‫משבצת‬ ‫כל‬ ‫עבור‬8‫שכנים‬ ‫שלה‬
  • 88. ‫משחק‬ ‫לוח‬ ‫לייצוג‬ ‫נתונים‬ ‫מבנה‬ ‫בחירת‬‫טריק‬ •‫הבא‬ ‫דור‬ ‫של‬ ‫לוח‬ ‫נבנה‬ ‫אנו‬ ‫כאשר‬,‫לבחון‬ ‫נצטרך‬ ‫משבצת‬ ‫כל‬ ‫עבור‬8‫שכנים‬ ‫שלה‬ •‫בעיה‬ ‫יש‬ ‫אבל‬:
  • 89. ‫משחק‬ ‫לוח‬ ‫לייצוג‬ ‫נתונים‬ ‫מבנה‬ ‫בחירת‬‫טריק‬ •‫הבא‬ ‫דור‬ ‫של‬ ‫לוח‬ ‫נבנה‬ ‫אנו‬ ‫כאשר‬,‫לבחון‬ ‫נצטרך‬ ‫משבצת‬ ‫כל‬ ‫עבור‬8‫שכנים‬ ‫שלה‬ •‫בעיה‬ ‫יש‬ ‫אבל‬:‫יש‬ ‫משבצת‬ ‫לכל‬ ‫לא‬8‫שכנים‬
  • 90. ‫משחק‬ ‫לוח‬ ‫לייצוג‬ ‫נתונים‬ ‫מבנה‬ ‫בחירת‬‫טריק‬ •‫הבא‬ ‫דור‬ ‫של‬ ‫לוח‬ ‫נבנה‬ ‫אנו‬ ‫כאשר‬,‫לבחון‬ ‫נצטרך‬ ‫משבצת‬ ‫כל‬ ‫עבור‬8‫שכנים‬ ‫שלה‬ •‫בעיה‬ ‫יש‬ ‫אבל‬:‫יש‬ ‫משבצת‬ ‫לכל‬ ‫לא‬8‫שכנים‬ 8 5 3
  • 91. ‫משחק‬ ‫לוח‬ ‫לייצוג‬ ‫נתונים‬ ‫מבנה‬ ‫בחירת‬‫טריק‬ •‫הבא‬ ‫דור‬ ‫של‬ ‫לוח‬ ‫נבנה‬ ‫אנו‬ ‫כאשר‬,‫לבחון‬ ‫נצטרך‬ ‫משבצת‬ ‫כל‬ ‫עבור‬8‫שכנים‬ ‫שלה‬ •‫בעיה‬ ‫יש‬ ‫אבל‬:‫יש‬ ‫משבצת‬ ‫לכל‬ ‫לא‬8‫שכנים‬ •‫על‬‫בטריק‬ ‫נעזר‬ ‫בפתרון‬ ‫הכלליות‬ ‫את‬ ‫לשבור‬ ‫לא‬ ‫מנת‬‫הבא‬:‫לוח‬ ‫לייצר‬ ‫במקום‬ ‫בגודל‬n*n‫בגודל‬ ‫לוח‬ ‫נייצר‬n+2‫על‬n+2‫כולה‬ ‫תהי‬ ‫החיצונית‬ ‫המעטפת‬ ‫כאשר‬ False 8 8 8
  • 92. ‫בגודל‬ ‫סופי‬ ‫לוח‬ ‫על‬ ‫חיים‬ ‫משחק‬n*n •‫מטרה‬‫סופי‬ ‫לוח‬ ‫על‬ ‫חיים‬ ‫משחק‬ ‫לממש‬ ‫היא‬ ‫שלנו‬ •‫אותו‬ ‫נעדן‬ ‫ואז‬ ‫אלגוריתם‬ ‫של‬ ‫כללי‬ ‫מתיור‬ ‫נתחיל‬ •‫חדש‬ ‫אקראי‬ ‫לוח‬ ‫נכין‬–‫דור‬0,‫הלוח‬ ‫את‬ ‫נצייר‬ •‫נגמר‬ ‫לא‬ ‫שהמשחק‬ ‫עד‬,‫הבא‬ ‫לוח‬ ‫נחשב‬(‫הבא‬ ‫דור‬)‫אותו‬ ‫ונצייר‬
  • 93. GenerateNewBoard(n,p) •‫מקבלת‬ ‫הפונקציה‬‫לוח‬ ‫של‬ ‫גודל‬–n‫מסוימת‬ ‫שמשבצת‬ ‫והסתברות‬‫חיה‬p •‫מחזירה‬ ‫הפונקציה‬‫דו‬ ‫רשימה‬-‫בגודל‬ ‫ממידית‬(n+2)*(n+2) •‫ערך‬ ‫בעלות‬ ‫הן‬ ‫חיצונית‬ ‫מעטפת‬ ‫של‬ ‫משבצות‬ ‫כל‬ ‫זו‬ ‫ברשימה‬ ‫כאשר‬False •‫היא‬ ‫המשבצות‬ ‫משאר‬ ‫אחת‬ ‫וכל‬True‫בהסתברות‬p‫ו‬-False‫בהסתברות‬1-p
  • 94. GenerateNewBoard(n,p) •‫מקבלת‬ ‫הפונקציה‬‫לוח‬ ‫של‬ ‫גודל‬–n‫חיה‬ ‫מסוימת‬ ‫שמשבצת‬ ‫והסתברות‬p •‫מחזירה‬ ‫הפונקציה‬‫דו‬ ‫רשימה‬-‫בגודל‬ ‫ממידית‬(n+2)*(n+2) •‫ערך‬ ‫בעלות‬ ‫הן‬ ‫חיצונית‬ ‫מעטפת‬ ‫של‬ ‫משבצות‬ ‫כל‬ ‫זו‬ ‫ברשימה‬ ‫כאשר‬False •‫היא‬ ‫המשבצות‬ ‫משאר‬ ‫אחת‬ ‫וכל‬True‫בהסתברות‬p‫ו‬-False‫בהסתברות‬1-p
  • 95. GenerateNewBoard(n,p) •‫מקבלת‬ ‫הפונקציה‬‫לוח‬ ‫של‬ ‫גודל‬–n‫חיה‬ ‫מסוימת‬ ‫שמשבצת‬ ‫והסתברות‬p •‫מחזירה‬ ‫הפונקציה‬‫דו‬ ‫רשימה‬-‫בגודל‬ ‫ממידית‬(n+2)*(n+2) •‫ערך‬ ‫בעלות‬ ‫הן‬ ‫חיצונית‬ ‫מעטפת‬ ‫של‬ ‫משבצות‬ ‫כל‬ ‫זו‬ ‫ברשימה‬ ‫כאשר‬False •‫היא‬ ‫המשבצות‬ ‫משאר‬ ‫אחת‬ ‫וכל‬True‫בהסתברות‬p‫ו‬-False‫בהסתברות‬1-p
  • 96. GenerateNewBoard(n,p) •‫מקבלת‬ ‫הפונקציה‬‫לוח‬ ‫של‬ ‫גודל‬–n‫חיה‬ ‫מסוימת‬ ‫שמשבצת‬ ‫והסתברות‬p •‫מחזירה‬ ‫הפונקציה‬‫דו‬ ‫רשימה‬-‫בגודל‬ ‫ממידית‬(n+2)*(n+2) •‫ערך‬ ‫בעלות‬ ‫הן‬ ‫חיצונית‬ ‫מעטפת‬ ‫של‬ ‫משבצות‬ ‫כל‬ ‫זו‬ ‫ברשימה‬ ‫כאשר‬False •‫היא‬ ‫המשבצות‬ ‫משאר‬ ‫אחת‬ ‫וכל‬True‫בהסתברות‬p‫ו‬-False‫בהסתברות‬1-p
  • 100. ‫בגודל‬ ‫סופי‬ ‫לוח‬ ‫על‬ ‫חיים‬ ‫משחק‬n*n •‫מטרה‬‫סופי‬ ‫לוח‬ ‫על‬ ‫חיים‬ ‫משחק‬ ‫לממש‬ ‫היא‬ ‫שלנו‬ •‫אותו‬ ‫נעדן‬ ‫ואז‬ ‫אלגוריתם‬ ‫של‬ ‫כללי‬ ‫מתיור‬ ‫נתחיל‬ •‫חדש‬ ‫אקראי‬ ‫לוח‬ ‫נכין‬–‫דור‬0,‫הלוח‬ ‫את‬ ‫נצייר‬ •‫נגמר‬ ‫לא‬ ‫שהמשחק‬ ‫עד‬,‫הבא‬ ‫לוח‬ ‫נחשב‬(‫הבא‬ ‫דור‬)‫אותו‬ ‫ונצייר‬ ‫סיימנו‬
  • 101. GenerateNextBoard(Board) •‫מקבלת‬ ‫הפונקציה‬‫מימדית‬ ‫דו‬ ‫רשימה‬:‫נוכחי‬ ‫דור‬ ‫שמייצג‬ ‫לוח‬‫ומחזירה‬ ‫מימדית‬ ‫דו‬ ‫רשימה‬:‫הבא‬ ‫דור‬ ‫שמייצג‬ ‫לוח‬
  • 102. GenerateNextBoard(Board) •‫מקבלת‬ ‫הפונקציה‬‫מימדית‬ ‫דו‬ ‫רשימה‬:‫נוכחי‬ ‫דור‬ ‫שמייצג‬ ‫לוח‬‫ומחזירה‬ ‫מימדית‬ ‫דו‬ ‫רשימה‬:‫הבא‬ ‫דור‬ ‫שמייצג‬ ‫לוח‬ •‫אלגוריתם‬: •‫עם‬ ‫חדשה‬ ‫מימדית‬ ‫דו‬ ‫רשימה‬ ‫נכין‬False‫מקום‬ ‫בכל‬–‫הבא‬ ‫דור‬ ‫של‬ ‫לוח‬ ‫נשמור‬ ‫כאן‬
  • 103. GenerateNextBoard(Board) •‫מקבלת‬ ‫הפונקציה‬‫מימדית‬ ‫דו‬ ‫רשימה‬:‫נוכחי‬ ‫דור‬ ‫שמייצג‬ ‫לוח‬‫ומחזירה‬ ‫מימדית‬ ‫דו‬ ‫רשימה‬:‫הבא‬ ‫דור‬ ‫שמייצג‬ ‫לוח‬ •‫אלגוריתם‬: •‫עם‬ ‫חדשה‬ ‫מימדית‬ ‫דו‬ ‫רשימה‬ ‫נכין‬False‫מקום‬ ‫בכל‬–‫הבא‬ ‫דור‬ ‫של‬ ‫לוח‬ ‫נשמור‬ ‫כאן‬ •‫ישן‬ ‫בלוח‬ ‫פנימית‬ ‫משבצת‬ ‫כל‬ ‫על‬ ‫נעבור‬,‫נשמור‬ ‫ואז‬ ‫למשבצת‬ ‫יש‬ ‫שכנים‬ ‫כמה‬ ‫נספור‬ ‫של‬ ‫ערך‬ ‫מתאים‬ ‫במקום‬ ‫חדש‬ ‫בלוח‬‫המשבצת‬:‫משחק‬ ‫כללי‬ ‫לפי‬ ‫מתה‬ ‫או‬ ‫חיה‬ ‫שהגדרנו‬
  • 104. GenerateNextBoard(Board) •‫מקבלת‬ ‫הפונקציה‬‫מימדית‬ ‫דו‬ ‫רשימה‬:‫נוכחי‬ ‫דור‬ ‫שמייצג‬ ‫לוח‬‫ומחזירה‬ ‫מימדית‬ ‫דו‬ ‫רשימה‬:‫הבא‬ ‫דור‬ ‫שמייצג‬ ‫לוח‬ •‫אלגוריתם‬: •‫עם‬ ‫חדשה‬ ‫מימדית‬ ‫דו‬ ‫רשימה‬ ‫נכין‬False‫מקום‬ ‫בכל‬–‫הבא‬ ‫דור‬ ‫של‬ ‫לוח‬ ‫נשמור‬ ‫כאן‬ •‫ישן‬ ‫בלוח‬ ‫פנימית‬ ‫משבצת‬ ‫כל‬ ‫על‬ ‫נעבור‬,‫נשמור‬ ‫ואז‬ ‫למשבצת‬ ‫יש‬ ‫שכנים‬ ‫כמה‬ ‫נספור‬ ‫של‬ ‫ערך‬ ‫מתאים‬ ‫במקום‬ ‫חדש‬ ‫בלוח‬‫המשבצת‬:‫משחק‬ ‫כללי‬ ‫לפי‬ ‫מתה‬ ‫או‬ ‫חיה‬ ‫שהגדרנו‬
  • 105. GenerateNextBoard(Board) •‫מקבלת‬ ‫הפונקציה‬‫מימדית‬ ‫דו‬ ‫רשימה‬:‫נוכחי‬ ‫דור‬ ‫שמייצג‬ ‫לוח‬‫ומחזירה‬ ‫מימדית‬ ‫דו‬ ‫רשימה‬:‫הבא‬ ‫דור‬ ‫שמייצג‬ ‫לוח‬ •‫אלגוריתם‬: •‫עם‬ ‫חדשה‬ ‫מימדית‬ ‫דו‬ ‫רשימה‬ ‫נכין‬False‫מקום‬ ‫בכל‬–‫הבא‬ ‫דור‬ ‫של‬ ‫לוח‬ ‫נשמור‬ ‫כאן‬ •‫ישן‬ ‫בלוח‬ ‫פנימית‬ ‫משבצת‬ ‫כל‬ ‫על‬ ‫נעבור‬,‫נשמור‬ ‫ואז‬ ‫למשבצת‬ ‫יש‬ ‫שכנים‬ ‫כמה‬ ‫נספור‬ ‫של‬ ‫ערך‬ ‫מתאים‬ ‫במקום‬ ‫חדש‬ ‫בלוח‬‫המשבצת‬:‫משחק‬ ‫כללי‬ ‫לפי‬ ‫מתה‬ ‫או‬ ‫חיה‬ ‫שהגדרנו‬
  • 106. GenerateNextBoard(Board) •‫מקבלת‬ ‫הפונקציה‬‫מימדית‬ ‫דו‬ ‫רשימה‬:‫נוכחי‬ ‫דור‬ ‫שמייצג‬ ‫לוח‬‫ומחזירה‬ ‫מימדית‬ ‫דו‬ ‫רשימה‬:‫הבא‬ ‫דור‬ ‫שמייצג‬ ‫לוח‬ •‫לסיכום‬:
  • 107. GenerateNextBoard(Board) •‫מקבלת‬ ‫הפונקציה‬‫מימדית‬ ‫דו‬ ‫רשימה‬:‫נוכחי‬ ‫דור‬ ‫שמייצג‬ ‫לוח‬‫ומחזירה‬ ‫מימדית‬ ‫דו‬ ‫רשימה‬:‫הבא‬ ‫דור‬ ‫שמייצג‬ ‫לוח‬ •‫לסיכום‬:
  • 108. CalcLiveNeigbours(Board,I,j) •‫מקבלת‬ ‫הפונקציה‬‫של‬ ‫וקואורדינטות‬ ‫המשחק‬ ‫של‬ ‫לוח‬‫מסוימת‬ ‫משבצת‬, ‫הפונקציה‬‫מחזירה‬‫המשבצת‬ ‫של‬ ‫חיים‬ ‫שכנים‬ ‫כמות‬
  • 109. CalcLiveNeigbours(Board,I,j) •‫מקבלת‬ ‫הפונקציה‬‫של‬ ‫וקואורדינטות‬ ‫המשחק‬ ‫של‬ ‫לוח‬‫משבצת‬,‫הפונקציה‬ ‫מחזירה‬‫המשבצת‬ ‫של‬ ‫חיים‬ ‫שכנים‬ ‫כמות‬ •‫אלגוריתם‬:
  • 110. CalcLiveNeigbours(Board,I,j) •‫מקבלת‬ ‫הפונקציה‬‫של‬ ‫וקואורדינטות‬ ‫המשחק‬ ‫של‬ ‫לוח‬‫משבצת‬,‫הפונקציה‬ ‫מחזירה‬‫המשבצת‬ ‫של‬ ‫חיים‬ ‫שכנים‬ ‫כמות‬ •‫אלגוריתם‬: •‫מ‬ ‫אחד‬ ‫כל‬ ‫על‬ ‫נעבור‬-8‫חיים‬ ‫מהם‬ ‫כמה‬ ‫ונספור‬ ‫המשבצת‬ ‫של‬ ‫שכנים‬
  • 111. CalcLiveNeigbours(Board,I,j) •‫מקבלת‬ ‫הפונקציה‬‫הפונקציה‬ ‫משבצת‬ ‫של‬ ‫וקואורדינטות‬ ‫המשחק‬ ‫של‬ ‫לוח‬ ‫מחזירה‬‫המשבצת‬ ‫של‬ ‫חיים‬ ‫שכנים‬ ‫כמות‬ •‫אלגוריתם‬: •‫מ‬ ‫אחד‬ ‫כל‬ ‫על‬ ‫נעבור‬-8‫חיים‬ ‫מהם‬ ‫כמה‬ ‫ונספור‬ ‫המשבצת‬ ‫של‬ ‫שכנים‬