‫מדעי‬ ‫לתכנות‬ ‫מבוא‬
‫הרצאה‬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

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

  • 1.
  • 2.
  • 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”
  • 10.
    ‫קריאה‬ ‫בעת‬ ‫מיוצר‬‫לוקאלי‬ ‫השמות‬ ‫מרחב‬ ‫לפונקציה‬f ‫גלובאלי‬ ‫השמות‬ ‫מרחב‬
  • 11.
    ‫חזרה‬ ‫לאחר‬ ‫ימחק‬‫לוקאלי‬ ‫שמות‬ ‫מרחב‬ ‫מפונקציה‬
  • 12.
    ‫השמות‬ ‫מרחב‬ ‫מהו‬ •‫בפייתון‬‫השמות‬‫מרחב‬‫לאובייקטים‬ ‫משתנים‬ ‫שמות‬ ‫בין‬ ‫מיפוי‬ ‫טבלת‬ ‫הוא‬ •‫מודול‬ ‫לכל‬ ‫בפייתון‬,‫פונקציה‬ ‫לכל‬,‫מחלקה‬ ‫ולכל‬(‫למדנו‬ ‫לא‬)‫משלו‬ ‫השמות‬ ‫מרחב‬ ‫יש‬ •‫נקרא‬ ‫הזה‬ ‫השמות‬ ‫מרחב‬‫לוקאלי‬‫מסוים‬ ‫לאובייקט‬ ‫משויך‬ ‫הוא‬ ‫כי‬:‫פונקציה‬,‫וכו‬ ‫מודול‬' •‫הסתיים‬ ‫הפונקציה‬ ‫של‬ ‫ביצוע‬ ‫וכאשר‬ ‫עבורה‬ ‫מיוצר‬ ‫השמות‬ ‫המרחב‬ ‫לפונקציה‬ ‫קוראים‬ ‫אנו‬ ‫כאשר‬ ‫נמחק‬ ‫המרחב‬ •‫גלובאלי‬ ‫שמות‬ ‫למרחב‬ ‫ושייכים‬ ‫גלובאליים‬ ‫נקראים‬ ‫תוכנה‬ ‫של‬ ‫ראשי‬ ‫בגוף‬ ‫שמוגדרים‬ ‫משתנים‬ •‫שונים‬ ‫שמות‬ ‫במרחבי‬ ‫למשתנים‬ ‫שם‬ ‫אותו‬ ‫לתת‬ ‫אפשר‬ Namespace x 12 z 22 y “Hello”
  • 14.
  • 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
  • 29.
  • 30.
  • 31.
  • 32.
    ‫ב‬ ‫שימוש‬-global •‫של‬ ‫במנגנון‬‫להשתמש‬ ‫ממליצים‬ ‫לא‬ ‫כלל‬ ‫בדרך‬global‫התוכנה‬ ‫את‬ ‫הופך‬ ‫וזה‬ ‫היות‬ ‫לתחזוקה‬ ‫קשה‬ ‫ויותר‬ ‫קריאה‬ ‫לפחות‬
  • 33.
    ‫סיכום‬ ‫הפונקציה‬ ‫של‬ ‫גוף‬‫הוא‬ ‫הפונקציה‬ ‫בתוך‬ ‫המוגדרים‬ ‫ומשתנים‬ ‫פונקציה‬ ‫של‬ ‫פרמטרים‬ ‫של‬ ‫ההכרה‬ ‫תחום‬ ‫פונקציות‬ ‫של‬ ‫ופרמטרים‬ ‫למשתנים‬ ‫לגשת‬ ‫ניתן‬ ‫לא‬ ‫גלובאלי‬ ‫מקוד‬ ‫למעט‬ ‫אחרת‬ ‫בפונקציה‬ ‫המוגדרים‬ ‫משתנים‬ ‫או‬ ‫לפרמטרים‬ ‫לגשת‬ ‫ניתן‬ ‫לא‬ ‫אחד‬ ‫פונקציה‬ ‫מתוך‬‫מקרים‬ ‫פונקציה‬ ‫כאשר‬‫שניה‬ ‫פונקציה‬ ‫בתוך‬ ‫מוגדרת‬ ‫אחד‬
  • 35.
  • 36.
  • 37.
    ‫מטרה‬ ‫לפונקציה‬ ‫פרמטרים‬ ‫העברת‬‫מנגנון‬ ‫להבין‬ ‫לשינוי‬ ‫שניתנים‬ ‫פונקציה‬ ‫של‬ ‫פרמטרים‬ ‫בין‬ ‫הבדל‬ ‫להבין‬ (mutable)‫לשינוי‬ ‫ניתנים‬ ‫שלא‬ ‫לפרמטרים‬(immutable)
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
    Mutable Immutabletypes Int, float, bool immutable str immutable tuple immutable List mutable dictionary mutable
  • 44.
    Example: immutability ofintegers Int, float, bool immutable str immutable tuple immutable List mutable dictionary mutable 10i
  • 45.
    Example: immutability ofintegers Int, float, bool immutable str immutable tuple immutable List mutable dictionary mutable 10i 20
  • 46.
    Example: immutability ofintegers Int, float, bool immutable str immutable tuple immutable List mutable dictionary mutable 10i
  • 47.
    Example: immutability ofintegers Int, float, bool immutable str immutable tuple immutable List mutable dictionary mutable 10i j
  • 48.
    Example: immutability ofintegers 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?
  • 52.
  • 53.
    Aliasing ‫תופעת‬ ‫לפעמים‬Aliasing‫ליווי‬ ‫לתופעות‬‫וגורמת‬ ‫הקוד‬ ‫הבנת‬ ‫את‬ ‫מסבכת‬ ‫צורך‬ ‫ללא‬ ‫אותה‬ ‫לייצר‬ ‫כדאי‬ ‫לא‬ ‫לכן‬
  • 54.
    Immutable objects asfunction arguments •‫להבין‬ ‫חשוב‬‫של‬ ‫פרמטר‬ ‫וגם‬ ‫הארגומנט‬ ‫גם‬ ‫אזי‬ ‫ארגומנט‬ ‫לפונקציה‬ ‫מעבירים‬ ‫שכאשר‬ ‫הפונקציה‬‫מצביעים‬‫ערך‬ ‫אותו‬ ‫על‬(aliasing)
  • 55.
    Immutable objects asfunction arguments •‫להבין‬ ‫חשוב‬‫של‬ ‫פרמטר‬ ‫וגם‬ ‫הארגומנט‬ ‫גם‬ ‫אזי‬ ‫ארגומנט‬ ‫לפונקציה‬ ‫מעבירים‬ ‫שכאשר‬ ‫הפונקציה‬‫מצביעים‬‫ערך‬ ‫אותו‬ ‫על‬(aliasing) 1j
  • 56.
    Immutable objects asfunction arguments •‫להבין‬ ‫חשוב‬‫של‬ ‫פרמטר‬ ‫וגם‬ ‫הארגומנט‬ ‫גם‬ ‫אזי‬ ‫ארגומנט‬ ‫לפונקציה‬ ‫מעבירים‬ ‫שכאשר‬ ‫הפונקציה‬‫מצביעים‬‫ערך‬ ‫אותו‬ ‫על‬(aliasing) 1j i
  • 57.
    Immutable objects asfunction arguments •‫להבין‬ ‫חשוב‬‫של‬ ‫פרמטר‬ ‫וגם‬ ‫הארגומנט‬ ‫גם‬ ‫אזי‬ ‫ארגומנט‬ ‫לפונקציה‬ ‫מעבירים‬ ‫שכאשר‬ ‫הפונקציה‬‫מצביעים‬‫ערך‬ ‫אותו‬ ‫על‬(aliasing) 1j i 2
  • 58.
    Immutable objects asfunction arguments •‫להבין‬ ‫חשוב‬‫של‬ ‫פרמטר‬ ‫וגם‬ ‫הארגומנט‬ ‫גם‬ ‫אזי‬ ‫ארגומנט‬ ‫לפונקציה‬ ‫מעבירים‬ ‫שכאשר‬ ‫הפונקציה‬‫מצביעים‬‫ערך‬ ‫אותו‬ ‫על‬(aliasing) 1j
  • 59.
    Immutable objects asfunction arguments •‫להבין‬ ‫חשוב‬‫של‬ ‫פרמטר‬ ‫וגם‬ ‫הארגומנט‬ ‫גם‬ ‫אזי‬ ‫ארגומנט‬ ‫לפונקציה‬ ‫מעבירים‬ ‫שכאשר‬ ‫הפונקציה‬‫מצביעים‬‫ערך‬ ‫אותו‬ ‫על‬(aliasing) •‫מסקנה‬:‫כאשר‬ ‫קיבלה‬ ‫שהיא‬ ‫ארגומנט‬ ‫של‬ ‫הערך‬ ‫את‬ ‫לשנות‬ ‫יכולה‬ ‫לא‬ ‫פונקציה‬ ‫הוא‬ ‫הארגומנט‬immutable
  • 60.
    Immutable objects asfunction arguments •‫להבין‬ ‫חשוב‬‫של‬ ‫פרמטר‬ ‫וגם‬ ‫הארגומנט‬ ‫גם‬ ‫אזי‬ ‫ארגומנט‬ ‫לפונקציה‬ ‫מעבירים‬ ‫שכאשר‬ ‫הפונקציה‬‫מצביעים‬‫ערך‬ ‫אותו‬ ‫על‬(aliasing) •‫מסקנה‬:‫כאשר‬ ‫קיבלה‬ ‫שהיא‬ ‫ארגומנט‬ ‫של‬ ‫הערך‬ ‫את‬ ‫לשנות‬ ‫יכולה‬ ‫לא‬ ‫פונקציה‬ ‫הוא‬ ‫הארגומנט‬immutable •‫פונקציה‬ ‫לעשות‬ ‫רוצים‬ ‫אנו‬ ‫זאת‬ ‫בכל‬ ‫אם‬inc‫ב‬ ‫פרמטר‬ ‫של‬ ‫הערך‬ ‫את‬ ‫שמגדילה‬-1‫אזי‬ ‫הבא‬ ‫בקוד‬ ‫להשתמש‬ ‫אפשר‬: 1
  • 61.
    Mutable objects asfunction arguments •‫להבין‬ ‫חשוב‬‫של‬ ‫פרמטר‬ ‫וגם‬ ‫הארגומנט‬ ‫גם‬ ‫אזי‬ ‫ארגומנט‬ ‫לפונקציה‬ ‫מעבירים‬ ‫שכאשר‬ ‫הפונקציה‬‫מצביעים‬‫ערך‬ ‫אותו‬ ‫על‬(aliasing) [1]l
  • 62.
    mutable objects asfunction arguments •‫להבין‬ ‫חשוב‬‫של‬ ‫פרמטר‬ ‫וגם‬ ‫הארגומנט‬ ‫גם‬ ‫אזי‬ ‫ארגומנט‬ ‫לפונקציה‬ ‫מעבירים‬ ‫שכאשר‬ ‫הפונקציה‬‫מצביעים‬‫ערך‬ ‫אותו‬ ‫על‬(aliasing) [1]l m
  • 63.
    mutable objects asfunction arguments •‫להבין‬ ‫חשוב‬‫של‬ ‫פרמטר‬ ‫וגם‬ ‫הארגומנט‬ ‫גם‬ ‫אזי‬ ‫ארגומנט‬ ‫לפונקציה‬ ‫מעבירים‬ ‫שכאשר‬ ‫הפונקציה‬‫מצביעים‬‫ערך‬ ‫אותו‬ ‫על‬(aliasing) [2]l m
  • 64.
    mutable objects asfunction arguments •‫להבין‬ ‫חשוב‬‫של‬ ‫פרמטר‬ ‫וגם‬ ‫הארגומנט‬ ‫גם‬ ‫אזי‬ ‫ארגומנט‬ ‫לפונקציה‬ ‫מעבירים‬ ‫שכאשר‬ ‫הפונקציה‬‫מצביעים‬‫ערך‬ ‫אותו‬ ‫על‬(aliasing) [2]l
  • 65.
    mutable objects asfunction arguments •‫להבין‬ ‫חשוב‬‫של‬ ‫פרמטר‬ ‫וגם‬ ‫הארגומנט‬ ‫גם‬ ‫אזי‬ ‫ארגומנט‬ ‫לפונקציה‬ ‫מעבירים‬ ‫שכאשר‬ ‫הפונקציה‬‫מצביעים‬‫ערך‬ ‫אותו‬ ‫על‬(aliasing) •‫חשובה‬ ‫מסקנה‬:‫הוא‬ ‫כאשר‬ ‫שלה‬ ‫הארגומנט‬ ‫את‬ ‫לשנות‬ ‫יכולה‬ ‫פונקציה‬mutable
  • 66.
    mutable objects asfunction arguments •‫להבין‬ ‫חשוב‬‫של‬ ‫פרמטר‬ ‫וגם‬ ‫הארגומנט‬ ‫גם‬ ‫אזי‬ ‫ארגומנט‬ ‫לפונקציה‬ ‫מעבירים‬ ‫שכאשר‬ ‫הפונקציה‬‫מצביעים‬‫ערך‬ ‫אותו‬ ‫על‬(aliasing) •‫חשובה‬ ‫מסקנה‬:‫הוא‬ ‫כאשר‬ ‫שלה‬ ‫הארגומנט‬ ‫את‬ ‫לשנות‬ ‫יכולה‬ ‫פונקציה‬mutable •‫דוגמא‬:
  • 67.
    mutable objects asfunction arguments •‫להבין‬ ‫חשוב‬‫של‬ ‫פרמטר‬ ‫וגם‬ ‫הארגומנט‬ ‫גם‬ ‫אזי‬ ‫ארגומנט‬ ‫לפונקציה‬ ‫מעבירים‬ ‫שכאשר‬ ‫הפונקציה‬‫מצביעים‬‫ערך‬ ‫אותו‬ ‫על‬(aliasing) •‫חשובה‬ ‫מסקנה‬:‫הוא‬ ‫כאשר‬ ‫שלה‬ ‫הארגומנט‬ ‫את‬ ‫לשנות‬ ‫יכולה‬ ‫פונקציה‬mutable •‫דוגמא‬:
  • 69.
  • 70.
    ‫השיעור‬ ‫של‬ ‫מטרה‬ ‫קונווי‬‫של‬ ‫חיים‬ ‫משחק‬ ‫להכיר‬ ‫חיים‬ ‫למשחק‬ ‫אלגוריתם‬ ‫לפתח‬ ‫המשחק‬ ‫של‬ ‫קוד‬ ‫לפתח‬
  • 71.
  • 72.
  • 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
  • 97.
  • 98.
  • 99.
  • 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‫חיים‬ ‫מהם‬ ‫כמה‬ ‫ונספור‬ ‫המשבצת‬ ‫של‬ ‫שכנים‬
  • 112.