SlideShare une entreprise Scribd logo
1  sur  178
Télécharger pour lire hors ligne
‫מדעי‬ ‫לתכנות‬ ‫מבוא‬
‫הרצאה‬13‫חלק‬1
‫סיבוכיות‬ ‫ניתוח‬:‫המשך‬
2018
Igor Kleiner
‫השיעור‬ ‫של‬ ‫מטרה‬
‫אלגוריתם‬ ‫של‬ ‫יעילות‬ ‫להגדיר‬ ‫ניתן‬ ‫שבעזרת‬ ‫דרך‬ ‫ללמוד‬
‫אלגוריתם‬ ‫של‬ ‫יעילות‬ ‫למדוד‬ ‫איך‬ ‫להבין‬
‫לבעיות‬ ‫יעילים‬ ‫פתרונות‬ ‫לכתוב‬ ‫ללמוד‬
‫ריצה‬ ‫זמן‬ ‫למדוד‬ ‫אפשר‬ ‫איך‬
•‫ב‬ ‫פתרון‬':
•‫נציג‬‫עושה‬ ‫שהקוד‬ ‫בסיסיות‬ ‫פעולות‬ ‫כמות‬ ‫בעזרת‬ ‫ריצה‬ ‫זמן‬
•‫הקלט‬ ‫אורך‬ ‫של‬ ‫כפונקציה‬ ‫פעולות‬ ‫כמות‬ ‫את‬ ‫נבטא‬
•‫דומיננטיים‬ ‫הלא‬ ‫מגורמים‬ ‫נתעלם‬ ‫בפונקציה‬
•‫אקראית‬ ‫גישה‬ ‫עם‬ ‫חישוב‬ ‫מכונת‬ ‫של‬ ‫חישוב‬ ‫במודל‬ ‫נעזר‬(random access machine)
•‫פקודה‬ ‫לאחר‬ ‫פקודה‬ ‫מבצעת‬ ‫המכונה‬
•‫בסיסיות‬ ‫פעולות‬:‫השמה‬,‫השוואה‬,‫אריתמטיות‬ ‫פעולות‬,‫בזיכרון‬ ‫לאובייקט‬ ‫גישה‬
•‫סביר‬ ‫הוא‬ ‫זה‬ ‫חישוב‬ ‫מודל‬,‫שימושי‬
•‫במודל‬‫ז‬‫ה‬‫מחשב‬ ‫של‬ ‫מהירות‬ ‫חשובה‬ ‫לא‬,‫חשובה‬ ‫לא‬‫פייתון‬ ‫גרסת‬,‫לדעת‬ ‫רק‬ ‫חשוב‬
‫הפעולות‬ ‫כמות‬‫בחישוב‬(‫כפונקציה‬‫אורך‬ ‫של‬‫הקלט‬)
‫בקלט‬ ‫תלויה‬ ‫פעולות‬ ‫כמות‬
•‫ב‬ ‫גישה‬,'‫טובה‬ ‫גישה‬ ‫היא‬
•‫בקלט‬ ‫תלויה‬ ‫ריצה‬ ‫פעולות‬ ‫כמות‬ ‫אם‬,‫אותה‬ ‫נמדוד‬ ‫איך‬?
•‫גישות‬ ‫מספר‬ ‫קיים‬:
•‫מהיר‬ ‫הכי‬ ‫ריצה‬ ‫זמן‬‫אורך‬ ‫באותו‬ ‫הקלטים‬ ‫כל‬ ‫בין‬best case
•‫אורך‬ ‫באותו‬ ‫הקלטים‬ ‫כל‬ ‫בין‬ ‫ממוצע‬ ‫ריצה‬ ‫זמן‬average case
•‫אורך‬ ‫באותו‬ ‫הקלטים‬ ‫כל‬ ‫בין‬ ‫ביותר‬ ‫הגרוע‬ ‫במקרה‬ ‫ריצה‬ ‫זמן‬worst case
•‫בגודל‬ ‫רשימה‬ ‫עבור‬ ‫קודמת‬ ‫מדוגמא‬ ‫בלולאה‬ ‫ליניארי‬ ‫חיפוש‬ ‫עבור‬n‫נקבל‬:
•best case:‫פעולה‬1
•average case:n/2‫פעולות‬
•:worst casen‫פעולות‬
•‫ביותר‬ ‫הגרוע‬ ‫במקרה‬ ‫סיבוכיות‬ ‫בניתוח‬ ‫נתרכז‬ ‫אנו‬(‫עליון‬ ‫חסם‬)
‫דוגמא‬1:‫עצרת‬ ‫חישוב‬
•‫חישוב‬N‫עצרת‬‫דורש‬:5*n+1‫פעולות‬
•‫עבור‬n‫קבוע‬ ‫גדול‬ ‫מספיק‬1‫נתעלם‬ ‫ולכן‬ ‫תוצאה‬ ‫על‬ ‫משמעותי‬ ‫באופן‬ ‫תשפיע‬ ‫לא‬ ‫כבר‬
‫שצריך‬ ‫נגיד‬ ‫ואז‬ ‫מימנו‬5n‫לחישוב‬ ‫פעולות‬n‫נתונה‬ ‫פונקציה‬ ‫בעזרת‬ ‫עצרת‬
•‫נגיד‬ ‫ופשוט‬ ‫סיבוכיות‬ ‫בניתוח‬ ‫המשמעותי‬ ‫איבר‬ ‫של‬ ‫כפלי‬ ‫מקבוע‬ ‫נתעלם‬ ‫גם‬ ‫אנחנו‬
‫צריך‬~n‫או‬ ‫פעולות‬c*n‫פעולות‬(O(n))
‫שונות‬ ‫סיבוכיות‬ ‫מחלקות‬ ‫בין‬ ‫השוואות‬
‫פולינום‬ ‫נגד‬ ‫מערכית‬ ‫סיבוכיות‬
• 2^x against x^10
‫שונות‬ ‫סיבוכיות‬ ‫מחלקות‬ ‫בין‬ ‫השוואות‬
‫פולינום‬ ‫נגד‬ ‫פולינום‬
• x^2 against x^3
‫שונות‬ ‫סיבוכיות‬ ‫מחלקות‬ ‫בין‬ ‫השוואות‬
‫נגד‬ ‫פולינום‬nlogn
• xlog(x) against x
‫שונות‬ ‫סיבוכיות‬ ‫מחלקות‬ ‫בין‬ ‫השוואות‬
‫נגד‬ ‫פולינום‬nlogn
• xlog(x) against x^2
‫שונות‬ ‫סיבוכיות‬ ‫למחלקות‬ ‫מדויק‬ ‫לא‬ ‫סיכום‬
• “log(x)<sqrt(x)<x<x lg(x) <x^2 < x^3<…<x^k<…. < 2^x < 2^(2^x)
‫יעילים‬ ‫אלגוריתמים‬
log x sqrt(x) x x log x x^2 x^3 x^4 2^x
10 1 3.162278 10 10 100 1000 10000 1024
100 2 10 100 200 10000 1000000 1E+08 1.27E+30
1000 3 31.62278 1000 3000 1000000 1E+09 1E+12 1.1E+301
10000 4 100 10000 40000 100000000 1E+12 1E+16 #NUM!
100000 5 316.2278 100000 500000 10000000000 1E+15 1E+20 #NUM!
1000000 6 1000 1000000 6000000 1E+12 1E+18 1E+24 #NUM!
‫סיבוכיות‬ ‫לחישוב‬ ‫דוגמאות‬
‫סיבוכיות‬ ‫לחישוב‬ ‫דוגמאות‬
‫סיבוכיות‬ ‫לחישוב‬ ‫דוגמאות‬
O(1)
‫ראשוני‬ ‫מספר‬
• http://www.codeskulptor.org/#user42_R8WyJkAVGB_3.py
‫ראשוני‬ ‫מספר‬
• http://www.codeskulptor.org/#user42_R8WyJkAVGB_3.py
O(x)
‫סיבוכיות‬ ‫לחישוב‬ ‫דוגמאות‬
‫סיבוכיות‬ ‫לחישוב‬ ‫דוגמאות‬
O(‫רשימה‬ ‫של‬ ‫)אורך‬
‫סיבוכיות‬ ‫לחישוב‬ ‫דוגמאות‬
‫סיבוכיות‬ ‫לחישוב‬ ‫דוגמאות‬
Average Case Complexity
O(n lg n)
‫סיבוכיות‬ ‫לחישוב‬ ‫דוגמאות‬
‫סיבוכיות‬ ‫לחישוב‬ ‫דוגמאות‬
T(N)=1+T(N-1)=2+T(N-2)+….=N
O(N)
‫מדעי‬ ‫לתכנות‬ ‫מבוא‬
‫הרצאה‬13‫חלק‬2
‫להמשיך‬ ‫איך‬
2018
Igor Kleiner
‫הקורס‬ ‫סוף‬:‫להמשיך‬ ‫איך‬?
•‫פייתון‬ ‫ושפת‬ ‫תכנות‬ ‫של‬ ‫עקרונות‬ ‫למדנו‬ ‫סמסטר‬ ‫במשך‬
•‫אבל‬‫זאת‬‫רק‬‫התחלה‬
•‫דיברנו‬ ‫שלא‬ ‫מחשב‬ ‫במדעי‬ ‫וגם‬ ‫בתכנות‬ ‫וגם‬ ‫בפייתון‬ ‫גם‬ ‫נושאים‬ ‫המון‬ ‫קיימים‬
‫עליהם‬
‫הקורס‬ ‫סוף‬:‫להמשיך‬ ‫איך‬?
•‫בפייתון‬ ‫לתכנת‬ ‫צריך‬ ‫בפייתון‬ ‫ידע‬ ‫לשפר‬ ‫כדי‬
•‫אפשר‬‫לקרוא‬‫ספרים‬‫על‬‫פייתון‬
•‫אונליין‬ ‫או‬ ‫באוניברסיטה‬ ‫חדשים‬ ‫קורסים‬ ‫ללמוד‬ ‫אפשר‬
•‫אפשר‬‫בפייתון‬ ‫מעניינים‬ ‫בפרויקטים‬ ‫להשתתף‬
•‫עם‬ ‫בפייתון‬ ‫להשתמש‬ ‫מפסיקים‬ ‫אם‬‫הזמן‬‫שוכחים‬‫את‬‫השפה‬
‫ספרים‬
‫ספרים‬
‫קורסי‬‫ם‬
‫קורסי‬‫ם‬
‫שפות‬‫אחרות‬ ‫תכנות‬
•
‫מחשב‬ ‫למדעי‬ ‫קשורים‬ ‫קורסים‬
•‫מתמטיקה‬‫דיסקרטית‬
•‫נתונים‬ ‫מבנה‬
•‫אלגוריתמים‬
•‫עצמים‬ ‫מונחה‬ ‫תכנות‬
•‫למידה‬‫ממוכנת‬
‫מדעי‬ ‫לתכנות‬ ‫מבוא‬
‫הרצאה‬13‫חלק‬3
‫סיכום‬
2018
Igor Kleiner
‫מקום‬ ‫בכל‬ ‫מחשבים‬
•‫מקום‬ ‫בכל‬ ‫כמעט‬ ‫מחשב‬ ‫למצוא‬ ‫אפשר‬ ‫היום‬:
•‫מקרר‬
•‫קפה‬ ‫מכונת‬
•‫מצלמה‬
•‫טלפון‬
•‫מכונית‬
•‫מעלית‬
•‫דם‬ ‫לחץ‬ ‫מד‬
•...
‫מחשב‬ ‫תוכנת‬ ‫היא‬ ‫מה‬?
•‫פקודות‬ ‫סדרת‬
•‫זאת‬‫קטנה‬ ‫חתיכה‬‫של‬‫האינטליגנציה‬‫שלנו‬‫במחשב‬
•‫בה‬ ‫להשתמש‬ ‫שיוכלו‬ ‫אחרים‬ ‫לאנשים‬ ‫שלנו‬ ‫תוכנה‬ ‫לתת‬ ‫יכולים‬ ‫אנו‬
•"‫טובה‬ ‫תוכנה‬,‫אנשים‬ ‫הרבה‬ ‫משמחת‬ ‫מוצלח‬ ‫ציור‬ ‫במו‬ ‫היא‬"
‫מחשב‬ ‫מבנה‬
•CPU
•RAM – main memory
•secondary memory
•input devices
•output devices
‫פייתון‬ ‫עם‬ ‫נדבר‬
‫פייתון‬ ‫של‬ ‫מבנה‬
•‫דומים‬ ‫מבנים‬ ‫יש‬ ‫בפייתון‬ ‫אדם‬ ‫בן‬ ‫של‬ ‫בשפת‬ ‫כמו‬:
• Vocabulary/ Words – Variables and reserved words (‫מילים‬)
• Sentences structure – valid syntax patterns (‫משפטים‬–‫קוד‬ ‫של‬ ‫בלוקים‬)
• Story structure – constructing correct program (‫סיפור‬–‫קוד‬,‫תוכנה‬)
‫שמורות‬ ‫מילים‬Reserved words
•‫פייתון‬ ‫של‬ ‫שמורות‬ ‫מילים‬ ‫רשימת‬2.7
•‫משתנים‬ ‫של‬ ‫כשמות‬ ‫האלו‬ ‫במילים‬ ‫להשתמש‬ ‫אסור‬
‫תוכנה‬ ‫הרצת‬
CodeSculptor
sidebar console text outputeditor
‫אריתמטיות‬ ‫פעולות‬
arithmetic operators
• + plus ‫חיבור‬
• - minus ‫חיסור‬
• * times ‫כפל‬
• / divided by ‫חלוקה‬
• ** power ‫חזקה‬
‫בפייתון‬ ‫משתנים‬ ‫של‬ ‫שמות‬ ‫לייצור‬ ‫כללים‬
•‫משתנה‬ ‫שם‬‫להתחיל‬ ‫חייב‬‫מסימן‬ ‫או‬ ‫מאות‬_
•‫משתנה‬ ‫שם‬‫להכיל‬ ‫יכול‬:‫אותיות‬(‫אנגלי‬),‫מספרים‬_ ,
•‫וגדולות‬ ‫קטנות‬ ‫לאותיות‬ ‫חשיבות‬ ‫יש‬
‫ממשתמש‬ ‫קלט‬ ‫קבלת‬
•‫פונקציית‬ ‫בעזרת‬ ‫ממשתמש‬ ‫קלט‬ ‫לקבל‬ ‫אפשר‬raw_input()
•‫מחרוזת‬ ‫מטיפוס‬ ‫ערך‬ ‫מחזירה‬ ‫הפונקציה‬
‫השמה‬ ‫פעולת‬–assignment statement
•‫משתנה‬ ‫מייצרת‬ ‫השמה‬ ‫פעולת‬)‫קיים‬ ‫היה‬ ‫לא‬ ‫הוא‬ ‫אם‬(‫של‬ ‫ערך‬ ‫לו‬ ‫ומייחסת‬‫ביטוי‬
‫ל‬ ‫ימין‬ ‫מצעד‬ ‫שכתוב‬-"="
‫הערות‬:‫ראשונה‬ ‫מהרצאה‬ ‫דוגמא‬
‫אלגוריתם‬
•‫פשוטות‬ ‫במילים‬:‫מסוימת‬ ‫לבעיה‬ ‫פתרון‬ ‫של‬ ‫מדויק‬ ‫תיור‬ ‫הוא‬ ‫אלגוריתם‬
•‫למתכון‬ ‫דומה‬ ‫אלגוריתם‬:
•‫אוכל‬ ‫להכנת‬ ‫שלבים‬ ‫רשומים‬ ‫במתכון‬
•‫בעיה‬ ‫של‬ ‫פתרון‬ ‫של‬ ‫שלבים‬ ‫רשומים‬ ‫באלגוריתם‬
•‫כלשהי‬ ‫בשפה‬ ‫כתוב‬ ‫להיות‬ ‫יכול‬ ‫אלגוריתם‬
•‫באנגלית‬,‫בעברית‬,‫ברוסית‬,‫בערבית‬,...
•‫מתמטית‬ ‫בשפה‬
•‫מחשב‬ ‫בשפת‬
•‫מעברים‬ ‫דיאגרמת‬ ‫בעזרת‬
•‫בעיה‬ ‫לאותה‬ ‫שונים‬ ‫אלגוריתמים‬ ‫לכתוב‬ ‫יכולים‬ ‫שונים‬ ‫אנשים‬
‫לאלגוריתם‬ ‫דוגמא‬
•‫בעיה‬:‫פרנהייט‬ ‫למעלות‬ ‫צלזיוס‬ ‫מעלות‬ ‫טמפרטורה‬ ‫שמעביר‬ ‫אלגוריתם‬ ‫פתח‬
•‫אלגוריתם‬ ‫של‬ ‫כללי‬ ‫תיור‬:
•‫בצלזיוס‬ ‫טמפרטורה‬ ‫קבלת‬
•‫מתמטיים‬ ‫חישובים‬
•‫תשובה‬ ‫הצגת‬
•‫אלגוריתם‬:
•‫ממשתמש‬ ‫קלט‬ ‫קבלת‬(‫ב‬ ‫קלט‬ ‫נסמן‬-X)
•‫נכפיל‬X‫ב‬-9,‫ב‬ ‫נחלק‬ ‫התוצאה‬ ‫את‬-5,‫נוסיף‬ ‫לתוצאה‬32
•‫אחרון‬ ‫חישוב‬ ‫תוצאת‬ ‫למשתמש‬ ‫נחזיר‬
•‫בדיקה‬:
12->12*9=108->108/5=21.6->21.6+32=53.6
‫מתמטיות‬ ‫פונקציות‬
•‫שונות‬ ‫עזר‬ ‫בפונקציות‬ ‫נשתמש‬ ‫תוכנות‬ ‫שברוב‬ ‫הקורס‬ ‫בהמשך‬ ‫נראה‬
•‫פונקציות‬ ‫של‬ ‫דוגמאות‬ ‫כמה‬ ‫ראינו‬ ‫כבר‬ ‫אנו‬
•‫לשימוש‬ ‫ונתונים‬ ‫אחרים‬ ‫מתכנתים‬ ‫ידי‬ ‫על‬ ‫נכתבו‬ ‫האלו‬ ‫מתמטיות‬ ‫פונקציות‬
•‫הספרייה‬ ‫את‬ ‫לקוד‬ ‫להוסיף‬ ‫לפייתון‬ ‫להגיד‬ ‫יש‬ ‫מתמטיות‬ ‫בפונקציות‬ ‫שימוש‬ ‫לפני‬ ‫אבל‬
‫פקודה‬ ‫ידי‬ ‫על‬ ‫נעשה‬ ‫וזה‬ ‫המתמטיות‬ ‫הפונקציות‬ ‫כל‬ ‫של‬ ‫תיור‬ ‫יש‬ ‫שבה‬
• import math
•‫מהן‬ ‫בחלק‬ ‫רק‬ ‫נשתמש‬ ‫אנו‬ ‫מתמטיות‬ ‫פונקציות‬ ‫הרבה‬ ‫ממומשות‬ ‫זו‬ ‫בספרייה‬
•‫ספריה‬ ‫של‬ ‫פונקציות‬ ‫על‬ ‫פרטים‬ ‫יותר‬ ‫לדעת‬ ‫כדי‬math‫שלה‬ ‫התיעוד‬ ‫את‬ ‫לקרוא‬ ‫אפשר‬
docs.python.org/2/library/math.html
‫דוגמא‬:‫ריבועית‬ ‫משוואה‬ ‫פתרון‬
‫מבוא‬
•‫במצב‬ ‫התלויות‬ ‫החלטות‬ ‫הרבה‬ ‫מקבלים‬ ‫אנו‬ ‫יום‬ ‫כל‬
•‫אם‬‫גשם‬ ‫יהי‬ ‫היום‬‫אז‬‫מטריה‬ ‫אקח‬ ‫אני‬
•‫אם‬‫לא‬ ‫קשה‬ ‫קורס‬‫אז‬‫אותו‬ ‫אקח‬
•‫אם‬‫בהרצאה‬ ‫חומר‬ ‫הבנתי‬ ‫לא‬‫אז‬‫קבלה‬ ‫לשעות‬ ‫אלך‬
•‫אם‬...........‫אז‬..............‫או‬.............
‫השוואה‬ ‫אופרטורים‬
‫הזחות‬(indentations)
•‫להזחות‬ ‫רבה‬ ‫חשיבות‬ ‫יש‬ ‫בפייתון‬
•‫עם‬ ‫שורה‬ ‫לאחר‬if‫או‬for(‫בהמשך‬)‫הבלוק‬ ‫כל‬ ‫לאורך‬ ‫הזחות‬ ‫של‬ ‫כמות‬ ‫אותה‬ ‫מוסיפים‬
•‫חישוב‬ ‫בלוק‬ ‫אותו‬ ‫ומסתיים‬ ‫מתחיל‬ ‫איפה‬ ‫להבין‬ ‫לפייתון‬ ‫עוזרות‬ ‫הזחות‬
•‫הערה‬:‫ב‬ ‫להשתמש‬ ‫לא‬ ‫עדיף‬-TAB‫הזחות‬ ‫לייצור‬ ‫כדי‬
•‫בגודל‬ ‫הזחות‬ ‫לעשות‬ ‫מומלץ‬ ‫בלוק‬ ‫בכל‬4‫רווחים‬
‫שיעור‬3
•‫אם‬‫גשם‬ ‫יהי‬ ‫היום‬‫אז‬‫מטריה‬ ‫ניקח‬,‫אחרת‬‫לים‬ ‫נלך‬
‫לוגים‬ ‫אופרטורים‬logic operators
AND
OR
NOT
‫מרובות‬ ‫השוואות‬
http://www.codeskulptor.org/#user42_tXLmQCmysv_6.py
‫פונקציות‬‫נוספות‬ ‫שימושיות‬
‫מקוננים‬ ‫תנאים‬nested conditions /
•‫לפעמים‬,‫קוד‬ ‫לכתיבת‬ ‫עוזרים‬ ‫מקוננים‬ ‫תנאים‬
•‫התוכנה‬ ‫הבנת‬ ‫מסבך‬ ‫מקוננים‬ ‫בתנאים‬ ‫שימוש‬ ‫כלל‬ ‫בדרך‬ ‫אבל‬,‫לא‬ ‫מומלץ‬ ‫ולכן‬
‫צורך‬ ‫ללא‬ ‫בהם‬ ‫להשתמש‬
‫אקראיים‬ ‫מספרים‬
•‫אקראיים‬ ‫מספרים‬ ‫עם‬ ‫לעבוד‬ ‫נרצה‬ ‫לפעמים‬
‫קטן‬ ‫תרגיל‬:‫התאמה‬ ‫לפי‬ ‫חבר‬
• random.choice((“H”,”T”))
• random.choice((1,2,3))
• random.random()
• rand.int(2,5)
•‫בין‬ ‫שלם‬ ‫אקראי‬ ‫מספר‬ ‫מחזירה‬ ‫פונקציה‬2‫ל‬-5(‫כולל‬)
•‫הוגן‬ ‫מטבע‬ ‫הטלת‬ ‫תוצאת‬ ‫מחזירה‬ ‫פונקציה‬
•‫בין‬ ‫בקטע‬ ‫ממשי‬ ‫מספר‬ ‫מחזירה‬ ‫פונקציה‬0‫ל‬-1
•‫אקראי‬ ‫מספר‬ ‫מחזירה‬ ‫פונקציה‬1‫או‬2‫או‬3
‫ריבועית‬ ‫משוואה‬ ‫פתרון‬
•‫ריבועיות‬ ‫משוואות‬ ‫שפותרת‬ ‫תוכנה‬ ‫ראינו‬
•‫ב‬ ‫לתוכנה‬ ‫אותה‬ ‫נשווה‬-R
‫לולאת‬ ‫היא‬ ‫מה‬while?
•‫מטאפורה‬:‫במבה‬ ‫שקית‬ ‫עם‬ ‫אדם‬ ‫בן‬
•‫יש‬ ‫בשקית‬40‫במבה‬ ‫יחידות‬,‫בלולאת‬ ‫נמצא‬ ‫אותה‬ ‫לאכול‬ ‫ורוצה‬ ‫במבה‬ ‫שאוהב‬ ‫אדם‬ ‫בן‬while
• http://www.codeskulptor.org/#user42_W4G04OOmnx_0.py
1. number of bambas = 40
2. while number of bambas >0:
3. take one bamba
4. eat bamba
5. go to step 2
6. put the empty bag away
algorithm
program
‫דוגמא‬1:‫בלולאות‬ ‫שימוש‬
•‫שאלה‬:‫מ‬ ‫המספרים‬ ‫כל‬ ‫שמדפיסה‬ ‫תוכנה‬ ‫כתוב‬-1‫עד‬10
http://www.codeskulptor.org/#user43_uHfDy2ZX8F_2.py
‫חלוקה‬ ‫שארית‬
•‫שלם‬ ‫מספר‬ ‫חלוקה‬ ‫שארית‬ ‫לדעת‬ ‫רוצים‬ ‫אנו‬ ‫אם‬A‫שלם‬ ‫במספר‬B‫אפשר‬ ‫אזי‬
‫להשתמש‬‫באופרטור‬%
‫ראשוני‬ ‫מספר‬
• http://www.codeskulptor.org/#user42_R8WyJkAVGB_3.py
continue and break
•‫פעולת‬continue‫לולאה‬ ‫עוצרת‬ ‫לא‬,‫איטרציה‬ ‫מפסיקה‬ ‫אלה‬(‫צעד‬)‫וממשיכה‬ ‫נוכחית‬
‫הבאה‬ ‫לאיטרציה‬
•‫פעולת‬break‫לולאה‬ ‫עוצרת‬‫נמצאת‬ ‫היא‬ ‫שבה‬,‫בלוק‬ ‫לאחר‬ ‫הבא‬ ‫שורה‬ ‫מתבצעת‬ ‫ואז‬
‫הלולאה‬ ‫של‬
x=x+1
•‫דבר‬ ‫אותו‬ ‫לבצע‬ ‫מקוצר‬ ‫כתיב‬ ‫קיים‬
• x=x+1 x+=1
• x=x+5 x+=5
• x=x/2 x/=2
• x=x-5 x-=5
• x=x*8 x*=8
for loop
•‫בלולאת‬ ‫נשתמש‬for‫מקרים‬ ‫בשתי‬:
•‫נתונה‬ ‫אובייקטים‬ ‫בסדרת‬ ‫אובייקט‬ ‫כל‬ ‫על‬ ‫לעבור‬ ‫צורך‬ ‫יש‬ ‫כאשר‬(‫הקורס‬ ‫בהמשך‬ ‫נלמד‬)
• http://www.codeskulptor.org/#user42_fMjvkLw36J_6.py
‫פונקציית‬range()
‫מקוננות‬ ‫לולאות‬ ‫זה‬ ‫מה‬?
•‫לולאה‬ ‫בתוך‬ ‫לולאה‬
•‫לולאה‬ ‫בתוך‬ ‫לולאה‬ ‫בתוך‬ ‫לולאה‬
•‫בלולאה‬ ‫להשתמש‬ ‫אפשר‬for‫בתוך‬for
•‫בלולאה‬ ‫להשתמש‬ ‫אפשר‬for‫בתוך‬while
•‫בלולאה‬ ‫להשתמש‬ ‫אפשר‬while‫בתוך‬for
•‫בלולאה‬ ‫להשתמש‬ ‫אפשר‬while‫בתוך‬while
syntax of nested for loops
for var1 in sequence1:
statement(s) of outside loop
for var2 in sequence2:
statement(s) of inner loop
statement(s) of outside loop
after loops
Python Function Format
‫פונקציה‬ ‫הגדרת‬:
def function_name(optional_parameters):
statement(s)
…..
…..
‫מטרה‬
‫פונקציות‬ ‫של‬ ‫שונים‬ ‫סוגים‬ ‫ללמוד‬:
•‫מחזירות‬ ‫ולא‬ ‫מקבלות‬ ‫שלא‬ ‫פונקציות‬‫פרמטרים‬
•‫פרמטרים‬ ‫מחזירות‬ ‫אבל‬ ‫מקבלות‬ ‫שלא‬ ‫פונקציות‬
•‫פרמטרים‬ ‫מחזירות‬ ‫ולא‬ ‫שמקבלות‬ ‫פונקציות‬
•‫פרמטרים‬ ‫ומחזירות‬ ‫שמקבלות‬ ‫פונקציות‬
‫עצרת‬ ‫חישוב‬
•‫פונקציה‬ ‫כתוב‬‫שמקבלת‬‫שלם‬ ‫מספר‬‫ומחזירה‬‫המספר‬ ‫של‬ ‫העצרת‬ ‫את‬
http://www.codeskulptor.org/#user42_NdoxYiDzeM_0.py
‫מ‬ ‫מלבן‬ ‫שמציירת‬ ‫פונקציה‬ ‫כתוב‬-*
•‫פונקציה‬‫מחזירה‬ ‫ולא‬ ‫מקבלת‬ ‫לא‬‫דבר‬ ‫שום‬
• http://www.codeskulptor.org/#user42_NdoxYiDzeM_4.py
‫מחרוזת‬ ‫של‬ ‫אותיות‬
•‫פונקציה‬ ‫בעזרת‬ ‫לחשב‬ ‫אפשר‬ ‫מחרוזת‬ ‫של‬ ‫אורך‬len()
‫מחרוזת‬ ‫על‬ ‫לולאה‬
•‫לולאה‬ ‫בעזרת‬ ‫במחרוזת‬ ‫תו‬ ‫כל‬ ‫על‬ ‫לעבור‬ ‫אפשר‬:
• For
‫אופרטור‬:-‫מחרוזת‬ ‫תת‬
•‫אופרטור‬ ‫בעזרת‬:‫ממחרוזת‬ ‫חלק‬ ‫לקבל‬ ‫אפשר‬
‫אופרטור‬in‫מחרוזות‬ ‫עבור‬
‫מחרוזות‬ ‫השוואת‬
•‫לוגיות‬ ‫פעולות‬ ‫בעזרת‬ ‫מחרוזות‬ ‫שתי‬ ‫להשוואת‬ ‫אפשר‬
•‫אלפביתי‬ ‫סדר‬ ‫לפי‬ ‫היא‬ ‫ההשוואה‬ ‫אזי‬ ‫קטנות‬ ‫אותיות‬ ‫הן‬ ‫במחרוזות‬ ‫האותיות‬ ‫כל‬ ‫כאשר‬
(‫מלון‬ ‫של‬ ‫סדר‬)
‫מחרוזות‬ ‫של‬ ‫מתודות‬string methods /
•‫הבא‬ ‫בדוגמא‬ ‫נתבונן‬:
https://www.continuum.io/downloads
‫אופציה‬ ‫לבחור‬ ‫יש‬
‫אחד‬ ‫מתאימה‬
‫קובץ‬
‫קובץ‬ ‫בתוך‬ ‫נתונים‬ ‫שמירת‬
•‫לשמירה‬ ‫הקובץ‬ ‫את‬ ‫לפתוח‬ ‫יש‬:“w”
•‫מתודה‬ ‫בעזרת‬ ‫קובץ‬ ‫בתוך‬ ‫כותבים‬write(‫מטיפוס‬ ‫פרמטרים‬ ‫רק‬string)
•‫מתודה‬ ‫בעזרת‬ ‫אותו‬ ‫לסגור‬ ‫יש‬ ‫בקובץ‬ ‫שימוש‬ ‫סוף‬ ‫אחרי‬close()
•‫חשוב‬‫בו‬ ‫שימוש‬ ‫כל‬ ‫לאחר‬ ‫אחד‬ ‫פעם‬ ‫רק‬ ‫קובץ‬ ‫את‬ ‫לסגור‬
‫מחרוזת‬:‫שלילי‬ ‫אינדקס‬
•‫בעזרת‬ ‫במחרוזת‬ ‫מסוימת‬ ‫לאות‬ ‫לגשת‬ ‫אפשר‬ ‫איך‬ ‫ראינו‬ ‫קודם‬ ‫בשיעור‬][‫ואינדקס‬
‫האות‬ ‫של‬
•‫שליליים‬ ‫אינדקסים‬ ‫בעזרת‬ ‫לאות‬ ‫לגשת‬ ‫אפשר‬ ‫בנוסף‬
-1-2-3-4-5-6
‫קיימת‬ ‫מחרוזת‬ ‫של‬ ‫תוכן‬ ‫לשנות‬ ‫אפשר‬ ‫אי‬
•‫המחרוזת‬ ‫את‬ ‫לעדכן‬ ‫אפשר‬ ‫אי‬
•‫לעדכן‬ ‫ניתן‬ ‫שלא‬ ‫מהטיפוס‬ ‫הן‬ ‫מחרוזות‬
•‫העדכון‬ ‫את‬ ‫שתכיל‬ ‫חדשה‬ ‫מחרוזת‬ ‫לייצר‬ ‫אפשר‬ ‫אבל‬
List
•‫שונים‬ ‫מטיפוסים‬ ‫אובייקטים‬ ‫ראינו‬:
• bool, function, str, int, float
•‫לייצר‬ ‫אפשר‬ ‫איך‬ ‫נלמד‬ ‫היום‬‫רשימה‬‫אובייקטים‬ ‫של‬
•‫ושימושי‬ ‫חדש‬ ‫נתונים‬ ‫מבנה‬ ‫נלמד‬ ‫בעצם‬‫רשימה‬
•‫רשימה‬‫סדרה‬ ‫לשמור‬ ‫מאפשרת‬(‫סדר‬ ‫יש‬)‫שם‬ ‫אותו‬ ‫תחת‬ ‫אובייקטים‬ ‫של‬(‫מאוד‬ ‫נוח‬)
‫ו‬ ‫אינדקס‬ ‫דרך‬ ‫אובייקט‬ ‫לכל‬ ‫ולגשת‬-] [
•‫לרשימה‬ ‫דוגמא‬:
•‫שונים‬ ‫מטיפוסים‬ ‫אובייקטים‬ ‫של‬ ‫רשימת‬
‫רשימות‬ ‫של‬ ‫מתודות‬
•‫רשימות‬ ‫של‬ ‫מתודות‬ ‫יש‬ ‫רשימה‬ ‫מטיפוס‬ ‫אובייקט‬ ‫לכל‬
• listobj.methodname(params)
•‫בפונקציה‬ ‫להשתמש‬ ‫אפשר‬ ‫קיימות‬ ‫מתודות‬ ‫אילו‬ ‫לדעת‬ ‫כדי‬dir()
‫רשימות‬ ‫שתי‬ ‫של‬ ‫שרשור‬
•‫אופרטור‬ ‫בעזרת‬+‫אפשר‬‫לייצר‬‫שתי‬ ‫של‬ ‫לשרשור‬ ‫ששווה‬ ‫חדשה‬ ‫רשימה‬
‫מקור‬ ‫הרשימות‬
‫רשימות‬ ‫תתי‬
•‫פעולת‬ ‫בעזרת‬ ‫מרשימה‬ ‫רשימה‬ ‫תת‬ ‫לקבל‬ ‫אפשר‬:‫ו‬-] [‫במחרוזות‬ ‫כמו‬
‫תרגיל‬
•‫כתוב‬‫בשם‬ ‫פונקציה‬savelisttofile‫לתוך‬ ‫ושומרת‬ ‫ורשימה‬ ‫קובץ‬ ‫של‬ ‫שם‬ ‫המקבלת‬
‫הרשימה‬ ‫את‬ ‫הקובץ‬
‫תרגיל‬2
‫מסקנה‬:‫פיבונאצ‬ ‫סדרת‬'‫מאוד‬ ‫מחר‬ ‫גודלת‬ ‫י‬:
‫מערכי‬ ‫בקצב‬
‫נצייר‬30‫איברים‬
‫סדרה‬ ‫של‬ ‫ראשונים‬
‫דוגמא‬2:‫הישר‬ ‫על‬ ‫אקראי‬ ‫הילוך‬
‫הישר‬ ‫על‬ ‫אקראי‬ ‫הילוך‬
•‫אלגוריתם‬:
•‫ערך‬ ‫עם‬ ‫נתחיל‬X0=0
•‫לכל‬k=1,2,….999:‫מספרים‬ ‫משתי‬ ‫אחד‬ ‫נגריל‬1‫ו‬-1‫בהסתברות‬0.5‫מהם‬ ‫אחד‬ ‫כל‬
‫אקראיים‬ ‫הילוכים‬ ‫הרבה‬
‫קופונים‬ ‫אסיפת‬
•‫ספיידרמן‬ ‫של‬ ‫הקופונים‬ ‫כל‬ ‫את‬ ‫לאסוף‬ ‫רוצה‬ ‫ילד‬
•‫סגורות‬ ‫במעטפות‬ ‫נמכרים‬ ‫הקופונים‬
•‫אחד‬ ‫קופון‬ ‫רק‬ ‫יש‬ ‫מעטפה‬ ‫בכל‬
•‫סה‬ ‫יש‬"‫כ‬100‫שונים‬ ‫קופונים‬
•‫הסתברות‬ ‫אותה‬ ‫יש‬ ‫קופון‬ ‫לכל‬1/100‫במעטפה‬ ‫להיות‬
•‫הקופונים‬ ‫כל‬ ‫את‬ ‫יאסוף‬ ‫אשר‬ ‫עד‬ ‫לקנות‬ ‫צריך‬ ‫ילד‬ ‫בממוצע‬ ‫מעטפות‬ ‫כמה‬?
•‫שבממוצע‬ ‫מדויק‬ ‫באופן‬ ‫לחשב‬ ‫אפשר‬(‫תוחלת‬)‫בערך‬ ‫לקנות‬ ‫יש‬100*log(100)
‫מעטפות‬
•‫כלומר‬~515
‫נתונים‬ ‫של‬ ‫גרפי‬ ‫ייצוג‬
•‫גרפית‬ ‫בצורה‬ ‫הנתונים‬ ‫את‬ ‫להציג‬ ‫רוצים‬ ‫לפעמים‬ ‫מסובכים‬ ‫נתונים‬ ‫עם‬ ‫עובדים‬ ‫כאשר‬
‫דוגמא‬:‫אוכלוסייה‬ ‫גודל‬
‫קוים‬ ‫ידי‬ ‫על‬ ‫מחוברות‬ ‫הנקודות‬ ‫את‬ ‫לראות‬ ‫שניתן‬ ‫כמו‬
‫פיזור‬ ‫גרף‬
•‫בפונקציה‬ ‫להיעזר‬ ‫אפשר‬ ‫הנקודות‬ ‫בין‬ ‫קוים‬ ‫ללא‬ ‫לבד‬ ‫הנתונים‬ ‫את‬ ‫לצייר‬ ‫נרצה‬ ‫אם‬
scatter()‫של‬plt
‫להילוכים‬ ‫דוגמאות‬
‫במישור‬ ‫אקראיים‬
Modules
•‫סיומת‬ ‫עם‬ ‫קבצים‬ ‫הם‬ ‫מודולים‬.py‫בפייתון‬ ‫הכתוב‬ ‫קוד‬ ‫המכילים‬:‫פונקציות‬,‫פקודות‬
‫המשך‬ ‫מודולים‬
•‫במודולים‬ ‫להשתמש‬ ‫נוספת‬ ‫אפשרות‬ ‫קיימת‬
‫סיכום‬
import ourprime
print ourptime.isPrime(11)
import ourprime as op
print op.isPrime(11)
from op import isPrime
print isPrime(11)
from op import *
print isPrime(11)
List Comprehension
•‫המנגנון‬List Comprehension‫טבעי‬ ‫באופן‬ ‫רשימות‬ ‫להגדיר‬ ‫מאפשר‬ ‫בפייתון‬
‫במתמטיקה‬ ‫כמו‬:
• X=[i: i>1, i is a natural number]
•‫דוגמא‬:‫מ‬ ‫מספרים‬ ‫של‬ ‫ריבועים‬ ‫רשימת‬-0‫עד‬9
‫רשימות‬ ‫של‬ ‫רשימה‬
•‫סטודנטים‬ ‫של‬ ‫רשימת‬
•‫יש‬ ‫סטודנט‬ ‫לכל‬4‫ציונים‬
‫מוטיבציה‬ ‫סימולציה‬
•‫פשוטות‬ ‫מדוגמאות‬ ‫נתחיל‬:
•‫לקבל‬ ‫הסתברות‬ ‫מהי‬"‫ראש‬"‫הוגן‬ ‫מטבע‬ ‫בהטלת‬?0.5
•‫שנקבל‬ ‫פעמים‬ ‫מספר‬ ‫פרופורציית‬ ‫היא‬ ‫מה‬ ‫פעמים‬ ‫המון‬ ‫הוגן‬ ‫מטבע‬ ‫נטיל‬ ‫אם‬
"‫ראש‬"?
•‫של‬ ‫סימולציה‬ ‫בעזרת‬ ‫נבדוק‬100‫הטלות‬
‫הוגן‬ ‫מטבע‬ ‫סימולציה‬:‫סיכום‬
•‫לקבל‬ ‫הסתברות‬ ‫מהי‬"‫ראש‬"‫הוגן‬ ‫מטבע‬ ‫בהטלת‬?0.5
•‫שנקבל‬ ‫פעמים‬ ‫מספר‬ ‫פרופורציית‬ ‫מהי‬ ‫פעמים‬ ‫המון‬ ‫הוגן‬ ‫מטבע‬ ‫נטיל‬ ‫אם‬"‫ראש‬"?
‫סימולציה‬ ‫בעזרת‬ ‫פתרון‬
‫קוד‬ ‫של‬ ‫ביצוע‬ ‫זמן‬
•‫ספריה‬ ‫בעזרת‬timer‫קוד‬ ‫קטע‬ ‫לביצוע‬ ‫הדרוש‬ ‫הזמן‬ ‫את‬ ‫לחשב‬ ‫נוכל‬
‫מקבלים‬ ‫פעם‬ ‫כל‬
‫שונות‬ ‫תוצאות‬–‫אפשר‬
‫ריצות‬ ‫כמה‬ ‫לעשות‬
‫ממוצע‬ ‫ולחשב‬
‫מילון‬ ‫מייצרים‬ ‫איך‬
•‫מסולסלים‬ ‫בסוגריים‬ ‫משתמשים‬ ‫מילון‬ ‫לייצר‬ ‫כדי‬
•‫רושמים‬ ‫הסוגריים‬ ‫בתוך‬‫צמדים‬:‫מפתח‬:‫איבר‬
‫מילון‬ ‫של‬ ‫שם‬ ‫מפתח‬
‫ערך‬
‫מפתח‬ ‫בעזרת‬ ‫מילון‬ ‫לאברי‬ ‫גישה‬
•‫לולאת‬ ‫בעזרת‬ ‫מילון‬ ‫של‬ ‫מפתח‬ ‫כל‬ ‫על‬ ‫לעבור‬ ‫אפשר‬for
‫ב‬ ‫שימוש‬-get
•‫ב‬ ‫מהשימושים‬ ‫אחד‬-get‫ברשימה‬ ‫נפוצה‬ ‫הכי‬ ‫מילה‬ ‫מהי‬ ‫לדעת‬ ‫הוא‬
http://www.codeskulptor.org/#user42_BI2XshmUOV_0.py
‫שאפשר‬
‫רקורסיה‬
"‫רקורסיה‬ ‫להבין‬ ‫יש‬ ‫רקורסיה‬ ‫להבין‬ ‫כדי‬"
‫בעיות‬ ‫לפתרון‬ ‫דרך‬ ‫היא‬ ‫רקורסיה‬
‫ברקורסיה‬ ‫בעיה‬ ‫פותרים‬ ‫כאשר‬"‫שוברים‬"‫יותר‬ ‫קטנה‬ ‫לבעיה‬ ‫המקורית‬ ‫הבעיה‬ ‫את‬,‫וכך‬
‫לפתור‬ ‫יודעים‬ ‫שאותה‬ ‫טריוויאלית‬ ‫קטנה‬ ‫לבעיה‬ ‫שמגיעים‬ ‫עד‬ ‫ממשיכים‬
‫הדגמה‬
‫אחר‬ ‫בכתיב‬:
Factorial(n)=n*factorial(n-1)
Factorial(1)=1
‫רקורסיה‬ ‫משוואת‬
‫עצירה‬ ‫תנאי‬
‫דוגמא‬2:
‫חשב‬:S(n)=0+1+2+3+4+….+n‫רקורסיה‬ ‫בעזרת‬
‫עצירה‬ ‫תנאי‬:S(0)=0
‫רקורסיה‬ ‫משוואת‬:S(n)=S(n-1)+n
‫רקורסיה‬ ‫ללא‬ ‫פתרון‬:
‫רקורסיבי‬ ‫לא‬ ‫מימוש‬
‫השמות‬ ‫מרחב‬ ‫מהו‬
•‫בפייתון‬‫השמות‬ ‫מרחב‬‫לאובייקטים‬ ‫משתנים‬ ‫שמות‬ ‫בין‬ ‫מיפוי‬ ‫טבלת‬ ‫הוא‬
•‫מודול‬ ‫לכל‬ ‫בפייתון‬,‫פונקציה‬ ‫לכל‬,‫מחלקה‬ ‫לכל‬(‫נלמד‬ ‫לא‬)‫משלו‬ ‫השמות‬ ‫מרחב‬ ‫יש‬
•‫נקרא‬ ‫כזה‬ ‫השמות‬ ‫מרחב‬‫לוקאלי‬‫מסוים‬ ‫לאובייקט‬ ‫משויך‬ ‫הוא‬ ‫כי‬:‫פונקציה‬,‫וכו‬ ‫מודול‬'
•‫הסתיים‬ ‫הפונקציה‬ ‫של‬ ‫ביצוע‬ ‫וכאשר‬ ‫עבורה‬ ‫מיוצר‬ ‫השמות‬ ‫מרחב‬ ‫לפונקציה‬ ‫קוראים‬ ‫אנו‬ ‫כאשר‬
‫נמחק‬ ‫המרחב‬
•‫גלובאלי‬ ‫שמות‬ ‫למרחב‬ ‫ושייכים‬ ‫גלובאליים‬ ‫נקראים‬ ‫תוכנה‬ ‫של‬ ‫ראשי‬ ‫בגוף‬ ‫שמוגדרים‬ ‫משתנים‬
Namespace
x 12
z 22
y “Hello”
‫ההכרה‬ ‫תחום‬
•‫בקוד‬ ‫מקום‬ ‫מכל‬ ‫משתנה‬ ‫לכל‬ ‫לגשת‬ ‫ניתן‬ ‫לא‬
•‫בו‬ ‫להשתמש‬ ‫וניתן‬ ‫קיים‬ ‫המשתנה‬ ‫שבו‬ ‫קוד‬ ‫של‬ ‫חלק‬ ‫הוא‬ ‫משתנה‬ ‫של‬ ‫ההכרה‬ ‫תחום‬
•‫לפי‬ ‫המשתנה‬ ‫הגדרת‬ ‫את‬ ‫מחפש‬ ‫תמיד‬ ‫הוא‬ ‫המשתנה‬ ‫מוגדר‬ ‫איפו‬ ‫מחפש‬ ‫פייתון‬ ‫כאשר‬
‫הבא‬ ‫סדר‬:
Local->Enclosed->Global->Built-in
•‫מודול‬ ‫או‬ ‫פונקציה‬ ‫בתוך‬ ‫השמות‬ ‫מרחב‬ ‫הוא‬ ‫לוקאלי‬ ‫השמות‬ ‫מרחב‬
•Local:‫המודול‬ ‫או‬ ‫הפונקציה‬ ‫בתוך‬ ‫לוקלי‬ ‫הוא‬ ‫מודול‬ ‫או‬ ‫פונקציה‬ ‫בתוך‬ ‫המוגדר‬ ‫משתנה‬ ‫כל‬
•Enclosed‫משתמשים‬ ‫שבה‬ ‫פונקציה‬ ‫מוגדרת‬ ‫שבה‬ ‫הפונקציה‬ ‫של‬ ‫השמות‬ ‫מרחב‬ ‫הוא‬
‫במשתנה‬
•Global‫התוכנה‬ ‫כל‬ ‫של‬ ‫השמות‬ ‫מרחב‬ ‫הוא‬
•Built-In‫פייתון‬ ‫של‬ ‫השמורים‬ ‫המשתנים‬ ‫הפונקציות‬ ‫כל‬ ‫עם‬ ‫פייתון‬ ‫של‬ ‫השמות‬ ‫מרחב‬
‫ב‬ ‫שימוש‬-global
‫מוטיבציה‬:‫דוגמא‬immutable mutable
Mutable  Immutable types
Int, float, bool immutable
str immutable
tuple immutable
List mutable
dictionary mutable
set mutable
frozenset immutable
Aliasing
•Aliasing‫משתנים‬ ‫שתי‬ ‫כאשר‬ ‫תופעה‬ ‫היא‬‫מצביעים‬‫ערך‬ ‫אותו‬ ‫על‬
‫לדוגמא‬:
‫של‬ ‫מהערכים‬ ‫אחד‬ ‫את‬ ‫נשנה‬ ‫כאשר‬ ‫יקרא‬ ‫מה‬-y?
Immutable objects as function arguments
•‫להבין‬ ‫חשוב‬‫של‬ ‫פרמטר‬ ‫וגם‬ ‫הארגומנט‬ ‫גם‬ ‫אזי‬ ‫ארגומנט‬ ‫לפונקציה‬ ‫מעבירים‬ ‫שכאשר‬
‫ערך‬ ‫אותו‬ ‫על‬ ‫מצביעים‬ ‫הפונקציה‬(aliasing)
Conway's game of life
‫משחק‬ ‫לוח‬ ‫לייצוג‬ ‫נתונים‬ ‫מבנה‬ ‫בחירת‬‫טריק‬
•‫הבא‬ ‫דור‬ ‫של‬ ‫לוח‬ ‫נבנה‬ ‫אנו‬ ‫כאשר‬,‫לבחון‬ ‫נצטרך‬ ‫משבצת‬ ‫כל‬ ‫עבור‬8‫שכנים‬
‫שלה‬
•‫בעיה‬ ‫יש‬ ‫אבל‬:‫יש‬ ‫משבצת‬ ‫לכל‬ ‫לא‬8‫שכנים‬
•‫הבא‬ ‫בטריק‬ ‫נעזר‬ ‫בפתרון‬ ‫הכלליות‬ ‫את‬ ‫לשבור‬ ‫לא‬ ‫מנת‬ ‫על‬:‫לוח‬ ‫לייצר‬ ‫במקום‬
‫בגודל‬n*n‫בגודל‬ ‫לוח‬ ‫נייצר‬n+2‫על‬n+2‫כולה‬ ‫תהי‬ ‫החיצונית‬ ‫המעטפת‬ ‫כאשר‬
False
8
8
8
http://www.codeskulptor.org/#user43_uDT5C2tdqH_0.py
Self-Avoiding Random Walk
•‫שלה‬ ‫פתרון‬ ‫ידוע‬ ‫שלא‬ ‫בעיה‬ ‫נכיר‬ ‫אנו‬ ‫היום‬(‫קיים‬ ‫לא‬ ‫גם‬ ‫הפתרון‬ ‫להיות‬ ‫יכול‬)
•‫בגדול‬ ‫משבצות‬ ‫לוח‬ ‫נתון‬n*n(‫משבצות‬ ‫עיר‬)
•‫קואורדינטות‬ ‫עם‬ ‫ממשבצת‬ ‫כלומר‬ ‫העיר‬ ‫מאמצע‬ ‫שלו‬ ‫טיול‬ ‫מתחיל‬ ‫הכלב‬n/2*n/2
•‫מ‬ ‫אחד‬ ‫אחיד‬ ‫אקראי‬ ‫באופן‬ ‫בוחר‬ ‫הכלב‬ ‫צעד‬ ‫כל‬-4‫כיוונים‬(‫למעלה‬,‫למעטה‬,
‫שמולא‬,‫ימינה‬)‫זו‬ ‫במשבצת‬ ‫ביקר‬ ‫לא‬ ‫הוא‬ ‫שעדיין‬ ‫בתנאי‬ ‫לשם‬ ‫וזז‬
•‫אחד‬ ‫מפעם‬ ‫יותר‬ ‫משבצת‬ ‫באותה‬ ‫לבקר‬ ‫לכלב‬ ‫אסור‬(‫הוא‬ ‫איפה‬ ‫זוכר‬ ‫הכלב‬ ‫כלומר‬
‫היה‬)
•‫מ‬ ‫אחד‬ ‫ייתכן‬ ‫אזי‬-2:
•‫העיר‬ ‫לשפת‬ ‫מגיע‬ ‫הכלב‬–‫ניצחון‬
•‫להתקדם‬ ‫לאן‬ ‫לכלב‬ ‫אין‬–‫הפסד‬
‫בפייתון‬ ‫בקוד‬ ‫טעויות‬ ‫של‬ ‫שונים‬ ‫סוגים‬
‫בפייתון‬ ‫טעויות‬ ‫סוגים‬ ‫מספר‬ ‫קיים‬:
• Syntax error
• Semantic error  Logic error
Syntax Error
•‫טעויות‬ ‫של‬ ‫הנפוצים‬ ‫מסוגים‬ ‫אחד‬
•‫חוקים‬ ‫לפי‬ ‫לא‬ ‫קוד‬ ‫כותבים‬ ‫אנו‬ ‫כאשר‬ ‫קוראת‬ ‫הטעות‬(‫דקדוק‬ ‫חוקי‬)‫פייתון‬ ‫של‬
Semantic Error
•‫המתכנת‬ ‫שהתכוון‬ ‫מה‬ ‫לא‬ ‫עושה‬ ‫קוד‬ ‫כאשר‬ ‫שמופיעה‬ ‫טעות‬
‫בחריגות‬ ‫לשימוש‬ ‫ראשונה‬ ‫דוגמא‬
‫מנגנון‬ ‫של‬ ‫עבודה‬ ‫עקרונות‬:try … except….
.1‫בין‬ ‫קוד‬try‫ו‬-except‫מתבצע‬
.2‫שלב‬ ‫ביצוע‬ ‫בזמן‬ ‫אם‬(1)‫של‬ ‫הבלוקים‬ ‫כל‬ ‫אזי‬ ‫טעות‬ ‫אין‬except‫מתבצעים‬ ‫לא‬
‫בלוק‬ ‫של‬ ‫קוד‬ ‫ומתבצע‬else
.3‫של‬ ‫ביצוע‬ ‫בזמן‬ ‫טעות‬ ‫יש‬ ‫אם‬(1)‫ראשונה‬ ‫טעות‬ ‫יש‬ ‫שבה‬ ‫קוד‬ ‫משורת‬ ‫החל‬ ‫אזי‬
‫בלוק‬(1)‫של‬ ‫וקוד‬ ‫להתבצע‬ ‫מפסיק‬except‫מתבצע‬ ‫מתאים‬
.4except‫שלה‬ ‫בטיפוס‬ ‫חשיבות‬ ‫ללא‬ ‫כלשהי‬ ‫חריגה‬ ‫עבור‬ ‫מתבצע‬ ‫חריגה‬ ‫של‬ ‫שם‬ ‫ללא‬
.5finally‫מתבצע‬‫תמיד‬,‫לא‬ ‫או‬ ‫חריגה‬ ‫הייתה‬ ‫האם‬ ‫תלות‬ ‫ללא‬
‫עם‬ ‫עבודה‬ ‫בעת‬ ‫בחריגות‬ ‫טיפול‬ ‫במנגנון‬ ‫לשימוש‬ ‫דוגמא‬
‫קבצים‬
Tower of Hanoi
‫האנוי‬ ‫מגדלי‬ ‫בעיית‬ ‫לפתרון‬ ‫אלגוריתם‬
•‫הבעיה‬ ‫את‬ ‫שפותר‬ ‫אלגוריתם‬ ‫פתח‬
•‫לפתרון‬ ‫ניגש‬ ‫איך‬?
•‫פשוטים‬ ‫ממקרים‬ ‫נתחיל‬:
•‫דיסקים‬ ‫שלושה‬:‫ל‬ ‫גדול‬ ‫דיסק‬ ‫להעביר‬ ‫חייבים‬-C‫דיסקים‬ ‫משתי‬ ‫מגדל‬ ‫להעביר‬ ‫יש‬ ‫כך‬ ‫לשם‬
‫ל‬ ‫עליונים‬-B(‫פתרנו‬ ‫כבר‬ ‫כזו‬ ‫בעיה‬)‫מ‬ ‫הגדול‬ ‫הדיסק‬ ‫להעביר‬ ‫ואז‬-A‫ל‬-C(‫קל‬)‫מגדל‬ ‫להעביר‬ ‫ואז‬
‫מ‬ ‫דיסקים‬ ‫שתי‬ ‫עם‬-B‫ל‬-A(‫פתרנו‬ ‫כבר‬ ‫כזו‬ ‫בעיה‬)
• Solve(3,a,b,c):
• Solve(2,a,c,b)
• Solve(1,a,b,c)
• Solve(2,b,a,c)
‫מקור‬ ‫יעד‬
‫מיקום‬
‫זמני‬
‫המגדלים‬ ‫בעיית‬ ‫של‬ ‫פתרון‬
‫דינמי‬ ‫תכנות‬
•‫ספירה‬ ‫או‬ ‫אופטימיזציה‬ ‫מבעיות‬ ‫חלק‬ ‫לפתור‬ ‫המאפשרת‬ ‫שיטה‬ ‫היא‬ ‫דינמי‬ ‫תכנות‬
•‫חזקה‬ ‫די‬ ‫שני‬ ‫מצעד‬ ‫פשוטה‬ ‫יחסית‬ ‫אחד‬ ‫מצעד‬ ‫שיטה‬
•‫אופטימיזציה‬ ‫בעיית‬‫את‬ ‫למזער‬ ‫או‬ ‫למקסם‬ ‫במטרה‬ ‫לפתור‬ ‫רוצים‬ ‫שאנו‬ ‫בעיה‬ ‫היא‬
‫מטרה‬ ‫פונקציית‬:
•‫רווח‬ ‫מקסימום‬
•‫הוצאות‬ ‫מינימום‬
•‫ספירה‬ ‫בעיית‬:‫בעלי‬ ‫אובייקטים‬ ‫כמות‬ ‫לספור‬ ‫רוצים‬ ‫אנו‬ ‫שבה‬ ‫קומבינטורית‬ ‫בעיה‬
‫נתונה‬ ‫תכונה‬
‫עודף‬ ‫החזרת‬ ‫בעיית‬1
•‫ערך‬ ‫בעלות‬ ‫מטבעות‬ ‫קיימות‬ ‫מסוימת‬ ‫במדינה‬1,2,5
•‫עודף‬ ‫להחזיר‬ ‫ניתן‬ ‫אפשרויות‬ ‫בכמה‬ ‫לדעת‬ ‫רוצים‬ ‫אנו‬N,‫מטבעות‬ ‫בין‬ ‫הסדר‬ ‫כאשר‬
‫חשוב‬ ‫כן‬ ‫בעודף‬
•‫ב‬ ‫נסמם‬-F(N)‫עודף‬ ‫להחזיר‬ ‫ניתן‬ ‫שבעזרתן‬ ‫האפשרויות‬ ‫כמות‬ ‫את‬N
•‫את‬ ‫לחשב‬ ‫איך‬ ‫לדעת‬ ‫שלנו‬ ‫מטרה‬F(N)
•‫עבור‬ ‫נוסחה‬ ‫לכתוב‬ ‫נתחיל‬F(N),‫ש‬ ‫נניח‬-N‫מ‬ ‫גדול‬-5,‫עודף‬ ‫להחזיר‬ ‫אפשר‬ ‫איך‬N?‫יש‬
‫ראשון‬ ‫ממטבע‬ ‫להתחיל‬,‫או‬ ‫להיות‬ ‫יכול‬ ‫ראשון‬ ‫מטבע‬1‫או‬2‫או‬5,‫אותו‬ ‫שנחזיר‬ ‫לאחר‬
‫העודף‬ ‫שאר‬ ‫להחזיר‬ ‫נצטרך‬F(N-1)‫או‬F(N-2)‫או‬F(N-5)‫בהתאמה‬
•‫נסיק‬ ‫מכאן‬(‫הסכום‬ ‫עקרון‬:)F(N)=F(N-1)+F(N-2)+F(N-5)‫עבור‬N>5
‫עודף‬ ‫החזרת‬ ‫בעיית‬1
•‫אלגוריתם‬:
•‫אתחול‬:‫שבה‬ ‫ריקה‬ ‫רשימה‬ ‫ניקח‬F‫של‬ ‫חישוב‬ ‫התוצאות‬ ‫כל‬ ‫את‬ ‫נשמר‬F(n),‫נגדיר‬
F[1]=F[0]=1
•‫איטרציות‬:‫לכל‬i=2,3,…,N‫נחשב‬F(i)‫שקיבלנו‬ ‫נוסחה‬ ‫לפי‬
•‫נחזיר‬F(N)
Debugging
‫רפסון‬ ‫ניוטון‬ ‫ששיטת‬ ‫שורש‬ ‫חישוב‬
•‫דרכים‬ ‫במספר‬ ‫חיובי‬ ‫ממספר‬ ‫שורש‬ ‫לחשב‬ ‫אפשר‬
•‫רפסון‬ ‫ניוטון‬ ‫שיטת‬ ‫הנקראת‬ ‫איטרטיבית‬ ‫שיטה‬ ‫היא‬ ‫מהן‬ ‫אחד‬
•‫הרקורסיה‬ ‫בעזרת‬ ‫אותה‬ ‫ונממש‬ ‫השיטה‬ ‫את‬ ‫נלמד‬ ‫היום‬
•‫ממספר‬ ‫שורש‬ ‫לחישוב‬ ‫אלגוריתם‬A
•‫התחלתי‬ ‫מניחוש‬ ‫נתחיל‬x.
•‫עוד‬ ‫כל‬abs(x^2-a)‫מ‬ ‫גדול‬-epsilon‫ל‬ ‫חדש‬ ‫ערך‬ ‫נחשב‬-x‫הבאה‬ ‫נוסחה‬ ‫בעזרת‬:x=1/2(x+a/x)
http://www.codeskulptor.org/#user44_gVh7uI6o7fOJqq4.py
‫עודף‬ ‫החזרת‬
•‫עודף‬ ‫להחזיר‬ ‫אפשרויות‬ ‫כל‬ ‫עם‬ ‫רשימה‬ ‫שמחזירה‬ ‫רקורסיבית‬ ‫פונקציה‬ ‫כתבו‬
N‫מטבעות‬ ‫בעזרת‬1,2,5
http://www.codeskulptor.org/#user44_4d4p0BUt7OJH0YZ_0.py
‫ביותר‬ ‫הגדול‬ ‫המשותף‬ ‫המחלק‬ ‫חישוב‬
If q=0 then gcd(p,q)=p
If p>q then gcd(p,q)=gcd(q,p%q)
‫תמורות‬-permutation
•‫כתבו‬‫רקורסיבית‬ ‫פונקציה‬‫שמקבלת‬‫חיובי‬ ‫שלם‬ ‫מספר‬n‫ומחזירה‬‫כל‬ ‫רשימת‬
‫מ‬ ‫מספרים‬ ‫של‬ ‫התמורות‬-1‫עד‬n
‫השיעור‬ ‫של‬ ‫מטרה‬
•‫אוסף‬ ‫היא‬ ‫קבוצה‬(‫סדר‬ ‫אין‬)‫איברים‬ ‫של‬,‫יותר‬ ‫לא‬ ‫בקבוצה‬ ‫מופיע‬ ‫איבר‬ ‫כל‬ ‫כאשר‬
‫אחד‬ ‫מפעם‬
•‫לשינוי‬ ‫ניתן‬ ‫שלא‬ ‫מטיפוס‬ ‫להיות‬ ‫חייבים‬ ‫בקבוצה‬ ‫האיברים‬
‫קבוצות‬ ‫הגדרת‬
‫קבוצות‬ ‫של‬ ‫מתודות‬
‫קבוצות‬ ‫על‬ ‫לפעולות‬ ‫דומות‬ ‫המתודות‬
‫הסתברות‬ ‫בקורס‬ ‫אותם‬ ‫שלמדנו‬
‫של‬ ‫מנגנון‬ ‫בעזרת‬ ‫קבוצה‬ ‫הגדרת‬Set
Comprehension
•‫של‬ ‫למנגנון‬ ‫בדומה‬ListComprehension‫קבוצות‬ ‫גם‬ ‫להגדיר‬ ‫ניתן‬(‫וגם‬
‫מילונים‬)
‫תרגיל‬:‫ברשימה‬ ‫שונות‬ ‫מילים‬ ‫כמות‬
•‫פונקציה‬ ‫כתב‬‫המקבלת‬‫מחרוזות‬ ‫של‬ ‫רשימה‬‫ומחזירה‬‫שונות‬ ‫מילים‬ ‫כמות‬
‫ברשימה‬
•‫אלגוריתם‬:
•‫לקבוצה‬ ‫אותה‬ ‫ונוסיף‬ ‫ברשימה‬ ‫מילה‬ ‫כל‬ ‫על‬ ‫נעבור‬
•‫קבוצה‬ ‫של‬ ‫גודל‬ ‫נחזיר‬
‫יותר‬ ‫לדעת‬ ‫רוצים‬?
• https://www.programiz.com/python-programming/set
‫קפואות‬ ‫קבוצות‬
•‫בפייתון‬ ‫לשינוי‬ ‫שניתן‬ ‫טיפוס‬ ‫הן‬ ‫קבוצות‬
•‫לשינוי‬ ‫ניתנות‬ ‫שלא‬ ‫קבוצות‬ ‫של‬ ‫טיפוס‬ ‫קיים‬ ‫בפייתון‬frozenset
‫מסכמת‬ ‫שאלה‬
•‫באורך‬ ‫שונות‬ ‫מילים‬ ‫כמה‬6‫מילה‬ ‫של‬ ‫מאותיות‬ ‫להרכיב‬ ‫ניתן‬MATHEMATICA
•‫קומבינטורית‬ ‫שאלה‬:‫כפל‬ ‫וכלל‬ ‫סכום‬ ‫בכלל‬ ‫נעזר‬
•‫מורכב‬ ‫טיפה‬ ‫פתרון‬,‫עצמינו‬ ‫את‬ ‫לבדוק‬ ‫כדי‬ ‫בפייתון‬ ‫נעזר‬
•‫אלגוריתם‬:‫בגודל‬ ‫הפרמוטציות‬ ‫כל‬ ‫נייצר‬6‫אותם‬ ‫ונשמור‬ ‫המילה‬ ‫של‬ ‫מאותיות‬
‫בקבוצה‬,‫קבוצה‬ ‫של‬ ‫גודל‬ ‫נחזיר‬
2223212211311121111111111
29730
!2!2!2
!6
!2!3
!6
1
5
1
2
1
1
!2!2
!6
2
5
2
3
!3
!6
3
6
1
1
!2
!6
4
6
1
3
!6
6
7




























































‫עצירה‬ ‫תנאי‬
‫קואורדינטות‬ ‫חישוב‬
‫לציור‬
‫ציור‬H‫מרכזי‬
‫רקורסיביות‬ ‫קריאות‬
‫לפונקציה‬ ‫קריאות‬
‫סיבוכיות‬-complexity
•‫היא‬ ‫ומאלגוריתמים‬ ‫שלנו‬ ‫מקוד‬ ‫ביותר‬ ‫החשובה‬ ‫הדרישה‬‫חוקי‬ ‫קלט‬ ‫שלכל‬
‫האלגוריתם‬‫תמיד‬‫נכונה‬ ‫תשובה‬ ‫מחזיר‬
•‫ולתחזוקה‬ ‫להבנה‬ ‫קל‬ ‫יהי‬ ‫שלנו‬ ‫שהקוד‬ ‫רצינו‬ ‫גם‬ ‫בנוסף‬
•‫יעילות‬ ‫דרישת‬‫מאוד‬ ‫וחשובה‬ ‫קריטית‬ ‫דרישה‬ ‫גם‬ ‫היא‬ ‫היום‬ ‫נדבר‬ ‫שעלינו‬
•‫פיבונאצ‬ ‫לסדרת‬ ‫מימושים‬ ‫שתי‬ ‫ראינו‬'‫י‬:‫כבר‬ ‫ושני‬ ‫שניה‬ ‫חלקי‬ ‫במשך‬ ‫מהר‬ ‫רץ‬ ‫אחד‬
‫עבור‬ ‫סביר‬ ‫בזמן‬ ‫עוצר‬ ‫לא‬N=64
‫סיבוכיות‬-complexity
•‫להבין‬ ‫נוכל‬ ‫סיבוכיות‬ ‫ניתוח‬ ‫בעזרת‬:
•‫יעילה‬ ‫יותר‬ ‫בצורה‬ ‫קוד‬ ‫לממש‬ ‫איך‬
•‫מתי‬ ‫להחליט‬,‫ולמה‬,‫ולהשתמש‬ ‫לבחור‬ ‫כדאי‬ ‫נתונים‬ ‫מבנה‬ ‫ובאיזה‬
•‫ראשון‬ ‫במקום‬ ‫תמיד‬ ‫כמעת‬ ‫היא‬ ‫קוד‬ ‫של‬ ‫נכונות‬ ‫שדרישת‬ ‫לזכור‬ ‫כדאי‬,‫יעילות‬ ‫גם‬ ‫אבל‬
‫חשובה‬ ‫מאוד‬
•‫החשובות‬ ‫השאלות‬:
•‫רץ‬ ‫שלנו‬ ‫קוד‬ ‫זמן‬ ‫כמה‬?–‫ריצה‬ ‫זמן‬ ‫סיבוכיות‬ ‫בשאלה‬ ‫נתרכז‬ ‫בעיקר‬ ‫אנו‬
•‫שלנו‬ ‫קוד‬ ‫משתמש‬ ‫זיכרון‬ ‫בכמה‬?
•‫שלנו‬ ‫קוד‬ ‫ביצועי‬ ‫לשפר‬ ‫אפשר‬ ‫האם‬?‫ואיך‬?
•‫דרישת‬"‫חשובה‬ ‫גם‬ ‫לתחזוקה‬ ‫וקל‬ ‫קריא‬ ‫קוד‬"‫במקום‬ ‫באה‬ ‫היא‬ ‫המקרים‬ ‫ברוב‬ ‫אבל‬
‫שלישי‬
‫בקלט‬ ‫תלויה‬ ‫פעולות‬ ‫כמות‬
•‫ב‬ ‫גישה‬,'‫טובה‬ ‫גישה‬ ‫היא‬
•‫בקלט‬ ‫תלויה‬ ‫ריצה‬ ‫פעולות‬ ‫כמות‬ ‫אם‬,‫אותה‬ ‫נמדוד‬ ‫איך‬?
•‫גישות‬ ‫מספר‬ ‫קיים‬:
•‫מהיר‬ ‫הכי‬ ‫ריצה‬ ‫זמן‬‫אורך‬ ‫באותו‬ ‫הקלטים‬ ‫כל‬ ‫בין‬best case
•‫אורך‬ ‫באותו‬ ‫הקלטים‬ ‫כל‬ ‫בין‬ ‫ממוצע‬ ‫ריצה‬ ‫זמן‬average case
•‫אורך‬ ‫באותו‬ ‫הקלטים‬ ‫כל‬ ‫בין‬ ‫ביותר‬ ‫הגרוע‬ ‫במקרה‬ ‫ריצה‬ ‫זמן‬worst case
•‫בגודל‬ ‫רשימה‬ ‫עבור‬ ‫קודמת‬ ‫מדוגמא‬ ‫בלולאה‬ ‫ליניארי‬ ‫חיפוש‬ ‫עבור‬n‫נקבל‬:
•best case:‫פעולה‬1
•average case:n/2‫פעולות‬
•:worst casen‫פעולות‬
‫תרגיל‬
•‫קלט‬ ‫ביותר‬ ‫הגרוע‬ ‫במקרה‬ ‫התוכנה‬ ‫תעבוד‬ ‫צעדים‬ ‫כמה‬n:
•‫תשובה‬:5n+2000~5n~c*n
•O(n)

Contenu connexe

Similaire à מבוא לתכנות מדעי: פייתון הרצאה 13

תכנות מדעי: פייתון: הרצאה 8: 2017
תכנות מדעי: פייתון: הרצאה 8:  2017תכנות מדעי: פייתון: הרצאה 8:  2017
תכנות מדעי: פייתון: הרצאה 8: 2017Igor Kleiner
 
מבוא לתכנות מדעי פייתון הרצאה 2 חלק 2 Python
מבוא לתכנות מדעי פייתון הרצאה 2 חלק  2 Pythonמבוא לתכנות מדעי פייתון הרצאה 2 חלק  2 Python
מבוא לתכנות מדעי פייתון הרצאה 2 חלק 2 PythonIgor Kleiner
 
מבוא לתכנות מדעי פייתון הרצאה 2 חלק 2 Python
מבוא לתכנות מדעי פייתון הרצאה 2 חלק 2 Pythonמבוא לתכנות מדעי פייתון הרצאה 2 חלק 2 Python
מבוא לתכנות מדעי פייתון הרצאה 2 חלק 2 PythonIgor Kleiner
 
4 sql explore סודות האופטימייזר
4   sql explore סודות האופטימייזר4   sql explore סודות האופטימייזר
4 sql explore סודות האופטימייזרsqlserver.co.il
 
מבוא לתכנות מדעי פייתון הרצאה 2 חלק 4 Python
מבוא לתכנות מדעי פייתון הרצאה 2 חלק 4 Pythonמבוא לתכנות מדעי פייתון הרצאה 2 חלק 4 Python
מבוא לתכנות מדעי פייתון הרצאה 2 חלק 4 PythonIgor Kleiner
 
C# .net home work1 mycode overview
C# .net home work1 mycode overviewC# .net home work1 mycode overview
C# .net home work1 mycode overviewDoron Raifman
 
מערכות לומדות פגישה 2 חלק 9 R
מערכות לומדות פגישה 2 חלק 9 Rמערכות לומדות פגישה 2 חלק 9 R
מערכות לומדות פגישה 2 חלק 9 RIgor Kleiner
 
תכנות מדעי: פייתון: הרצאה 6: קבצים, רשימות
תכנות מדעי: פייתון: הרצאה 6: קבצים, רשימותתכנות מדעי: פייתון: הרצאה 6: קבצים, רשימות
תכנות מדעי: פייתון: הרצאה 6: קבצים, רשימותIgor Kleiner
 
תכנות מדעי: פייתון: הרצאה 10: : תחום הכרעה
תכנות מדעי: פייתון: הרצאה 10: : תחום הכרעהתכנות מדעי: פייתון: הרצאה 10: : תחום הכרעה
תכנות מדעי: פייתון: הרצאה 10: : תחום הכרעהIgor Kleiner
 
Analytic combinatoric
Analytic combinatoricAnalytic combinatoric
Analytic combinatoricIgor Kleiner
 
פייתון 2.7 הרצאה 9 חלק 1 : מודולים
פייתון 2.7 הרצאה 9 חלק 1 : מודוליםפייתון 2.7 הרצאה 9 חלק 1 : מודולים
פייתון 2.7 הרצאה 9 חלק 1 : מודוליםIgor Kleiner
 
Stack overflow - by avi halif
Stack overflow - by avi halifStack overflow - by avi halif
Stack overflow - by avi halifAviHalif
 
מבוא לתכנות מדעי פייתון הרצאה 3 חלק 2 Python
מבוא לתכנות מדעי פייתון הרצאה 3 חלק 2 Pythonמבוא לתכנות מדעי פייתון הרצאה 3 חלק 2 Python
מבוא לתכנות מדעי פייתון הרצאה 3 חלק 2 PythonIgor Kleiner
 
מבוא לתכנות מדעי פייתון הרצאה4 חלק 1 Python
מבוא לתכנות מדעי פייתון הרצאה4  חלק 1 Pythonמבוא לתכנות מדעי פייתון הרצאה4  חלק 1 Python
מבוא לתכנות מדעי פייתון הרצאה4 חלק 1 PythonIgor Kleiner
 
שיעור 1 - מדעי המחשב כיתה ח עורך פייתון וקלט פלט רותם מלכי 28.5.pptx
שיעור 1 - מדעי המחשב כיתה ח עורך פייתון וקלט פלט רותם מלכי 28.5.pptxשיעור 1 - מדעי המחשב כיתה ח עורך פייתון וקלט פלט רותם מלכי 28.5.pptx
שיעור 1 - מדעי המחשב כיתה ח עורך פייתון וקלט פלט רותם מלכי 28.5.pptxssuser12810c
 
מהי אנליזה סטטית?
מהי אנליזה סטטית?מהי אנליזה סטטית?
מהי אנליזה סטטית?TrinitySB
 
פייתון: הרצאה 1
פייתון: הרצאה 1פייתון: הרצאה 1
פייתון: הרצאה 1Igor Kleiner
 

Similaire à מבוא לתכנות מדעי: פייתון הרצאה 13 (20)

תכנות מדעי: פייתון: הרצאה 8: 2017
תכנות מדעי: פייתון: הרצאה 8:  2017תכנות מדעי: פייתון: הרצאה 8:  2017
תכנות מדעי: פייתון: הרצאה 8: 2017
 
מבוא לתכנות מדעי פייתון הרצאה 2 חלק 2 Python
מבוא לתכנות מדעי פייתון הרצאה 2 חלק  2 Pythonמבוא לתכנות מדעי פייתון הרצאה 2 חלק  2 Python
מבוא לתכנות מדעי פייתון הרצאה 2 חלק 2 Python
 
מבוא לתכנות מדעי פייתון הרצאה 2 חלק 2 Python
מבוא לתכנות מדעי פייתון הרצאה 2 חלק 2 Pythonמבוא לתכנות מדעי פייתון הרצאה 2 חלק 2 Python
מבוא לתכנות מדעי פייתון הרצאה 2 חלק 2 Python
 
4 sql explore סודות האופטימייזר
4   sql explore סודות האופטימייזר4   sql explore סודות האופטימייזר
4 sql explore סודות האופטימייזר
 
מבוא לתכנות מדעי פייתון הרצאה 2 חלק 4 Python
מבוא לתכנות מדעי פייתון הרצאה 2 חלק 4 Pythonמבוא לתכנות מדעי פייתון הרצאה 2 חלק 4 Python
מבוא לתכנות מדעי פייתון הרצאה 2 חלק 4 Python
 
C# .net home work1 mycode overview
C# .net home work1 mycode overviewC# .net home work1 mycode overview
C# .net home work1 mycode overview
 
Recitation01.pptx
Recitation01.pptxRecitation01.pptx
Recitation01.pptx
 
מערכות לומדות פגישה 2 חלק 9 R
מערכות לומדות פגישה 2 חלק 9 Rמערכות לומדות פגישה 2 חלק 9 R
מערכות לומדות פגישה 2 חלק 9 R
 
תכנות מדעי: פייתון: הרצאה 6: קבצים, רשימות
תכנות מדעי: פייתון: הרצאה 6: קבצים, רשימותתכנות מדעי: פייתון: הרצאה 6: קבצים, רשימות
תכנות מדעי: פייתון: הרצאה 6: קבצים, רשימות
 
תכנות מדעי: פייתון: הרצאה 10: : תחום הכרעה
תכנות מדעי: פייתון: הרצאה 10: : תחום הכרעהתכנות מדעי: פייתון: הרצאה 10: : תחום הכרעה
תכנות מדעי: פייתון: הרצאה 10: : תחום הכרעה
 
Analytic combinatoric
Analytic combinatoricAnalytic combinatoric
Analytic combinatoric
 
פייתון 2.7 הרצאה 9 חלק 1 : מודולים
פייתון 2.7 הרצאה 9 חלק 1 : מודוליםפייתון 2.7 הרצאה 9 חלק 1 : מודולים
פייתון 2.7 הרצאה 9 חלק 1 : מודולים
 
Stack overflow - by avi halif
Stack overflow - by avi halifStack overflow - by avi halif
Stack overflow - by avi halif
 
Java - OOP - Exceptions Handling
Java - OOP - Exceptions HandlingJava - OOP - Exceptions Handling
Java - OOP - Exceptions Handling
 
מבוא לתכנות מדעי פייתון הרצאה 3 חלק 2 Python
מבוא לתכנות מדעי פייתון הרצאה 3 חלק 2 Pythonמבוא לתכנות מדעי פייתון הרצאה 3 חלק 2 Python
מבוא לתכנות מדעי פייתון הרצאה 3 חלק 2 Python
 
Cecile
CecileCecile
Cecile
 
מבוא לתכנות מדעי פייתון הרצאה4 חלק 1 Python
מבוא לתכנות מדעי פייתון הרצאה4  חלק 1 Pythonמבוא לתכנות מדעי פייתון הרצאה4  חלק 1 Python
מבוא לתכנות מדעי פייתון הרצאה4 חלק 1 Python
 
שיעור 1 - מדעי המחשב כיתה ח עורך פייתון וקלט פלט רותם מלכי 28.5.pptx
שיעור 1 - מדעי המחשב כיתה ח עורך פייתון וקלט פלט רותם מלכי 28.5.pptxשיעור 1 - מדעי המחשב כיתה ח עורך פייתון וקלט פלט רותם מלכי 28.5.pptx
שיעור 1 - מדעי המחשב כיתה ח עורך פייתון וקלט פלט רותם מלכי 28.5.pptx
 
מהי אנליזה סטטית?
מהי אנליזה סטטית?מהי אנליזה סטטית?
מהי אנליזה סטטית?
 
פייתון: הרצאה 1
פייתון: הרצאה 1פייתון: הרצאה 1
פייתון: הרצאה 1
 

Plus de Igor Kleiner

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

Plus de 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: דבגינג + תכנות דינמי
 
מבוא לתכנות מדעי: פייתון: הרצאה 9: 2017
מבוא לתכנות מדעי: פייתון: הרצאה 9: 2017מבוא לתכנות מדעי: פייתון: הרצאה 9: 2017
מבוא לתכנות מדעי: פייתון: הרצאה 9: 2017
 
תכנות מדעי: פייתון : הרצאה 7: 2017
תכנות מדעי: פייתון : הרצאה 7: 2017תכנות מדעי: פייתון : הרצאה 7: 2017
תכנות מדעי: פייתון : הרצאה 7: 2017
 
למידה ממוכנת פגישה 8
למידה ממוכנת פגישה 8 למידה ממוכנת פגישה 8
למידה ממוכנת פגישה 8
 
מערכות לומדות פגישה 7-1 יער אקראי
מערכות לומדות פגישה 7-1 יער אקראימערכות לומדות פגישה 7-1 יער אקראי
מערכות לומדות פגישה 7-1 יער אקראי
 
מערכות לומדות תרגול 3 עצים
מערכות לומדות תרגול 3 עציםמערכות לומדות תרגול 3 עצים
מערכות לומדות תרגול 3 עצים
 
מערכות לומדות פגישה 6
מערכות לומדות פגישה 6מערכות לומדות פגישה 6
מערכות לומדות פגישה 6
 
מערכות לומדות: תרגילי כיתה 4 ו-5
מערכות לומדות: תרגילי כיתה 4 ו-5מערכות לומדות: תרגילי כיתה 4 ו-5
מערכות לומדות: תרגילי כיתה 4 ו-5
 
מערכות לומדות: תרגיל בית 2
מערכות לומדות: תרגיל בית 2מערכות לומדות: תרגיל בית 2
מערכות לומדות: תרגיל בית 2
 
מערכות לומדות פגישה 4 חלק 3
מערכות לומדות פגישה 4 חלק 3מערכות לומדות פגישה 4 חלק 3
מערכות לומדות פגישה 4 חלק 3
 

מבוא לתכנות מדעי: פייתון הרצאה 13

  • 2. ‫השיעור‬ ‫של‬ ‫מטרה‬ ‫אלגוריתם‬ ‫של‬ ‫יעילות‬ ‫להגדיר‬ ‫ניתן‬ ‫שבעזרת‬ ‫דרך‬ ‫ללמוד‬ ‫אלגוריתם‬ ‫של‬ ‫יעילות‬ ‫למדוד‬ ‫איך‬ ‫להבין‬ ‫לבעיות‬ ‫יעילים‬ ‫פתרונות‬ ‫לכתוב‬ ‫ללמוד‬
  • 3. ‫ריצה‬ ‫זמן‬ ‫למדוד‬ ‫אפשר‬ ‫איך‬ •‫ב‬ ‫פתרון‬': •‫נציג‬‫עושה‬ ‫שהקוד‬ ‫בסיסיות‬ ‫פעולות‬ ‫כמות‬ ‫בעזרת‬ ‫ריצה‬ ‫זמן‬ •‫הקלט‬ ‫אורך‬ ‫של‬ ‫כפונקציה‬ ‫פעולות‬ ‫כמות‬ ‫את‬ ‫נבטא‬ •‫דומיננטיים‬ ‫הלא‬ ‫מגורמים‬ ‫נתעלם‬ ‫בפונקציה‬ •‫אקראית‬ ‫גישה‬ ‫עם‬ ‫חישוב‬ ‫מכונת‬ ‫של‬ ‫חישוב‬ ‫במודל‬ ‫נעזר‬(random access machine) •‫פקודה‬ ‫לאחר‬ ‫פקודה‬ ‫מבצעת‬ ‫המכונה‬ •‫בסיסיות‬ ‫פעולות‬:‫השמה‬,‫השוואה‬,‫אריתמטיות‬ ‫פעולות‬,‫בזיכרון‬ ‫לאובייקט‬ ‫גישה‬ •‫סביר‬ ‫הוא‬ ‫זה‬ ‫חישוב‬ ‫מודל‬,‫שימושי‬ •‫במודל‬‫ז‬‫ה‬‫מחשב‬ ‫של‬ ‫מהירות‬ ‫חשובה‬ ‫לא‬,‫חשובה‬ ‫לא‬‫פייתון‬ ‫גרסת‬,‫לדעת‬ ‫רק‬ ‫חשוב‬ ‫הפעולות‬ ‫כמות‬‫בחישוב‬(‫כפונקציה‬‫אורך‬ ‫של‬‫הקלט‬)
  • 4. ‫בקלט‬ ‫תלויה‬ ‫פעולות‬ ‫כמות‬ •‫ב‬ ‫גישה‬,'‫טובה‬ ‫גישה‬ ‫היא‬ •‫בקלט‬ ‫תלויה‬ ‫ריצה‬ ‫פעולות‬ ‫כמות‬ ‫אם‬,‫אותה‬ ‫נמדוד‬ ‫איך‬? •‫גישות‬ ‫מספר‬ ‫קיים‬: •‫מהיר‬ ‫הכי‬ ‫ריצה‬ ‫זמן‬‫אורך‬ ‫באותו‬ ‫הקלטים‬ ‫כל‬ ‫בין‬best case •‫אורך‬ ‫באותו‬ ‫הקלטים‬ ‫כל‬ ‫בין‬ ‫ממוצע‬ ‫ריצה‬ ‫זמן‬average case •‫אורך‬ ‫באותו‬ ‫הקלטים‬ ‫כל‬ ‫בין‬ ‫ביותר‬ ‫הגרוע‬ ‫במקרה‬ ‫ריצה‬ ‫זמן‬worst case •‫בגודל‬ ‫רשימה‬ ‫עבור‬ ‫קודמת‬ ‫מדוגמא‬ ‫בלולאה‬ ‫ליניארי‬ ‫חיפוש‬ ‫עבור‬n‫נקבל‬: •best case:‫פעולה‬1 •average case:n/2‫פעולות‬ •:worst casen‫פעולות‬ •‫ביותר‬ ‫הגרוע‬ ‫במקרה‬ ‫סיבוכיות‬ ‫בניתוח‬ ‫נתרכז‬ ‫אנו‬(‫עליון‬ ‫חסם‬)
  • 5. ‫דוגמא‬1:‫עצרת‬ ‫חישוב‬ •‫חישוב‬N‫עצרת‬‫דורש‬:5*n+1‫פעולות‬ •‫עבור‬n‫קבוע‬ ‫גדול‬ ‫מספיק‬1‫נתעלם‬ ‫ולכן‬ ‫תוצאה‬ ‫על‬ ‫משמעותי‬ ‫באופן‬ ‫תשפיע‬ ‫לא‬ ‫כבר‬ ‫שצריך‬ ‫נגיד‬ ‫ואז‬ ‫מימנו‬5n‫לחישוב‬ ‫פעולות‬n‫נתונה‬ ‫פונקציה‬ ‫בעזרת‬ ‫עצרת‬ •‫נגיד‬ ‫ופשוט‬ ‫סיבוכיות‬ ‫בניתוח‬ ‫המשמעותי‬ ‫איבר‬ ‫של‬ ‫כפלי‬ ‫מקבוע‬ ‫נתעלם‬ ‫גם‬ ‫אנחנו‬ ‫צריך‬~n‫או‬ ‫פעולות‬c*n‫פעולות‬(O(n))
  • 6. ‫שונות‬ ‫סיבוכיות‬ ‫מחלקות‬ ‫בין‬ ‫השוואות‬ ‫פולינום‬ ‫נגד‬ ‫מערכית‬ ‫סיבוכיות‬ • 2^x against x^10
  • 7. ‫שונות‬ ‫סיבוכיות‬ ‫מחלקות‬ ‫בין‬ ‫השוואות‬ ‫פולינום‬ ‫נגד‬ ‫פולינום‬ • x^2 against x^3
  • 8. ‫שונות‬ ‫סיבוכיות‬ ‫מחלקות‬ ‫בין‬ ‫השוואות‬ ‫נגד‬ ‫פולינום‬nlogn • xlog(x) against x
  • 9. ‫שונות‬ ‫סיבוכיות‬ ‫מחלקות‬ ‫בין‬ ‫השוואות‬ ‫נגד‬ ‫פולינום‬nlogn • xlog(x) against x^2
  • 10. ‫שונות‬ ‫סיבוכיות‬ ‫למחלקות‬ ‫מדויק‬ ‫לא‬ ‫סיכום‬ • “log(x)<sqrt(x)<x<x lg(x) <x^2 < x^3<…<x^k<…. < 2^x < 2^(2^x) ‫יעילים‬ ‫אלגוריתמים‬ log x sqrt(x) x x log x x^2 x^3 x^4 2^x 10 1 3.162278 10 10 100 1000 10000 1024 100 2 10 100 200 10000 1000000 1E+08 1.27E+30 1000 3 31.62278 1000 3000 1000000 1E+09 1E+12 1.1E+301 10000 4 100 10000 40000 100000000 1E+12 1E+16 #NUM! 100000 5 316.2278 100000 500000 10000000000 1E+15 1E+20 #NUM! 1000000 6 1000 1000000 6000000 1E+12 1E+18 1E+24 #NUM!
  • 23. ‫הקורס‬ ‫סוף‬:‫להמשיך‬ ‫איך‬? •‫פייתון‬ ‫ושפת‬ ‫תכנות‬ ‫של‬ ‫עקרונות‬ ‫למדנו‬ ‫סמסטר‬ ‫במשך‬ •‫אבל‬‫זאת‬‫רק‬‫התחלה‬ •‫דיברנו‬ ‫שלא‬ ‫מחשב‬ ‫במדעי‬ ‫וגם‬ ‫בתכנות‬ ‫וגם‬ ‫בפייתון‬ ‫גם‬ ‫נושאים‬ ‫המון‬ ‫קיימים‬ ‫עליהם‬
  • 24. ‫הקורס‬ ‫סוף‬:‫להמשיך‬ ‫איך‬? •‫בפייתון‬ ‫לתכנת‬ ‫צריך‬ ‫בפייתון‬ ‫ידע‬ ‫לשפר‬ ‫כדי‬ •‫אפשר‬‫לקרוא‬‫ספרים‬‫על‬‫פייתון‬ •‫אונליין‬ ‫או‬ ‫באוניברסיטה‬ ‫חדשים‬ ‫קורסים‬ ‫ללמוד‬ ‫אפשר‬ •‫אפשר‬‫בפייתון‬ ‫מעניינים‬ ‫בפרויקטים‬ ‫להשתתף‬ •‫עם‬ ‫בפייתון‬ ‫להשתמש‬ ‫מפסיקים‬ ‫אם‬‫הזמן‬‫שוכחים‬‫את‬‫השפה‬
  • 30. ‫מחשב‬ ‫למדעי‬ ‫קשורים‬ ‫קורסים‬ •‫מתמטיקה‬‫דיסקרטית‬ •‫נתונים‬ ‫מבנה‬ •‫אלגוריתמים‬ •‫עצמים‬ ‫מונחה‬ ‫תכנות‬ •‫למידה‬‫ממוכנת‬
  • 32. ‫מקום‬ ‫בכל‬ ‫מחשבים‬ •‫מקום‬ ‫בכל‬ ‫כמעט‬ ‫מחשב‬ ‫למצוא‬ ‫אפשר‬ ‫היום‬: •‫מקרר‬ •‫קפה‬ ‫מכונת‬ •‫מצלמה‬ •‫טלפון‬ •‫מכונית‬ •‫מעלית‬ •‫דם‬ ‫לחץ‬ ‫מד‬ •...
  • 33. ‫מחשב‬ ‫תוכנת‬ ‫היא‬ ‫מה‬? •‫פקודות‬ ‫סדרת‬ •‫זאת‬‫קטנה‬ ‫חתיכה‬‫של‬‫האינטליגנציה‬‫שלנו‬‫במחשב‬ •‫בה‬ ‫להשתמש‬ ‫שיוכלו‬ ‫אחרים‬ ‫לאנשים‬ ‫שלנו‬ ‫תוכנה‬ ‫לתת‬ ‫יכולים‬ ‫אנו‬ •"‫טובה‬ ‫תוכנה‬,‫אנשים‬ ‫הרבה‬ ‫משמחת‬ ‫מוצלח‬ ‫ציור‬ ‫במו‬ ‫היא‬"
  • 34. ‫מחשב‬ ‫מבנה‬ •CPU •RAM – main memory •secondary memory •input devices •output devices
  • 35.
  • 37. ‫פייתון‬ ‫של‬ ‫מבנה‬ •‫דומים‬ ‫מבנים‬ ‫יש‬ ‫בפייתון‬ ‫אדם‬ ‫בן‬ ‫של‬ ‫בשפת‬ ‫כמו‬: • Vocabulary/ Words – Variables and reserved words (‫מילים‬) • Sentences structure – valid syntax patterns (‫משפטים‬–‫קוד‬ ‫של‬ ‫בלוקים‬) • Story structure – constructing correct program (‫סיפור‬–‫קוד‬,‫תוכנה‬)
  • 38. ‫שמורות‬ ‫מילים‬Reserved words •‫פייתון‬ ‫של‬ ‫שמורות‬ ‫מילים‬ ‫רשימת‬2.7 •‫משתנים‬ ‫של‬ ‫כשמות‬ ‫האלו‬ ‫במילים‬ ‫להשתמש‬ ‫אסור‬
  • 41. ‫אריתמטיות‬ ‫פעולות‬ arithmetic operators • + plus ‫חיבור‬ • - minus ‫חיסור‬ • * times ‫כפל‬ • / divided by ‫חלוקה‬ • ** power ‫חזקה‬
  • 42. ‫בפייתון‬ ‫משתנים‬ ‫של‬ ‫שמות‬ ‫לייצור‬ ‫כללים‬ •‫משתנה‬ ‫שם‬‫להתחיל‬ ‫חייב‬‫מסימן‬ ‫או‬ ‫מאות‬_ •‫משתנה‬ ‫שם‬‫להכיל‬ ‫יכול‬:‫אותיות‬(‫אנגלי‬),‫מספרים‬_ , •‫וגדולות‬ ‫קטנות‬ ‫לאותיות‬ ‫חשיבות‬ ‫יש‬
  • 43. ‫ממשתמש‬ ‫קלט‬ ‫קבלת‬ •‫פונקציית‬ ‫בעזרת‬ ‫ממשתמש‬ ‫קלט‬ ‫לקבל‬ ‫אפשר‬raw_input() •‫מחרוזת‬ ‫מטיפוס‬ ‫ערך‬ ‫מחזירה‬ ‫הפונקציה‬
  • 44. ‫השמה‬ ‫פעולת‬–assignment statement •‫משתנה‬ ‫מייצרת‬ ‫השמה‬ ‫פעולת‬)‫קיים‬ ‫היה‬ ‫לא‬ ‫הוא‬ ‫אם‬(‫של‬ ‫ערך‬ ‫לו‬ ‫ומייחסת‬‫ביטוי‬ ‫ל‬ ‫ימין‬ ‫מצעד‬ ‫שכתוב‬-"="
  • 45.
  • 47. ‫אלגוריתם‬ •‫פשוטות‬ ‫במילים‬:‫מסוימת‬ ‫לבעיה‬ ‫פתרון‬ ‫של‬ ‫מדויק‬ ‫תיור‬ ‫הוא‬ ‫אלגוריתם‬ •‫למתכון‬ ‫דומה‬ ‫אלגוריתם‬: •‫אוכל‬ ‫להכנת‬ ‫שלבים‬ ‫רשומים‬ ‫במתכון‬ •‫בעיה‬ ‫של‬ ‫פתרון‬ ‫של‬ ‫שלבים‬ ‫רשומים‬ ‫באלגוריתם‬ •‫כלשהי‬ ‫בשפה‬ ‫כתוב‬ ‫להיות‬ ‫יכול‬ ‫אלגוריתם‬ •‫באנגלית‬,‫בעברית‬,‫ברוסית‬,‫בערבית‬,... •‫מתמטית‬ ‫בשפה‬ •‫מחשב‬ ‫בשפת‬ •‫מעברים‬ ‫דיאגרמת‬ ‫בעזרת‬ •‫בעיה‬ ‫לאותה‬ ‫שונים‬ ‫אלגוריתמים‬ ‫לכתוב‬ ‫יכולים‬ ‫שונים‬ ‫אנשים‬
  • 48. ‫לאלגוריתם‬ ‫דוגמא‬ •‫בעיה‬:‫פרנהייט‬ ‫למעלות‬ ‫צלזיוס‬ ‫מעלות‬ ‫טמפרטורה‬ ‫שמעביר‬ ‫אלגוריתם‬ ‫פתח‬ •‫אלגוריתם‬ ‫של‬ ‫כללי‬ ‫תיור‬: •‫בצלזיוס‬ ‫טמפרטורה‬ ‫קבלת‬ •‫מתמטיים‬ ‫חישובים‬ •‫תשובה‬ ‫הצגת‬ •‫אלגוריתם‬: •‫ממשתמש‬ ‫קלט‬ ‫קבלת‬(‫ב‬ ‫קלט‬ ‫נסמן‬-X) •‫נכפיל‬X‫ב‬-9,‫ב‬ ‫נחלק‬ ‫התוצאה‬ ‫את‬-5,‫נוסיף‬ ‫לתוצאה‬32 •‫אחרון‬ ‫חישוב‬ ‫תוצאת‬ ‫למשתמש‬ ‫נחזיר‬ •‫בדיקה‬: 12->12*9=108->108/5=21.6->21.6+32=53.6
  • 49. ‫מתמטיות‬ ‫פונקציות‬ •‫שונות‬ ‫עזר‬ ‫בפונקציות‬ ‫נשתמש‬ ‫תוכנות‬ ‫שברוב‬ ‫הקורס‬ ‫בהמשך‬ ‫נראה‬ •‫פונקציות‬ ‫של‬ ‫דוגמאות‬ ‫כמה‬ ‫ראינו‬ ‫כבר‬ ‫אנו‬ •‫לשימוש‬ ‫ונתונים‬ ‫אחרים‬ ‫מתכנתים‬ ‫ידי‬ ‫על‬ ‫נכתבו‬ ‫האלו‬ ‫מתמטיות‬ ‫פונקציות‬ •‫הספרייה‬ ‫את‬ ‫לקוד‬ ‫להוסיף‬ ‫לפייתון‬ ‫להגיד‬ ‫יש‬ ‫מתמטיות‬ ‫בפונקציות‬ ‫שימוש‬ ‫לפני‬ ‫אבל‬ ‫פקודה‬ ‫ידי‬ ‫על‬ ‫נעשה‬ ‫וזה‬ ‫המתמטיות‬ ‫הפונקציות‬ ‫כל‬ ‫של‬ ‫תיור‬ ‫יש‬ ‫שבה‬ • import math •‫מהן‬ ‫בחלק‬ ‫רק‬ ‫נשתמש‬ ‫אנו‬ ‫מתמטיות‬ ‫פונקציות‬ ‫הרבה‬ ‫ממומשות‬ ‫זו‬ ‫בספרייה‬ •‫ספריה‬ ‫של‬ ‫פונקציות‬ ‫על‬ ‫פרטים‬ ‫יותר‬ ‫לדעת‬ ‫כדי‬math‫שלה‬ ‫התיעוד‬ ‫את‬ ‫לקרוא‬ ‫אפשר‬ docs.python.org/2/library/math.html
  • 50.
  • 52. ‫מבוא‬ •‫במצב‬ ‫התלויות‬ ‫החלטות‬ ‫הרבה‬ ‫מקבלים‬ ‫אנו‬ ‫יום‬ ‫כל‬ •‫אם‬‫גשם‬ ‫יהי‬ ‫היום‬‫אז‬‫מטריה‬ ‫אקח‬ ‫אני‬ •‫אם‬‫לא‬ ‫קשה‬ ‫קורס‬‫אז‬‫אותו‬ ‫אקח‬ •‫אם‬‫בהרצאה‬ ‫חומר‬ ‫הבנתי‬ ‫לא‬‫אז‬‫קבלה‬ ‫לשעות‬ ‫אלך‬ •‫אם‬...........‫אז‬..............‫או‬.............
  • 54.
  • 55. ‫הזחות‬(indentations) •‫להזחות‬ ‫רבה‬ ‫חשיבות‬ ‫יש‬ ‫בפייתון‬ •‫עם‬ ‫שורה‬ ‫לאחר‬if‫או‬for(‫בהמשך‬)‫הבלוק‬ ‫כל‬ ‫לאורך‬ ‫הזחות‬ ‫של‬ ‫כמות‬ ‫אותה‬ ‫מוסיפים‬ •‫חישוב‬ ‫בלוק‬ ‫אותו‬ ‫ומסתיים‬ ‫מתחיל‬ ‫איפה‬ ‫להבין‬ ‫לפייתון‬ ‫עוזרות‬ ‫הזחות‬ •‫הערה‬:‫ב‬ ‫להשתמש‬ ‫לא‬ ‫עדיף‬-TAB‫הזחות‬ ‫לייצור‬ ‫כדי‬ •‫בגודל‬ ‫הזחות‬ ‫לעשות‬ ‫מומלץ‬ ‫בלוק‬ ‫בכל‬4‫רווחים‬
  • 60. ‫מקוננים‬ ‫תנאים‬nested conditions / •‫לפעמים‬,‫קוד‬ ‫לכתיבת‬ ‫עוזרים‬ ‫מקוננים‬ ‫תנאים‬ •‫התוכנה‬ ‫הבנת‬ ‫מסבך‬ ‫מקוננים‬ ‫בתנאים‬ ‫שימוש‬ ‫כלל‬ ‫בדרך‬ ‫אבל‬,‫לא‬ ‫מומלץ‬ ‫ולכן‬ ‫צורך‬ ‫ללא‬ ‫בהם‬ ‫להשתמש‬
  • 61. ‫אקראיים‬ ‫מספרים‬ •‫אקראיים‬ ‫מספרים‬ ‫עם‬ ‫לעבוד‬ ‫נרצה‬ ‫לפעמים‬
  • 62. ‫קטן‬ ‫תרגיל‬:‫התאמה‬ ‫לפי‬ ‫חבר‬ • random.choice((“H”,”T”)) • random.choice((1,2,3)) • random.random() • rand.int(2,5) •‫בין‬ ‫שלם‬ ‫אקראי‬ ‫מספר‬ ‫מחזירה‬ ‫פונקציה‬2‫ל‬-5(‫כולל‬) •‫הוגן‬ ‫מטבע‬ ‫הטלת‬ ‫תוצאת‬ ‫מחזירה‬ ‫פונקציה‬ •‫בין‬ ‫בקטע‬ ‫ממשי‬ ‫מספר‬ ‫מחזירה‬ ‫פונקציה‬0‫ל‬-1 •‫אקראי‬ ‫מספר‬ ‫מחזירה‬ ‫פונקציה‬1‫או‬2‫או‬3
  • 63. ‫ריבועית‬ ‫משוואה‬ ‫פתרון‬ •‫ריבועיות‬ ‫משוואות‬ ‫שפותרת‬ ‫תוכנה‬ ‫ראינו‬ •‫ב‬ ‫לתוכנה‬ ‫אותה‬ ‫נשווה‬-R
  • 64. ‫לולאת‬ ‫היא‬ ‫מה‬while? •‫מטאפורה‬:‫במבה‬ ‫שקית‬ ‫עם‬ ‫אדם‬ ‫בן‬ •‫יש‬ ‫בשקית‬40‫במבה‬ ‫יחידות‬,‫בלולאת‬ ‫נמצא‬ ‫אותה‬ ‫לאכול‬ ‫ורוצה‬ ‫במבה‬ ‫שאוהב‬ ‫אדם‬ ‫בן‬while • http://www.codeskulptor.org/#user42_W4G04OOmnx_0.py 1. number of bambas = 40 2. while number of bambas >0: 3. take one bamba 4. eat bamba 5. go to step 2 6. put the empty bag away algorithm program
  • 65. ‫דוגמא‬1:‫בלולאות‬ ‫שימוש‬ •‫שאלה‬:‫מ‬ ‫המספרים‬ ‫כל‬ ‫שמדפיסה‬ ‫תוכנה‬ ‫כתוב‬-1‫עד‬10 http://www.codeskulptor.org/#user43_uHfDy2ZX8F_2.py
  • 66. ‫חלוקה‬ ‫שארית‬ •‫שלם‬ ‫מספר‬ ‫חלוקה‬ ‫שארית‬ ‫לדעת‬ ‫רוצים‬ ‫אנו‬ ‫אם‬A‫שלם‬ ‫במספר‬B‫אפשר‬ ‫אזי‬ ‫להשתמש‬‫באופרטור‬%
  • 68. continue and break •‫פעולת‬continue‫לולאה‬ ‫עוצרת‬ ‫לא‬,‫איטרציה‬ ‫מפסיקה‬ ‫אלה‬(‫צעד‬)‫וממשיכה‬ ‫נוכחית‬ ‫הבאה‬ ‫לאיטרציה‬ •‫פעולת‬break‫לולאה‬ ‫עוצרת‬‫נמצאת‬ ‫היא‬ ‫שבה‬,‫בלוק‬ ‫לאחר‬ ‫הבא‬ ‫שורה‬ ‫מתבצעת‬ ‫ואז‬ ‫הלולאה‬ ‫של‬
  • 69.
  • 70. x=x+1 •‫דבר‬ ‫אותו‬ ‫לבצע‬ ‫מקוצר‬ ‫כתיב‬ ‫קיים‬ • x=x+1 x+=1 • x=x+5 x+=5 • x=x/2 x/=2 • x=x-5 x-=5 • x=x*8 x*=8
  • 71. for loop •‫בלולאת‬ ‫נשתמש‬for‫מקרים‬ ‫בשתי‬: •‫נתונה‬ ‫אובייקטים‬ ‫בסדרת‬ ‫אובייקט‬ ‫כל‬ ‫על‬ ‫לעבור‬ ‫צורך‬ ‫יש‬ ‫כאשר‬(‫הקורס‬ ‫בהמשך‬ ‫נלמד‬) • http://www.codeskulptor.org/#user42_fMjvkLw36J_6.py
  • 73. ‫מקוננות‬ ‫לולאות‬ ‫זה‬ ‫מה‬? •‫לולאה‬ ‫בתוך‬ ‫לולאה‬ •‫לולאה‬ ‫בתוך‬ ‫לולאה‬ ‫בתוך‬ ‫לולאה‬ •‫בלולאה‬ ‫להשתמש‬ ‫אפשר‬for‫בתוך‬for •‫בלולאה‬ ‫להשתמש‬ ‫אפשר‬for‫בתוך‬while •‫בלולאה‬ ‫להשתמש‬ ‫אפשר‬while‫בתוך‬for •‫בלולאה‬ ‫להשתמש‬ ‫אפשר‬while‫בתוך‬while
  • 74. syntax of nested for loops for var1 in sequence1: statement(s) of outside loop for var2 in sequence2: statement(s) of inner loop statement(s) of outside loop after loops
  • 75.
  • 76. Python Function Format ‫פונקציה‬ ‫הגדרת‬: def function_name(optional_parameters): statement(s) ….. …..
  • 77. ‫מטרה‬ ‫פונקציות‬ ‫של‬ ‫שונים‬ ‫סוגים‬ ‫ללמוד‬: •‫מחזירות‬ ‫ולא‬ ‫מקבלות‬ ‫שלא‬ ‫פונקציות‬‫פרמטרים‬ •‫פרמטרים‬ ‫מחזירות‬ ‫אבל‬ ‫מקבלות‬ ‫שלא‬ ‫פונקציות‬ •‫פרמטרים‬ ‫מחזירות‬ ‫ולא‬ ‫שמקבלות‬ ‫פונקציות‬ •‫פרמטרים‬ ‫ומחזירות‬ ‫שמקבלות‬ ‫פונקציות‬
  • 78. ‫עצרת‬ ‫חישוב‬ •‫פונקציה‬ ‫כתוב‬‫שמקבלת‬‫שלם‬ ‫מספר‬‫ומחזירה‬‫המספר‬ ‫של‬ ‫העצרת‬ ‫את‬ http://www.codeskulptor.org/#user42_NdoxYiDzeM_0.py
  • 79. ‫מ‬ ‫מלבן‬ ‫שמציירת‬ ‫פונקציה‬ ‫כתוב‬-* •‫פונקציה‬‫מחזירה‬ ‫ולא‬ ‫מקבלת‬ ‫לא‬‫דבר‬ ‫שום‬ • http://www.codeskulptor.org/#user42_NdoxYiDzeM_4.py
  • 80.
  • 81. ‫מחרוזת‬ ‫של‬ ‫אותיות‬ •‫פונקציה‬ ‫בעזרת‬ ‫לחשב‬ ‫אפשר‬ ‫מחרוזת‬ ‫של‬ ‫אורך‬len()
  • 82. ‫מחרוזת‬ ‫על‬ ‫לולאה‬ •‫לולאה‬ ‫בעזרת‬ ‫במחרוזת‬ ‫תו‬ ‫כל‬ ‫על‬ ‫לעבור‬ ‫אפשר‬: • For
  • 85. ‫מחרוזות‬ ‫השוואת‬ •‫לוגיות‬ ‫פעולות‬ ‫בעזרת‬ ‫מחרוזות‬ ‫שתי‬ ‫להשוואת‬ ‫אפשר‬ •‫אלפביתי‬ ‫סדר‬ ‫לפי‬ ‫היא‬ ‫ההשוואה‬ ‫אזי‬ ‫קטנות‬ ‫אותיות‬ ‫הן‬ ‫במחרוזות‬ ‫האותיות‬ ‫כל‬ ‫כאשר‬ (‫מלון‬ ‫של‬ ‫סדר‬)
  • 86. ‫מחרוזות‬ ‫של‬ ‫מתודות‬string methods / •‫הבא‬ ‫בדוגמא‬ ‫נתבונן‬:
  • 87.
  • 90. ‫קובץ‬ ‫בתוך‬ ‫נתונים‬ ‫שמירת‬ •‫לשמירה‬ ‫הקובץ‬ ‫את‬ ‫לפתוח‬ ‫יש‬:“w” •‫מתודה‬ ‫בעזרת‬ ‫קובץ‬ ‫בתוך‬ ‫כותבים‬write(‫מטיפוס‬ ‫פרמטרים‬ ‫רק‬string) •‫מתודה‬ ‫בעזרת‬ ‫אותו‬ ‫לסגור‬ ‫יש‬ ‫בקובץ‬ ‫שימוש‬ ‫סוף‬ ‫אחרי‬close() •‫חשוב‬‫בו‬ ‫שימוש‬ ‫כל‬ ‫לאחר‬ ‫אחד‬ ‫פעם‬ ‫רק‬ ‫קובץ‬ ‫את‬ ‫לסגור‬
  • 91.
  • 92. ‫מחרוזת‬:‫שלילי‬ ‫אינדקס‬ •‫בעזרת‬ ‫במחרוזת‬ ‫מסוימת‬ ‫לאות‬ ‫לגשת‬ ‫אפשר‬ ‫איך‬ ‫ראינו‬ ‫קודם‬ ‫בשיעור‬][‫ואינדקס‬ ‫האות‬ ‫של‬ •‫שליליים‬ ‫אינדקסים‬ ‫בעזרת‬ ‫לאות‬ ‫לגשת‬ ‫אפשר‬ ‫בנוסף‬ -1-2-3-4-5-6
  • 93. ‫קיימת‬ ‫מחרוזת‬ ‫של‬ ‫תוכן‬ ‫לשנות‬ ‫אפשר‬ ‫אי‬ •‫המחרוזת‬ ‫את‬ ‫לעדכן‬ ‫אפשר‬ ‫אי‬ •‫לעדכן‬ ‫ניתן‬ ‫שלא‬ ‫מהטיפוס‬ ‫הן‬ ‫מחרוזות‬ •‫העדכון‬ ‫את‬ ‫שתכיל‬ ‫חדשה‬ ‫מחרוזת‬ ‫לייצר‬ ‫אפשר‬ ‫אבל‬
  • 94. List •‫שונים‬ ‫מטיפוסים‬ ‫אובייקטים‬ ‫ראינו‬: • bool, function, str, int, float •‫לייצר‬ ‫אפשר‬ ‫איך‬ ‫נלמד‬ ‫היום‬‫רשימה‬‫אובייקטים‬ ‫של‬ •‫ושימושי‬ ‫חדש‬ ‫נתונים‬ ‫מבנה‬ ‫נלמד‬ ‫בעצם‬‫רשימה‬ •‫רשימה‬‫סדרה‬ ‫לשמור‬ ‫מאפשרת‬(‫סדר‬ ‫יש‬)‫שם‬ ‫אותו‬ ‫תחת‬ ‫אובייקטים‬ ‫של‬(‫מאוד‬ ‫נוח‬) ‫ו‬ ‫אינדקס‬ ‫דרך‬ ‫אובייקט‬ ‫לכל‬ ‫ולגשת‬-] [ •‫לרשימה‬ ‫דוגמא‬: •‫שונים‬ ‫מטיפוסים‬ ‫אובייקטים‬ ‫של‬ ‫רשימת‬
  • 95. ‫רשימות‬ ‫של‬ ‫מתודות‬ •‫רשימות‬ ‫של‬ ‫מתודות‬ ‫יש‬ ‫רשימה‬ ‫מטיפוס‬ ‫אובייקט‬ ‫לכל‬ • listobj.methodname(params) •‫בפונקציה‬ ‫להשתמש‬ ‫אפשר‬ ‫קיימות‬ ‫מתודות‬ ‫אילו‬ ‫לדעת‬ ‫כדי‬dir()
  • 96.
  • 97. ‫רשימות‬ ‫שתי‬ ‫של‬ ‫שרשור‬ •‫אופרטור‬ ‫בעזרת‬+‫אפשר‬‫לייצר‬‫שתי‬ ‫של‬ ‫לשרשור‬ ‫ששווה‬ ‫חדשה‬ ‫רשימה‬ ‫מקור‬ ‫הרשימות‬
  • 98. ‫רשימות‬ ‫תתי‬ •‫פעולת‬ ‫בעזרת‬ ‫מרשימה‬ ‫רשימה‬ ‫תת‬ ‫לקבל‬ ‫אפשר‬:‫ו‬-] [‫במחרוזות‬ ‫כמו‬
  • 99. ‫תרגיל‬ •‫כתוב‬‫בשם‬ ‫פונקציה‬savelisttofile‫לתוך‬ ‫ושומרת‬ ‫ורשימה‬ ‫קובץ‬ ‫של‬ ‫שם‬ ‫המקבלת‬ ‫הרשימה‬ ‫את‬ ‫הקובץ‬
  • 101.
  • 102. ‫מסקנה‬:‫פיבונאצ‬ ‫סדרת‬'‫מאוד‬ ‫מחר‬ ‫גודלת‬ ‫י‬: ‫מערכי‬ ‫בקצב‬ ‫נצייר‬30‫איברים‬ ‫סדרה‬ ‫של‬ ‫ראשונים‬
  • 104. ‫הישר‬ ‫על‬ ‫אקראי‬ ‫הילוך‬ •‫אלגוריתם‬: •‫ערך‬ ‫עם‬ ‫נתחיל‬X0=0 •‫לכל‬k=1,2,….999:‫מספרים‬ ‫משתי‬ ‫אחד‬ ‫נגריל‬1‫ו‬-1‫בהסתברות‬0.5‫מהם‬ ‫אחד‬ ‫כל‬
  • 106. ‫קופונים‬ ‫אסיפת‬ •‫ספיידרמן‬ ‫של‬ ‫הקופונים‬ ‫כל‬ ‫את‬ ‫לאסוף‬ ‫רוצה‬ ‫ילד‬ •‫סגורות‬ ‫במעטפות‬ ‫נמכרים‬ ‫הקופונים‬ •‫אחד‬ ‫קופון‬ ‫רק‬ ‫יש‬ ‫מעטפה‬ ‫בכל‬ •‫סה‬ ‫יש‬"‫כ‬100‫שונים‬ ‫קופונים‬ •‫הסתברות‬ ‫אותה‬ ‫יש‬ ‫קופון‬ ‫לכל‬1/100‫במעטפה‬ ‫להיות‬ •‫הקופונים‬ ‫כל‬ ‫את‬ ‫יאסוף‬ ‫אשר‬ ‫עד‬ ‫לקנות‬ ‫צריך‬ ‫ילד‬ ‫בממוצע‬ ‫מעטפות‬ ‫כמה‬? •‫שבממוצע‬ ‫מדויק‬ ‫באופן‬ ‫לחשב‬ ‫אפשר‬(‫תוחלת‬)‫בערך‬ ‫לקנות‬ ‫יש‬100*log(100) ‫מעטפות‬ •‫כלומר‬~515
  • 107.
  • 108. ‫נתונים‬ ‫של‬ ‫גרפי‬ ‫ייצוג‬ •‫גרפית‬ ‫בצורה‬ ‫הנתונים‬ ‫את‬ ‫להציג‬ ‫רוצים‬ ‫לפעמים‬ ‫מסובכים‬ ‫נתונים‬ ‫עם‬ ‫עובדים‬ ‫כאשר‬
  • 109. ‫דוגמא‬:‫אוכלוסייה‬ ‫גודל‬ ‫קוים‬ ‫ידי‬ ‫על‬ ‫מחוברות‬ ‫הנקודות‬ ‫את‬ ‫לראות‬ ‫שניתן‬ ‫כמו‬
  • 110. ‫פיזור‬ ‫גרף‬ •‫בפונקציה‬ ‫להיעזר‬ ‫אפשר‬ ‫הנקודות‬ ‫בין‬ ‫קוים‬ ‫ללא‬ ‫לבד‬ ‫הנתונים‬ ‫את‬ ‫לצייר‬ ‫נרצה‬ ‫אם‬ scatter()‫של‬plt
  • 112.
  • 113. Modules •‫סיומת‬ ‫עם‬ ‫קבצים‬ ‫הם‬ ‫מודולים‬.py‫בפייתון‬ ‫הכתוב‬ ‫קוד‬ ‫המכילים‬:‫פונקציות‬,‫פקודות‬
  • 114. ‫המשך‬ ‫מודולים‬ •‫במודולים‬ ‫להשתמש‬ ‫נוספת‬ ‫אפשרות‬ ‫קיימת‬
  • 115. ‫סיכום‬ import ourprime print ourptime.isPrime(11) import ourprime as op print op.isPrime(11) from op import isPrime print isPrime(11) from op import * print isPrime(11)
  • 116. List Comprehension •‫המנגנון‬List Comprehension‫טבעי‬ ‫באופן‬ ‫רשימות‬ ‫להגדיר‬ ‫מאפשר‬ ‫בפייתון‬ ‫במתמטיקה‬ ‫כמו‬: • X=[i: i>1, i is a natural number] •‫דוגמא‬:‫מ‬ ‫מספרים‬ ‫של‬ ‫ריבועים‬ ‫רשימת‬-0‫עד‬9
  • 117. ‫רשימות‬ ‫של‬ ‫רשימה‬ •‫סטודנטים‬ ‫של‬ ‫רשימת‬ •‫יש‬ ‫סטודנט‬ ‫לכל‬4‫ציונים‬
  • 118.
  • 119. ‫מוטיבציה‬ ‫סימולציה‬ •‫פשוטות‬ ‫מדוגמאות‬ ‫נתחיל‬: •‫לקבל‬ ‫הסתברות‬ ‫מהי‬"‫ראש‬"‫הוגן‬ ‫מטבע‬ ‫בהטלת‬?0.5 •‫שנקבל‬ ‫פעמים‬ ‫מספר‬ ‫פרופורציית‬ ‫היא‬ ‫מה‬ ‫פעמים‬ ‫המון‬ ‫הוגן‬ ‫מטבע‬ ‫נטיל‬ ‫אם‬ "‫ראש‬"? •‫של‬ ‫סימולציה‬ ‫בעזרת‬ ‫נבדוק‬100‫הטלות‬
  • 120. ‫הוגן‬ ‫מטבע‬ ‫סימולציה‬:‫סיכום‬ •‫לקבל‬ ‫הסתברות‬ ‫מהי‬"‫ראש‬"‫הוגן‬ ‫מטבע‬ ‫בהטלת‬?0.5 •‫שנקבל‬ ‫פעמים‬ ‫מספר‬ ‫פרופורציית‬ ‫מהי‬ ‫פעמים‬ ‫המון‬ ‫הוגן‬ ‫מטבע‬ ‫נטיל‬ ‫אם‬"‫ראש‬"?
  • 122. ‫קוד‬ ‫של‬ ‫ביצוע‬ ‫זמן‬ •‫ספריה‬ ‫בעזרת‬timer‫קוד‬ ‫קטע‬ ‫לביצוע‬ ‫הדרוש‬ ‫הזמן‬ ‫את‬ ‫לחשב‬ ‫נוכל‬ ‫מקבלים‬ ‫פעם‬ ‫כל‬ ‫שונות‬ ‫תוצאות‬–‫אפשר‬ ‫ריצות‬ ‫כמה‬ ‫לעשות‬ ‫ממוצע‬ ‫ולחשב‬
  • 123.
  • 124. ‫מילון‬ ‫מייצרים‬ ‫איך‬ •‫מסולסלים‬ ‫בסוגריים‬ ‫משתמשים‬ ‫מילון‬ ‫לייצר‬ ‫כדי‬ •‫רושמים‬ ‫הסוגריים‬ ‫בתוך‬‫צמדים‬:‫מפתח‬:‫איבר‬ ‫מילון‬ ‫של‬ ‫שם‬ ‫מפתח‬ ‫ערך‬
  • 125. ‫מפתח‬ ‫בעזרת‬ ‫מילון‬ ‫לאברי‬ ‫גישה‬ •‫לולאת‬ ‫בעזרת‬ ‫מילון‬ ‫של‬ ‫מפתח‬ ‫כל‬ ‫על‬ ‫לעבור‬ ‫אפשר‬for
  • 126.
  • 127. ‫ב‬ ‫שימוש‬-get •‫ב‬ ‫מהשימושים‬ ‫אחד‬-get‫ברשימה‬ ‫נפוצה‬ ‫הכי‬ ‫מילה‬ ‫מהי‬ ‫לדעת‬ ‫הוא‬ http://www.codeskulptor.org/#user42_BI2XshmUOV_0.py
  • 128.
  • 129.
  • 131.
  • 132. ‫רקורסיה‬ "‫רקורסיה‬ ‫להבין‬ ‫יש‬ ‫רקורסיה‬ ‫להבין‬ ‫כדי‬" ‫בעיות‬ ‫לפתרון‬ ‫דרך‬ ‫היא‬ ‫רקורסיה‬ ‫ברקורסיה‬ ‫בעיה‬ ‫פותרים‬ ‫כאשר‬"‫שוברים‬"‫יותר‬ ‫קטנה‬ ‫לבעיה‬ ‫המקורית‬ ‫הבעיה‬ ‫את‬,‫וכך‬ ‫לפתור‬ ‫יודעים‬ ‫שאותה‬ ‫טריוויאלית‬ ‫קטנה‬ ‫לבעיה‬ ‫שמגיעים‬ ‫עד‬ ‫ממשיכים‬
  • 136. ‫השמות‬ ‫מרחב‬ ‫מהו‬ •‫בפייתון‬‫השמות‬ ‫מרחב‬‫לאובייקטים‬ ‫משתנים‬ ‫שמות‬ ‫בין‬ ‫מיפוי‬ ‫טבלת‬ ‫הוא‬ •‫מודול‬ ‫לכל‬ ‫בפייתון‬,‫פונקציה‬ ‫לכל‬,‫מחלקה‬ ‫לכל‬(‫נלמד‬ ‫לא‬)‫משלו‬ ‫השמות‬ ‫מרחב‬ ‫יש‬ •‫נקרא‬ ‫כזה‬ ‫השמות‬ ‫מרחב‬‫לוקאלי‬‫מסוים‬ ‫לאובייקט‬ ‫משויך‬ ‫הוא‬ ‫כי‬:‫פונקציה‬,‫וכו‬ ‫מודול‬' •‫הסתיים‬ ‫הפונקציה‬ ‫של‬ ‫ביצוע‬ ‫וכאשר‬ ‫עבורה‬ ‫מיוצר‬ ‫השמות‬ ‫מרחב‬ ‫לפונקציה‬ ‫קוראים‬ ‫אנו‬ ‫כאשר‬ ‫נמחק‬ ‫המרחב‬ •‫גלובאלי‬ ‫שמות‬ ‫למרחב‬ ‫ושייכים‬ ‫גלובאליים‬ ‫נקראים‬ ‫תוכנה‬ ‫של‬ ‫ראשי‬ ‫בגוף‬ ‫שמוגדרים‬ ‫משתנים‬ Namespace x 12 z 22 y “Hello”
  • 137. ‫ההכרה‬ ‫תחום‬ •‫בקוד‬ ‫מקום‬ ‫מכל‬ ‫משתנה‬ ‫לכל‬ ‫לגשת‬ ‫ניתן‬ ‫לא‬ •‫בו‬ ‫להשתמש‬ ‫וניתן‬ ‫קיים‬ ‫המשתנה‬ ‫שבו‬ ‫קוד‬ ‫של‬ ‫חלק‬ ‫הוא‬ ‫משתנה‬ ‫של‬ ‫ההכרה‬ ‫תחום‬ •‫לפי‬ ‫המשתנה‬ ‫הגדרת‬ ‫את‬ ‫מחפש‬ ‫תמיד‬ ‫הוא‬ ‫המשתנה‬ ‫מוגדר‬ ‫איפו‬ ‫מחפש‬ ‫פייתון‬ ‫כאשר‬ ‫הבא‬ ‫סדר‬: Local->Enclosed->Global->Built-in •‫מודול‬ ‫או‬ ‫פונקציה‬ ‫בתוך‬ ‫השמות‬ ‫מרחב‬ ‫הוא‬ ‫לוקאלי‬ ‫השמות‬ ‫מרחב‬ •Local:‫המודול‬ ‫או‬ ‫הפונקציה‬ ‫בתוך‬ ‫לוקלי‬ ‫הוא‬ ‫מודול‬ ‫או‬ ‫פונקציה‬ ‫בתוך‬ ‫המוגדר‬ ‫משתנה‬ ‫כל‬ •Enclosed‫משתמשים‬ ‫שבה‬ ‫פונקציה‬ ‫מוגדרת‬ ‫שבה‬ ‫הפונקציה‬ ‫של‬ ‫השמות‬ ‫מרחב‬ ‫הוא‬ ‫במשתנה‬ •Global‫התוכנה‬ ‫כל‬ ‫של‬ ‫השמות‬ ‫מרחב‬ ‫הוא‬ •Built-In‫פייתון‬ ‫של‬ ‫השמורים‬ ‫המשתנים‬ ‫הפונקציות‬ ‫כל‬ ‫עם‬ ‫פייתון‬ ‫של‬ ‫השמות‬ ‫מרחב‬
  • 140. Mutable Immutable types Int, float, bool immutable str immutable tuple immutable List mutable dictionary mutable set mutable frozenset immutable
  • 141. Aliasing •Aliasing‫משתנים‬ ‫שתי‬ ‫כאשר‬ ‫תופעה‬ ‫היא‬‫מצביעים‬‫ערך‬ ‫אותו‬ ‫על‬ ‫לדוגמא‬: ‫של‬ ‫מהערכים‬ ‫אחד‬ ‫את‬ ‫נשנה‬ ‫כאשר‬ ‫יקרא‬ ‫מה‬-y?
  • 142. Immutable objects as function arguments •‫להבין‬ ‫חשוב‬‫של‬ ‫פרמטר‬ ‫וגם‬ ‫הארגומנט‬ ‫גם‬ ‫אזי‬ ‫ארגומנט‬ ‫לפונקציה‬ ‫מעבירים‬ ‫שכאשר‬ ‫ערך‬ ‫אותו‬ ‫על‬ ‫מצביעים‬ ‫הפונקציה‬(aliasing)
  • 144. ‫משחק‬ ‫לוח‬ ‫לייצוג‬ ‫נתונים‬ ‫מבנה‬ ‫בחירת‬‫טריק‬ •‫הבא‬ ‫דור‬ ‫של‬ ‫לוח‬ ‫נבנה‬ ‫אנו‬ ‫כאשר‬,‫לבחון‬ ‫נצטרך‬ ‫משבצת‬ ‫כל‬ ‫עבור‬8‫שכנים‬ ‫שלה‬ •‫בעיה‬ ‫יש‬ ‫אבל‬:‫יש‬ ‫משבצת‬ ‫לכל‬ ‫לא‬8‫שכנים‬ •‫הבא‬ ‫בטריק‬ ‫נעזר‬ ‫בפתרון‬ ‫הכלליות‬ ‫את‬ ‫לשבור‬ ‫לא‬ ‫מנת‬ ‫על‬:‫לוח‬ ‫לייצר‬ ‫במקום‬ ‫בגודל‬n*n‫בגודל‬ ‫לוח‬ ‫נייצר‬n+2‫על‬n+2‫כולה‬ ‫תהי‬ ‫החיצונית‬ ‫המעטפת‬ ‫כאשר‬ False 8 8 8
  • 146. Self-Avoiding Random Walk •‫שלה‬ ‫פתרון‬ ‫ידוע‬ ‫שלא‬ ‫בעיה‬ ‫נכיר‬ ‫אנו‬ ‫היום‬(‫קיים‬ ‫לא‬ ‫גם‬ ‫הפתרון‬ ‫להיות‬ ‫יכול‬) •‫בגדול‬ ‫משבצות‬ ‫לוח‬ ‫נתון‬n*n(‫משבצות‬ ‫עיר‬) •‫קואורדינטות‬ ‫עם‬ ‫ממשבצת‬ ‫כלומר‬ ‫העיר‬ ‫מאמצע‬ ‫שלו‬ ‫טיול‬ ‫מתחיל‬ ‫הכלב‬n/2*n/2 •‫מ‬ ‫אחד‬ ‫אחיד‬ ‫אקראי‬ ‫באופן‬ ‫בוחר‬ ‫הכלב‬ ‫צעד‬ ‫כל‬-4‫כיוונים‬(‫למעלה‬,‫למעטה‬, ‫שמולא‬,‫ימינה‬)‫זו‬ ‫במשבצת‬ ‫ביקר‬ ‫לא‬ ‫הוא‬ ‫שעדיין‬ ‫בתנאי‬ ‫לשם‬ ‫וזז‬ •‫אחד‬ ‫מפעם‬ ‫יותר‬ ‫משבצת‬ ‫באותה‬ ‫לבקר‬ ‫לכלב‬ ‫אסור‬(‫הוא‬ ‫איפה‬ ‫זוכר‬ ‫הכלב‬ ‫כלומר‬ ‫היה‬) •‫מ‬ ‫אחד‬ ‫ייתכן‬ ‫אזי‬-2: •‫העיר‬ ‫לשפת‬ ‫מגיע‬ ‫הכלב‬–‫ניצחון‬ •‫להתקדם‬ ‫לאן‬ ‫לכלב‬ ‫אין‬–‫הפסד‬
  • 147.
  • 148. ‫בפייתון‬ ‫בקוד‬ ‫טעויות‬ ‫של‬ ‫שונים‬ ‫סוגים‬ ‫בפייתון‬ ‫טעויות‬ ‫סוגים‬ ‫מספר‬ ‫קיים‬: • Syntax error • Semantic error Logic error
  • 149. Syntax Error •‫טעויות‬ ‫של‬ ‫הנפוצים‬ ‫מסוגים‬ ‫אחד‬ •‫חוקים‬ ‫לפי‬ ‫לא‬ ‫קוד‬ ‫כותבים‬ ‫אנו‬ ‫כאשר‬ ‫קוראת‬ ‫הטעות‬(‫דקדוק‬ ‫חוקי‬)‫פייתון‬ ‫של‬
  • 150. Semantic Error •‫המתכנת‬ ‫שהתכוון‬ ‫מה‬ ‫לא‬ ‫עושה‬ ‫קוד‬ ‫כאשר‬ ‫שמופיעה‬ ‫טעות‬
  • 152. ‫מנגנון‬ ‫של‬ ‫עבודה‬ ‫עקרונות‬:try … except…. .1‫בין‬ ‫קוד‬try‫ו‬-except‫מתבצע‬ .2‫שלב‬ ‫ביצוע‬ ‫בזמן‬ ‫אם‬(1)‫של‬ ‫הבלוקים‬ ‫כל‬ ‫אזי‬ ‫טעות‬ ‫אין‬except‫מתבצעים‬ ‫לא‬ ‫בלוק‬ ‫של‬ ‫קוד‬ ‫ומתבצע‬else .3‫של‬ ‫ביצוע‬ ‫בזמן‬ ‫טעות‬ ‫יש‬ ‫אם‬(1)‫ראשונה‬ ‫טעות‬ ‫יש‬ ‫שבה‬ ‫קוד‬ ‫משורת‬ ‫החל‬ ‫אזי‬ ‫בלוק‬(1)‫של‬ ‫וקוד‬ ‫להתבצע‬ ‫מפסיק‬except‫מתבצע‬ ‫מתאים‬ .4except‫שלה‬ ‫בטיפוס‬ ‫חשיבות‬ ‫ללא‬ ‫כלשהי‬ ‫חריגה‬ ‫עבור‬ ‫מתבצע‬ ‫חריגה‬ ‫של‬ ‫שם‬ ‫ללא‬ .5finally‫מתבצע‬‫תמיד‬,‫לא‬ ‫או‬ ‫חריגה‬ ‫הייתה‬ ‫האם‬ ‫תלות‬ ‫ללא‬
  • 153. ‫עם‬ ‫עבודה‬ ‫בעת‬ ‫בחריגות‬ ‫טיפול‬ ‫במנגנון‬ ‫לשימוש‬ ‫דוגמא‬ ‫קבצים‬
  • 154.
  • 156. ‫האנוי‬ ‫מגדלי‬ ‫בעיית‬ ‫לפתרון‬ ‫אלגוריתם‬ •‫הבעיה‬ ‫את‬ ‫שפותר‬ ‫אלגוריתם‬ ‫פתח‬ •‫לפתרון‬ ‫ניגש‬ ‫איך‬? •‫פשוטים‬ ‫ממקרים‬ ‫נתחיל‬: •‫דיסקים‬ ‫שלושה‬:‫ל‬ ‫גדול‬ ‫דיסק‬ ‫להעביר‬ ‫חייבים‬-C‫דיסקים‬ ‫משתי‬ ‫מגדל‬ ‫להעביר‬ ‫יש‬ ‫כך‬ ‫לשם‬ ‫ל‬ ‫עליונים‬-B(‫פתרנו‬ ‫כבר‬ ‫כזו‬ ‫בעיה‬)‫מ‬ ‫הגדול‬ ‫הדיסק‬ ‫להעביר‬ ‫ואז‬-A‫ל‬-C(‫קל‬)‫מגדל‬ ‫להעביר‬ ‫ואז‬ ‫מ‬ ‫דיסקים‬ ‫שתי‬ ‫עם‬-B‫ל‬-A(‫פתרנו‬ ‫כבר‬ ‫כזו‬ ‫בעיה‬) • Solve(3,a,b,c): • Solve(2,a,c,b) • Solve(1,a,b,c) • Solve(2,b,a,c) ‫מקור‬ ‫יעד‬ ‫מיקום‬ ‫זמני‬
  • 158. ‫דינמי‬ ‫תכנות‬ •‫ספירה‬ ‫או‬ ‫אופטימיזציה‬ ‫מבעיות‬ ‫חלק‬ ‫לפתור‬ ‫המאפשרת‬ ‫שיטה‬ ‫היא‬ ‫דינמי‬ ‫תכנות‬ •‫חזקה‬ ‫די‬ ‫שני‬ ‫מצעד‬ ‫פשוטה‬ ‫יחסית‬ ‫אחד‬ ‫מצעד‬ ‫שיטה‬ •‫אופטימיזציה‬ ‫בעיית‬‫את‬ ‫למזער‬ ‫או‬ ‫למקסם‬ ‫במטרה‬ ‫לפתור‬ ‫רוצים‬ ‫שאנו‬ ‫בעיה‬ ‫היא‬ ‫מטרה‬ ‫פונקציית‬: •‫רווח‬ ‫מקסימום‬ •‫הוצאות‬ ‫מינימום‬ •‫ספירה‬ ‫בעיית‬:‫בעלי‬ ‫אובייקטים‬ ‫כמות‬ ‫לספור‬ ‫רוצים‬ ‫אנו‬ ‫שבה‬ ‫קומבינטורית‬ ‫בעיה‬ ‫נתונה‬ ‫תכונה‬
  • 159. ‫עודף‬ ‫החזרת‬ ‫בעיית‬1 •‫ערך‬ ‫בעלות‬ ‫מטבעות‬ ‫קיימות‬ ‫מסוימת‬ ‫במדינה‬1,2,5 •‫עודף‬ ‫להחזיר‬ ‫ניתן‬ ‫אפשרויות‬ ‫בכמה‬ ‫לדעת‬ ‫רוצים‬ ‫אנו‬N,‫מטבעות‬ ‫בין‬ ‫הסדר‬ ‫כאשר‬ ‫חשוב‬ ‫כן‬ ‫בעודף‬ •‫ב‬ ‫נסמם‬-F(N)‫עודף‬ ‫להחזיר‬ ‫ניתן‬ ‫שבעזרתן‬ ‫האפשרויות‬ ‫כמות‬ ‫את‬N •‫את‬ ‫לחשב‬ ‫איך‬ ‫לדעת‬ ‫שלנו‬ ‫מטרה‬F(N) •‫עבור‬ ‫נוסחה‬ ‫לכתוב‬ ‫נתחיל‬F(N),‫ש‬ ‫נניח‬-N‫מ‬ ‫גדול‬-5,‫עודף‬ ‫להחזיר‬ ‫אפשר‬ ‫איך‬N?‫יש‬ ‫ראשון‬ ‫ממטבע‬ ‫להתחיל‬,‫או‬ ‫להיות‬ ‫יכול‬ ‫ראשון‬ ‫מטבע‬1‫או‬2‫או‬5,‫אותו‬ ‫שנחזיר‬ ‫לאחר‬ ‫העודף‬ ‫שאר‬ ‫להחזיר‬ ‫נצטרך‬F(N-1)‫או‬F(N-2)‫או‬F(N-5)‫בהתאמה‬ •‫נסיק‬ ‫מכאן‬(‫הסכום‬ ‫עקרון‬:)F(N)=F(N-1)+F(N-2)+F(N-5)‫עבור‬N>5
  • 160. ‫עודף‬ ‫החזרת‬ ‫בעיית‬1 •‫אלגוריתם‬: •‫אתחול‬:‫שבה‬ ‫ריקה‬ ‫רשימה‬ ‫ניקח‬F‫של‬ ‫חישוב‬ ‫התוצאות‬ ‫כל‬ ‫את‬ ‫נשמר‬F(n),‫נגדיר‬ F[1]=F[0]=1 •‫איטרציות‬:‫לכל‬i=2,3,…,N‫נחשב‬F(i)‫שקיבלנו‬ ‫נוסחה‬ ‫לפי‬ •‫נחזיר‬F(N)
  • 162. ‫רפסון‬ ‫ניוטון‬ ‫ששיטת‬ ‫שורש‬ ‫חישוב‬ •‫דרכים‬ ‫במספר‬ ‫חיובי‬ ‫ממספר‬ ‫שורש‬ ‫לחשב‬ ‫אפשר‬ •‫רפסון‬ ‫ניוטון‬ ‫שיטת‬ ‫הנקראת‬ ‫איטרטיבית‬ ‫שיטה‬ ‫היא‬ ‫מהן‬ ‫אחד‬ •‫הרקורסיה‬ ‫בעזרת‬ ‫אותה‬ ‫ונממש‬ ‫השיטה‬ ‫את‬ ‫נלמד‬ ‫היום‬ •‫ממספר‬ ‫שורש‬ ‫לחישוב‬ ‫אלגוריתם‬A •‫התחלתי‬ ‫מניחוש‬ ‫נתחיל‬x. •‫עוד‬ ‫כל‬abs(x^2-a)‫מ‬ ‫גדול‬-epsilon‫ל‬ ‫חדש‬ ‫ערך‬ ‫נחשב‬-x‫הבאה‬ ‫נוסחה‬ ‫בעזרת‬:x=1/2(x+a/x) http://www.codeskulptor.org/#user44_gVh7uI6o7fOJqq4.py
  • 163. ‫עודף‬ ‫החזרת‬ •‫עודף‬ ‫להחזיר‬ ‫אפשרויות‬ ‫כל‬ ‫עם‬ ‫רשימה‬ ‫שמחזירה‬ ‫רקורסיבית‬ ‫פונקציה‬ ‫כתבו‬ N‫מטבעות‬ ‫בעזרת‬1,2,5 http://www.codeskulptor.org/#user44_4d4p0BUt7OJH0YZ_0.py
  • 164. ‫ביותר‬ ‫הגדול‬ ‫המשותף‬ ‫המחלק‬ ‫חישוב‬ If q=0 then gcd(p,q)=p If p>q then gcd(p,q)=gcd(q,p%q)
  • 165. ‫תמורות‬-permutation •‫כתבו‬‫רקורסיבית‬ ‫פונקציה‬‫שמקבלת‬‫חיובי‬ ‫שלם‬ ‫מספר‬n‫ומחזירה‬‫כל‬ ‫רשימת‬ ‫מ‬ ‫מספרים‬ ‫של‬ ‫התמורות‬-1‫עד‬n
  • 166. ‫השיעור‬ ‫של‬ ‫מטרה‬ •‫אוסף‬ ‫היא‬ ‫קבוצה‬(‫סדר‬ ‫אין‬)‫איברים‬ ‫של‬,‫יותר‬ ‫לא‬ ‫בקבוצה‬ ‫מופיע‬ ‫איבר‬ ‫כל‬ ‫כאשר‬ ‫אחד‬ ‫מפעם‬ •‫לשינוי‬ ‫ניתן‬ ‫שלא‬ ‫מטיפוס‬ ‫להיות‬ ‫חייבים‬ ‫בקבוצה‬ ‫האיברים‬
  • 168. ‫קבוצות‬ ‫של‬ ‫מתודות‬ ‫קבוצות‬ ‫על‬ ‫לפעולות‬ ‫דומות‬ ‫המתודות‬ ‫הסתברות‬ ‫בקורס‬ ‫אותם‬ ‫שלמדנו‬
  • 169. ‫של‬ ‫מנגנון‬ ‫בעזרת‬ ‫קבוצה‬ ‫הגדרת‬Set Comprehension •‫של‬ ‫למנגנון‬ ‫בדומה‬ListComprehension‫קבוצות‬ ‫גם‬ ‫להגדיר‬ ‫ניתן‬(‫וגם‬ ‫מילונים‬)
  • 170. ‫תרגיל‬:‫ברשימה‬ ‫שונות‬ ‫מילים‬ ‫כמות‬ •‫פונקציה‬ ‫כתב‬‫המקבלת‬‫מחרוזות‬ ‫של‬ ‫רשימה‬‫ומחזירה‬‫שונות‬ ‫מילים‬ ‫כמות‬ ‫ברשימה‬ •‫אלגוריתם‬: •‫לקבוצה‬ ‫אותה‬ ‫ונוסיף‬ ‫ברשימה‬ ‫מילה‬ ‫כל‬ ‫על‬ ‫נעבור‬ •‫קבוצה‬ ‫של‬ ‫גודל‬ ‫נחזיר‬
  • 171. ‫יותר‬ ‫לדעת‬ ‫רוצים‬? • https://www.programiz.com/python-programming/set
  • 172. ‫קפואות‬ ‫קבוצות‬ •‫בפייתון‬ ‫לשינוי‬ ‫שניתן‬ ‫טיפוס‬ ‫הן‬ ‫קבוצות‬ •‫לשינוי‬ ‫ניתנות‬ ‫שלא‬ ‫קבוצות‬ ‫של‬ ‫טיפוס‬ ‫קיים‬ ‫בפייתון‬frozenset
  • 173. ‫מסכמת‬ ‫שאלה‬ •‫באורך‬ ‫שונות‬ ‫מילים‬ ‫כמה‬6‫מילה‬ ‫של‬ ‫מאותיות‬ ‫להרכיב‬ ‫ניתן‬MATHEMATICA •‫קומבינטורית‬ ‫שאלה‬:‫כפל‬ ‫וכלל‬ ‫סכום‬ ‫בכלל‬ ‫נעזר‬ •‫מורכב‬ ‫טיפה‬ ‫פתרון‬,‫עצמינו‬ ‫את‬ ‫לבדוק‬ ‫כדי‬ ‫בפייתון‬ ‫נעזר‬ •‫אלגוריתם‬:‫בגודל‬ ‫הפרמוטציות‬ ‫כל‬ ‫נייצר‬6‫אותם‬ ‫ונשמור‬ ‫המילה‬ ‫של‬ ‫מאותיות‬ ‫בקבוצה‬,‫קבוצה‬ ‫של‬ ‫גודל‬ ‫נחזיר‬ 2223212211311121111111111 29730 !2!2!2 !6 !2!3 !6 1 5 1 2 1 1 !2!2 !6 2 5 2 3 !3 !6 3 6 1 1 !2 !6 4 6 1 3 !6 6 7                                                            
  • 175. ‫סיבוכיות‬-complexity •‫היא‬ ‫ומאלגוריתמים‬ ‫שלנו‬ ‫מקוד‬ ‫ביותר‬ ‫החשובה‬ ‫הדרישה‬‫חוקי‬ ‫קלט‬ ‫שלכל‬ ‫האלגוריתם‬‫תמיד‬‫נכונה‬ ‫תשובה‬ ‫מחזיר‬ •‫ולתחזוקה‬ ‫להבנה‬ ‫קל‬ ‫יהי‬ ‫שלנו‬ ‫שהקוד‬ ‫רצינו‬ ‫גם‬ ‫בנוסף‬ •‫יעילות‬ ‫דרישת‬‫מאוד‬ ‫וחשובה‬ ‫קריטית‬ ‫דרישה‬ ‫גם‬ ‫היא‬ ‫היום‬ ‫נדבר‬ ‫שעלינו‬ •‫פיבונאצ‬ ‫לסדרת‬ ‫מימושים‬ ‫שתי‬ ‫ראינו‬'‫י‬:‫כבר‬ ‫ושני‬ ‫שניה‬ ‫חלקי‬ ‫במשך‬ ‫מהר‬ ‫רץ‬ ‫אחד‬ ‫עבור‬ ‫סביר‬ ‫בזמן‬ ‫עוצר‬ ‫לא‬N=64
  • 176. ‫סיבוכיות‬-complexity •‫להבין‬ ‫נוכל‬ ‫סיבוכיות‬ ‫ניתוח‬ ‫בעזרת‬: •‫יעילה‬ ‫יותר‬ ‫בצורה‬ ‫קוד‬ ‫לממש‬ ‫איך‬ •‫מתי‬ ‫להחליט‬,‫ולמה‬,‫ולהשתמש‬ ‫לבחור‬ ‫כדאי‬ ‫נתונים‬ ‫מבנה‬ ‫ובאיזה‬ •‫ראשון‬ ‫במקום‬ ‫תמיד‬ ‫כמעת‬ ‫היא‬ ‫קוד‬ ‫של‬ ‫נכונות‬ ‫שדרישת‬ ‫לזכור‬ ‫כדאי‬,‫יעילות‬ ‫גם‬ ‫אבל‬ ‫חשובה‬ ‫מאוד‬ •‫החשובות‬ ‫השאלות‬: •‫רץ‬ ‫שלנו‬ ‫קוד‬ ‫זמן‬ ‫כמה‬?–‫ריצה‬ ‫זמן‬ ‫סיבוכיות‬ ‫בשאלה‬ ‫נתרכז‬ ‫בעיקר‬ ‫אנו‬ •‫שלנו‬ ‫קוד‬ ‫משתמש‬ ‫זיכרון‬ ‫בכמה‬? •‫שלנו‬ ‫קוד‬ ‫ביצועי‬ ‫לשפר‬ ‫אפשר‬ ‫האם‬?‫ואיך‬? •‫דרישת‬"‫חשובה‬ ‫גם‬ ‫לתחזוקה‬ ‫וקל‬ ‫קריא‬ ‫קוד‬"‫במקום‬ ‫באה‬ ‫היא‬ ‫המקרים‬ ‫ברוב‬ ‫אבל‬ ‫שלישי‬
  • 177. ‫בקלט‬ ‫תלויה‬ ‫פעולות‬ ‫כמות‬ •‫ב‬ ‫גישה‬,'‫טובה‬ ‫גישה‬ ‫היא‬ •‫בקלט‬ ‫תלויה‬ ‫ריצה‬ ‫פעולות‬ ‫כמות‬ ‫אם‬,‫אותה‬ ‫נמדוד‬ ‫איך‬? •‫גישות‬ ‫מספר‬ ‫קיים‬: •‫מהיר‬ ‫הכי‬ ‫ריצה‬ ‫זמן‬‫אורך‬ ‫באותו‬ ‫הקלטים‬ ‫כל‬ ‫בין‬best case •‫אורך‬ ‫באותו‬ ‫הקלטים‬ ‫כל‬ ‫בין‬ ‫ממוצע‬ ‫ריצה‬ ‫זמן‬average case •‫אורך‬ ‫באותו‬ ‫הקלטים‬ ‫כל‬ ‫בין‬ ‫ביותר‬ ‫הגרוע‬ ‫במקרה‬ ‫ריצה‬ ‫זמן‬worst case •‫בגודל‬ ‫רשימה‬ ‫עבור‬ ‫קודמת‬ ‫מדוגמא‬ ‫בלולאה‬ ‫ליניארי‬ ‫חיפוש‬ ‫עבור‬n‫נקבל‬: •best case:‫פעולה‬1 •average case:n/2‫פעולות‬ •:worst casen‫פעולות‬
  • 178. ‫תרגיל‬ •‫קלט‬ ‫ביותר‬ ‫הגרוע‬ ‫במקרה‬ ‫התוכנה‬ ‫תעבוד‬ ‫צעדים‬ ‫כמה‬n: •‫תשובה‬:5n+2000~5n~c*n •O(n)