תויצקנופ :5 רועיש -...
TRANSCRIPT
![Page 1: תויצקנופ :5 רועיש - blog.csit.org.ilblog.csit.org.il/UpLoad/FilesUpload/1450-3-05.pdf · האצותה תא הריזחמש factorial םשב היצקנופ ובתיכ )תרצע](https://reader033.vdocuments.site/reader033/viewer/2022053023/60566ecc4c7c6a405c716716/html5/thumbnails/1.jpg)
פונקציות: 5שיעור
1
ברק גונן
![Page 2: תויצקנופ :5 רועיש - blog.csit.org.ilblog.csit.org.il/UpLoad/FilesUpload/1450-3-05.pdf · האצותה תא הריזחמש factorial םשב היצקנופ ובתיכ )תרצע](https://reader033.vdocuments.site/reader033/viewer/2022053023/60566ecc4c7c6a405c716716/html5/thumbnails/2.jpg)
פונקציה היא קטע קוד שקוראים לו בשם
שעליו יבוצעו פעולות, אפשר להעביר לקטע הקוד מידע
אפשר גם לקבל חזרה ערכים מהפונקציה
שם הפונקציה וסוגריים עגולים: בפייתוןקריאה לפונקציה ()my_func: בלי פרמטרים◦
my_func(param): עם פרמטר אחד◦
2 ברק גונן
![Page 3: תויצקנופ :5 רועיש - blog.csit.org.ilblog.csit.org.il/UpLoad/FilesUpload/1450-3-05.pdf · האצותה תא הריזחמש factorial םשב היצקנופ ובתיכ )תרצע](https://reader033.vdocuments.site/reader033/viewer/2022053023/60566ecc4c7c6a405c716716/html5/thumbnails/3.jpg)
דגשים: שם בעל משמעות◦
תיעוד בתחילת הפונקציה◦
תודפס מחרוזת התיעוד help(hello)אם נכתוב ◦
3 ברק גונן
![Page 4: תויצקנופ :5 רועיש - blog.csit.org.ilblog.csit.org.il/UpLoad/FilesUpload/1450-3-05.pdf · האצותה תא הריזחמש factorial םשב היצקנופ ובתיכ )תרצע](https://reader033.vdocuments.site/reader033/viewer/2022053023/60566ecc4c7c6a405c716716/html5/thumbnails/4.jpg)
4 ברק גונן
![Page 5: תויצקנופ :5 רועיש - blog.csit.org.ilblog.csit.org.il/UpLoad/FilesUpload/1450-3-05.pdf · האצותה תא הריזחמש factorial םשב היצקנופ ובתיכ )תרצע](https://reader033.vdocuments.site/reader033/viewer/2022053023/60566ecc4c7c6a405c716716/html5/thumbnails/5.jpg)
תוצאת הקריאה ל-main():
5 ברק גונן
![Page 6: תויצקנופ :5 רועיש - blog.csit.org.ilblog.csit.org.il/UpLoad/FilesUpload/1450-3-05.pdf · האצותה תא הריזחמש factorial םשב היצקנופ ובתיכ )תרצע](https://reader033.vdocuments.site/reader033/viewer/2022053023/60566ecc4c7c6a405c716716/html5/thumbnails/6.jpg)
י "ע, או ערכים, פונקציה מחזירה ערךreturn
לדוגמה:
6 ברק גונן
![Page 7: תויצקנופ :5 רועיש - blog.csit.org.ilblog.csit.org.il/UpLoad/FilesUpload/1450-3-05.pdf · האצותה תא הריזחמש factorial םשב היצקנופ ובתיכ )תרצע](https://reader033.vdocuments.site/reader033/viewer/2022053023/60566ecc4c7c6a405c716716/html5/thumbnails/7.jpg)
אפשר להחזיר יותר מערך אחד:
7 ברק גונן
![Page 8: תויצקנופ :5 רועיש - blog.csit.org.ilblog.csit.org.il/UpLoad/FilesUpload/1450-3-05.pdf · האצותה תא הריזחמש factorial םשב היצקנופ ובתיכ )תרצע](https://reader033.vdocuments.site/reader033/viewer/2022053023/60566ecc4c7c6a405c716716/html5/thumbnails/8.jpg)
הגדרנו את הפונקציה הבאה:
מה יהיה ערכו שלk אם נכתוב כך?
המילהNone ערך ריק , היא מילה שמורה
משתנה יכול להיות שווהNone .
8 ברק גונן
![Page 9: תויצקנופ :5 רועיש - blog.csit.org.ilblog.csit.org.il/UpLoad/FilesUpload/1450-3-05.pdf · האצותה תא הריזחמש factorial םשב היצקנופ ובתיכ )תרצע](https://reader033.vdocuments.site/reader033/viewer/2022053023/60566ecc4c7c6a405c716716/html5/thumbnails/9.jpg)
יש מצבים נוספים בהם יוחזר ערךNone:
כלל returnלפונקציה אין ◦
משתנה/ בלי ערך returnלפונקציה יש ◦
return Noneלפונקציה יש ◦
9 ברק גונן
![Page 10: תויצקנופ :5 רועיש - blog.csit.org.ilblog.csit.org.il/UpLoad/FilesUpload/1450-3-05.pdf · האצותה תא הריזחמש factorial םשב היצקנופ ובתיכ )תרצע](https://reader033.vdocuments.site/reader033/viewer/2022053023/60566ecc4c7c6a405c716716/html5/thumbnails/10.jpg)
מוגדר -משתנה גלובלי
מוכר , מחוץ לפונקציות
לכולם
מוגדר –משתנה לוקלי
מוכר , בתוך פונקציה
רק לפונקציה
10 ברק גונן
?מה תבצע התוכנית
הקריאה ל-speak() תרוץ תקין אבלprint יעלה שגיאת הרצה .
מוכר רק בתוך הפונקציה word המשתנה -הסיבה
![Page 11: תויצקנופ :5 רועיש - blog.csit.org.ilblog.csit.org.il/UpLoad/FilesUpload/1450-3-05.pdf · האצותה תא הריזחמש factorial םשב היצקנופ ובתיכ )תרצע](https://reader033.vdocuments.site/reader033/viewer/2022053023/60566ecc4c7c6a405c716716/html5/thumbnails/11.jpg)
מה ידפיס הקוד הבא?
בתוך הפונקציה נוצר העתק wordמקומי של
הפונקציה אינה משנה את הגלובלי wordערכו של
11 ברק גונן
![Page 12: תויצקנופ :5 רועיש - blog.csit.org.ilblog.csit.org.il/UpLoad/FilesUpload/1450-3-05.pdf · האצותה תא הריזחמש factorial םשב היצקנופ ובתיכ )תרצע](https://reader033.vdocuments.site/reader033/viewer/2022053023/60566ecc4c7c6a405c716716/html5/thumbnails/12.jpg)
מה ידפיס הקוד הבא?
שגיאת הרצה ,word
אינו מוכר בתוך
הפונקציה
כאשר משנים את ? מדוע
ערכו של משתנה
פייתון מניח , בפונקציה
שיש לו עותק מקומי
12 ברק גונן
![Page 13: תויצקנופ :5 רועיש - blog.csit.org.ilblog.csit.org.il/UpLoad/FilesUpload/1450-3-05.pdf · האצותה תא הריזחמש factorial םשב היצקנופ ובתיכ )תרצע](https://reader033.vdocuments.site/reader033/viewer/2022053023/60566ecc4c7c6a405c716716/html5/thumbnails/13.jpg)
יש שתי שיטות לתקן את השגיאה:
מה תהיה התוצאה בכל מקרה?
13 ברק גונן
:globalשימוש במילה :העברת המשתנה כפרמטר
![Page 14: תויצקנופ :5 רועיש - blog.csit.org.ilblog.csit.org.il/UpLoad/FilesUpload/1450-3-05.pdf · האצותה תא הריזחמש factorial םשב היצקנופ ובתיכ )תרצע](https://reader033.vdocuments.site/reader033/viewer/2022053023/60566ecc4c7c6a405c716716/html5/thumbnails/14.jpg)
טיפ לתכנות נכון:
אם רוצים שפונקציה תשנה ◦
מומלץ להעבירו , משתנה
כפרמטר ולהחזיר אותו
, מסוכן global-שימוש ב◦
פונקציה משנה ערכים שיתר
הקוד משתמש בהם
14 ברק גונן
![Page 15: תויצקנופ :5 רועיש - blog.csit.org.ilblog.csit.org.il/UpLoad/FilesUpload/1450-3-05.pdf · האצותה תא הריזחמש factorial םשב היצקנופ ובתיכ )תרצע](https://reader033.vdocuments.site/reader033/viewer/2022053023/60566ecc4c7c6a405c716716/html5/thumbnails/15.jpg)
כיתבו פונקציה בשםfactorial שמחזירה את התוצאה
(עצרת 5! )5של
כיתבו פונקציה בשםbeep שמקבלת מחרוזת ומחזירה
בסופה beepאת המחרוזת ועוד
כיתבו פונקציה בשםkefel שמקבלת שני מספרים
אם התוצאה שלילית 0או , ומחזירה את המכפלה שלהם יותר מפעם אחת בפונקציה returnאפשר לכתוב ◦
15 ברק גונן
![Page 16: תויצקנופ :5 רועיש - blog.csit.org.ilblog.csit.org.il/UpLoad/FilesUpload/1450-3-05.pdf · האצותה תא הריזחמש factorial םשב היצקנופ ובתיכ )תרצע](https://reader033.vdocuments.site/reader033/viewer/2022053023/60566ecc4c7c6a405c716716/html5/thumbnails/16.jpg)
16 ברק גונן
ID
מעבירה פרמטרים לפונקציות פייתוןכיצד
![Page 17: תויצקנופ :5 רועיש - blog.csit.org.ilblog.csit.org.il/UpLoad/FilesUpload/1450-3-05.pdf · האצותה תא הריזחמש factorial םשב היצקנופ ובתיכ )תרצע](https://reader033.vdocuments.site/reader033/viewer/2022053023/60566ecc4c7c6a405c716716/html5/thumbnails/17.jpg)
שפייתוןזוכרים שאמרנו מתרגם פקודות לשפת מכונה
?רק כשהוא מגיע להריץ אותן
אפשר לשים פקודות שגורמותכל עוד הן עונות , לשגיאה
פייתוןלכללי הדקדוק של התוכנית תרוץ
blaבדוגמה הבאה הפונקציה ◦ אינה מוגדרת
למרות זאת התוכנית רצה ◦ OKומדפיסה
17 ברק גונן
![Page 18: תויצקנופ :5 רועיש - blog.csit.org.ilblog.csit.org.il/UpLoad/FilesUpload/1450-3-05.pdf · האצותה תא הריזחמש factorial םשב היצקנופ ובתיכ )תרצע](https://reader033.vdocuments.site/reader033/viewer/2022053023/60566ecc4c7c6a405c716716/html5/thumbnails/18.jpg)
הפונקציהid() מקבלת אובייקט
( שם כללי למשתנה או פונקציה)
ומחזירה את הכתובת שלו בזיכרון
אם לשני אובייקטים יש את אותוid() , זה אומר שהם מצביעים על
אותו אובייקט בזיכרון◦is מבצע את השוואה הזו
נסו למצוא את הכתובת בזיכרון idשל הפונקציה
18 ברק גונן
![Page 19: תויצקנופ :5 רועיש - blog.csit.org.ilblog.csit.org.il/UpLoad/FilesUpload/1450-3-05.pdf · האצותה תא הריזחמש factorial םשב היצקנופ ובתיכ )תרצע](https://reader033.vdocuments.site/reader033/viewer/2022053023/60566ecc4c7c6a405c716716/html5/thumbnails/19.jpg)
כזכור קיימות שתי שיטות להעברת פרמטרים לפונקציה:
◦ Pass by value
◦ Pass by reference
19 ברק גונן
![Page 20: תויצקנופ :5 רועיש - blog.csit.org.ilblog.csit.org.il/UpLoad/FilesUpload/1450-3-05.pdf · האצותה תא הריזחמש factorial םשב היצקנופ ובתיכ )תרצע](https://reader033.vdocuments.site/reader033/viewer/2022053023/60566ecc4c7c6a405c716716/html5/thumbnails/20.jpg)
בשיטה זו מועבר לפרוצדורה ערך הפרמטר
על המחסנית נוצר העתק
של הפרמטר
לפרוצדורה אין גישה
לפרמטר המקורי, אינה יכולה לשנות את ערכו◦
רק את ההעתק
20 ברק גונן
![Page 21: תויצקנופ :5 רועיש - blog.csit.org.ilblog.csit.org.il/UpLoad/FilesUpload/1450-3-05.pdf · האצותה תא הריזחמש factorial םשב היצקנופ ובתיכ )תרצע](https://reader033.vdocuments.site/reader033/viewer/2022053023/60566ecc4c7c6a405c716716/html5/thumbnails/21.jpg)
מעבירים לפרוצדורה את
הכתובת של הפרמטר
על המחסנית לא נוצר העתק
של הפרמטר
לפרוצדורה יש גישה לכתובת
בזיכרון שמכילה את הפרמטר יכולה לשנות את ערכו◦
21 ברק גונן
![Page 22: תויצקנופ :5 רועיש - blog.csit.org.ilblog.csit.org.il/UpLoad/FilesUpload/1450-3-05.pdf · האצותה תא הריזחמש factorial םשב היצקנופ ובתיכ )תרצע](https://reader033.vdocuments.site/reader033/viewer/2022053023/60566ecc4c7c6a405c716716/html5/thumbnails/22.jpg)
פייתון מעביר לפונקציותby reference
נוצר אובייקט חדש, אם מנסים לשנות אותו ,אבל* by value-אפקט דומה ל◦
נלמד בהמשך -immutableרק אם הוא *
22 ברק גונן
![Page 23: תויצקנופ :5 רועיש - blog.csit.org.ilblog.csit.org.il/UpLoad/FilesUpload/1450-3-05.pdf · האצותה תא הריזחמש factorial םשב היצקנופ ובתיכ )תרצע](https://reader033.vdocuments.site/reader033/viewer/2022053023/60566ecc4c7c6a405c716716/html5/thumbnails/23.jpg)
23 ברק גונן
, לפני השינוי ()idאותו
, אחרי השינויid() שונה
והערך ()id -ה, מחוץ לפונקציה
המקורי ללא שינוי