Download as pdf or txt
Download as pdf or txt
You are on page 1of 47

‫רות בורנשטין‬

‫שיעור ‪ :1‬מבוא‪ ,‬משתנים ואופרטורים‬ ‫‪rutbor@edu.hac.ac.il‬‬


https://www.geektime.co.il/python-package-index-3653-libraries/
MOST POPULAR PROGRAMMING LANGUAGES 2020
https://www.itprotoday.c
om/programming-
languages/most-popular-
programming-languages-
what-s-hot-what-s-not-
2022
?‫מי משתמש בפייתון‬
You Tube
Dropbox
Intel
Ebay
Instagram
Google
Amazon
Nasa
And more…
‫מה זה ‪?PYTHON‬‬
‫מטרה חשובה של מפתחי ‪ Python‬היא שהשפה תהיה‬
‫"כיפית" לשימוש‪.‬‬

‫דבר זה בא לידי ביטוי בשם השפה –‬

‫אשר נבחר כמחווה לקבוצה הקומית "מונטי פייתון"‪.‬‬


‫מה זה ‪?PYTHON‬‬
‫פייתון תוכננה תוך שימת דגש על קריאוּת הקוד‪ ,‬וכוללת מבנים המיועדים לאפשר‬

‫ביטוי של תוכניות מורכבות בדרך קצרה וברורה‪.‬‬

‫אחד המאפיינים הבולטים בתחביר השפה הוא השימוש בהזחה להגדרת בלוקים של‬

‫קוד )ללא שימוש בסוגריים או במילים שמורות לצורך כך‪ ,‬כמו ברוב השפות‬

‫הנפוצות(‪.‬‬

‫פייתון היא שפה מרובת־פרדיגמות‪ ,‬המאפשרת תכנות מונחה‪-‬עצמים‪ ,‬תכנות‬

‫פרוצדורלי‪ ,‬ובמידה מסוימת גם תכנות פונקציונלי‪.‬‬


‫היתרונות של פייתון‬

‫• פייתון פשוטה בהרבה ללימוד‪ ,‬לקריאה ולכתיבה משפות אחרות‪.‬‬

‫• פייתון גורמת לקוד שכתוב בה להיראות מסודר ופשוט יותר בגלל שהיא מבטלת‬

‫סיבוכים מיותרים שקיימים בשפות אחרות‪.‬‬

‫• פייתון מכילה בתוכה אוסף מכובד מאד של ספריות סטנדרטיות‪ ,‬כלומר ספריות‬

‫שניתן להסתמך על קיומן בכל מימוש של פייתון כמו ספריות לטיפול בטקסט‬

‫ומחרוזות וספריות לפונקציות מתמטיות‪.‬‬


‫דוגמא לתוכנית‬

‫)"!‪print("Hello, World‬‬

‫זהו ?‬
‫כן!‬
‫מאפיינים תחביריים‬

‫המבנה של בלוקי קוד בתוכנית נקבע על ידי ההזחה שלהם‪:‬‬ ‫‪‬‬


‫עצם הזחת הבלוק מגדירה אותו כבלוק תכנותי שונה‪.‬‬

‫תנאים בפקודות תנאי ולולאות נכתבים ללא סוגריים‪,‬‬ ‫‪‬‬


‫ומזוהים על ידי המהדר בעזרת מילים שמורות ותו '‪':‬‬

‫פקודות מופרדות לרוב על ידי מעבר שורה‪ .‬שימוש בתו ';'‬ ‫‪‬‬
‫)נקודה ופסיק( להפרדה בין פקודות הוא אופציונלי‪.‬‬
‫הזחה קובעת את גבולות‬
‫הבלוק‬
WHITESPACE MATTERS!
‫שפת מכונה ושפת תכנות‬

‫שפת מכונה – זו השפה בה המחשב מדבר והיא כוללת ‪ 2‬אותיות בלבד ‪ 0‬ו‪.1‬‬

‫נקראת גם שפה בינארית‪ .‬זו שפה מורכבת מאוד‪ .‬בקידוד בינארי בלתי אפשרי‬

‫לכתוב תוכנות מורכבות‪.‬‬

‫לכן‪ ,‬פיתחו את שפות התכנות העיליות‪ ,‬המאפשרות כתיבה במילים ובתחביר‬

‫אנושי‪ ,‬שמובן יותר לבני אדם וקל יחסית לזכירה‪ .‬יש הרבה שפות תכנות‬

‫כשהנפוצות הן ‪ ,c++‬ג'אווה ופייתון‪.‬‬


‫מהדר )‪(COMPILER‬‬
‫כל מחשב מסוגל להריץ תוכניות הכתובות בשפת מכונה )שפת ‪ 0‬ו‪ .(1‬לכן‪ ,‬על‬

‫מנת להריץ תוכנית מסוימת‪ ,‬הכתובה בשפה שאינה שפת המכונה של המחשב‬

‫המריץ‪ ,‬ראשית יש לתרגמה לשפה זו‪.‬‬

‫בסיום התרגום נוצר קובץ הכתוב בשפת מכונה‪ ,‬הניתן להרצה בכל עת‪ .‬הקובץ‬

‫שנוצר‪ ,‬מבוצע ישירות על המעבד‪.‬‬

‫תרגום זה מבוצע על ידי מהדר )‪(Compiler‬‬


‫המפרש )‪(INTERPRETER‬‬

‫קיימת דרך אחרת שבה יכולים מחשבים לבצע את התוכניות המוצגות להם‪.‬‬

‫בדרך זו לא מתורגמת התכנית כולה לשפה ברמה נמוכה יותר‪ .‬במקום זאת כל‬

‫אחד מן המשפטים העיליים בתכנית מתורגם ברגע שמגיעים אליו להוראות‬

‫בשפת מכונה והוא מבוצע מיד‪.‬‬

‫המנגנון האחראי לתרגום מקומי וביצוע מידי הוא המפרש )‪.(Interpreter‬‬


‫בפייתון פשוט כותבים ומריצים‪.‬‬

‫סביבת העבודה של פייתון מגיעה עם מפרש )‪ (Interpreter‬שמאפשר כתיבה ישירה של‬


‫פקודות אליו‪ ,‬אפילו בלי צורך לכתוב תוכנית או קובץ‪.‬‬

‫בצורה כזו מאוד נוח להתנסות בשפה‪,‬‬


‫לבצע חישובים מהירים ולבדוק דברים קטנים במהירות‪,‬‬
‫בלי הצורך לכתוב תוכנית שלמה‪.‬‬
‫יתרונות וחסרונות‬

‫‪ .1‬תהליך ההידור הוא תהליך מורכב מאד‪ ,‬הספציפי למכונה מסוימת‪ .‬קוד‬

‫המכונה הנוצר מתחשב בחומרה הספציפית עליה הקוד עתיד לרוץ וכן במערכת‬

‫ההפעלה המותקנת עליה‪ .‬כלומר במידה והידרנו תכנית מסוימת באמצעות‬

‫מהדר המותאם למכונה מסוימת‪ ,‬התוכנית תרוץ על מכונה זו בלבד‪ .‬מפרש‪,‬‬

‫לעומת זאת‪ ,‬יאפשר הרצה של התוכנית כמעט בכל מכונה משום שהתוכנית‬

‫תתורגם על כל מכונה מחדש‪.‬‬


‫יתרונות וחסרונות ‪ -‬המשך‬

‫‪ .2‬ברור כי שימוש במפרש עלול לצרוך משאבים רבים בשל העובדה כי התוכנית‬

‫מתורגמת כל פעם מחדש‪ .‬בנוסף‪ ,‬דרישות מסוימות של התוכנית )כמו הקצאת‬

‫זיכרון( עלולים לקחת יותר זמן בעת שימוש במפרש‪ ,‬לאור העובדה שהתוכנית‬

‫לא עובדת ישירות מול מערכת ההפעלה‪ ,‬אלא מול המפרש‪.‬‬


‫קבצי ‪PYC‬‬

‫לאור הבעייתיות שהוצגה‪ ,‬שימוש טהור במפרש נדיר‪ ,‬ונעשה בעיקר ברשת‬

‫האינטרנט‪ ,‬שם יש צורך בגמישות רבה‪.‬‬

‫לרוב‪ ,‬פייתון בדומה לשפות תכנות אחרות‪ ,‬תהדר את הקבצים לשפת ביניים‬

‫נמוכה והם ישמרו בסיומת ‪.pyc‬‬

‫לאחר סיום שלב זה‪ ,‬המפרש יריץ את קוד הביניים‪.‬‬


‫בפייתון אפשר לעשות הכול‬
‫אפשר לעבוד ישירות דרך המפרש‪:‬‬

‫ואפשר לכתוב תוכניות ארוכות בכתבן )‪(editor‬‬


‫התוכנות הנפוצות לתוכניות ארוכות‬
‫לפייתון שתי גרסאות ראשיות‪:‬‬
‫‪ .1‬גרסה ‪.2.X‬‬
‫‪ .2‬גרסה ‪.3.X‬‬
‫זאת אומרת כל מה שמתחיל ב‪ 2‬או ב‪ 3‬ואחרי‬
‫הנקודה מספר כלשהו ‪.‬‬
‫יש הבדלים גדולים ביניהם !‬
‫פייתון ‪ 3.X‬לעומת פייתון ‪2.X‬‬
‫גרסת ‪ 2.7‬יצאה באמצע ‪ .2010‬גרסה זו איננה בפיתוח‬
‫יותר )למעט תיקון באגים(‪ ,‬והתמיכה בה הסתיימה בשנת‬
‫‪.2020‬‬

‫גרסת ‪ 3.0‬יצאה ב‪ 2008‬ומאז כבר יצאו הרבה מהדורות‬


‫מעודכנות‪ .‬וזו הגרסה היציבה של פייתון‪.‬‬
‫פייתון ‪ 3.X‬לעומת פייתון ‪2.X‬‬
‫ישנם הבדלים גדולים בין הגרסאות‬
‫לדוגמה‪:‬‬
‫בגרסה הישנה‪print "The answer is", 2*2 :‬‬
‫בגרסה החדשה‪Print ("The answer is", 2*2) :‬‬

‫ועוד דוגמה‪:‬‬
‫ומתחילים‪...‬‬
‫ערכים‬
‫ערך הוא אחד הדברים הבסיסיים בו משתמשת תכנית מחשב‪.‬‬

‫סוגי הערכים הקיימים בפייתון הם‪:‬‬

‫‪ .1‬מספר שלם ‪ 1,2,13 – int‬וכו'‬

‫‪ .2‬מספר עשרוני ‪ 3.14 ,0.5 – float‬וכו'‬

‫‪ .3‬מחרוזת ‪“hello world” - str‬‬


‫ערכים‬
‫ניתן לשאול באמצעות הפונקציה )(‪ type‬מהו סוג הערך שבידינו‪:‬‬
‫)‪>>> type(3‬‬
‫>’‪<class ‘int‬‬
‫)‪>>> type(3.14‬‬
‫>'‪<class 'float‬‬
‫)"‪>>> type("3.14‬‬
‫>'‪<class 'str‬‬
‫המרת ערכים‬
‫ניתן להמיר ערכים לערכים מסוגים שונים‪:‬‬
‫)‪>>> float(5‬‬
‫‪5.0‬‬
‫)‪>>> int(10.6‬‬
‫‪10‬‬
‫)‪>>> int(-10.6‬‬
‫‪-10‬‬
‫)'‪>>> float('2.5‬‬
‫‪2.5‬‬
‫המרת ערכים‬
.‫ניתן להמיר ערכים לערכים מסוגים שונים‬
:‫ תתקבל שגיאה‬,‫אם ננסה להמיר בצורה לא הגיונית או לא אפשרית‬
>>> str(25)
'25'
>>> int('1p')
Traceback (most recent call last):
File "<interactive input>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '1p'
‫משתנים‬

‫”‪>>>name=“Sharon‬‬ ‫משתנה הוא שם המתייחס לערך‪.‬‬


‫)‪>>>type(name‬‬

‫>’‪<class ‘str‬‬ ‫יצירת משתנה בפייתון היא פשוטה‬


‫‪>>>num=3‬‬
‫מאוד – מציינים את שם המשתנה‬
‫)‪>>>type(num‬‬

‫>’‪<class ‘int‬‬ ‫ואת הערך השייך לו‪.‬‬


‫‪>>>other_num=1.5‬‬

‫)‪>>>type(other_num‬‬ ‫בפייתון אין צורך להצהיר על‬


‫>’‪<class ‘float‬‬
‫סוג הטיפוס או גודלו‬
‫שינוי הערך‬

website = "apple.com"
print(website)
#assigning a new value to website
website = "programiz.com"
Output:
print(website) apple.com
print(type(website)) programiz.com
<class 'str'>
website = 9 <class 'int'>
print(type(website))
‫השמה מרובה‬

‫ניתן לעשות השמה לכמה פרמטרים באופן הבא‪:‬‬


‫"‪a, b, c = 5, 3.2, "Hello‬‬
‫)‪print(a‬‬
‫)‪print(b‬‬
‫)‪print(c‬‬ ‫‪Output:‬‬
‫‪5‬‬
‫‪3.2‬‬
‫‪Hello‬‬
‫השמה מרובה‬

:‫השמה מרובה לערך יחיד אפשר לעשות באופן הבא‬


x = y = z = "same"
print(x)
print(y)
print(z) Output:
same
same
same
‫שמות משתנים ‪ -‬כללים‬

‫• שם משתנה יכול להכיל רק אותיות אנגליות )גדולות או קטנות( או‬


‫ספרות‪ .‬משתנה לא יכול להכיל סימנים מיוחדים כמו‪ # ,! :‬או @‪.‬‬

‫• שם משתנה אינו יכול להתחיל בספרה‪.‬‬

‫• נהוג להשתמש באותיות קטנות באנגלית לשמות משתנים‪ ,‬להשתמש‬


‫באותיות גדולות לקבועים ולהשתמש בקו תחתון כמפריד בין מלים‪.‬‬

‫• אם מנסים להשתמש בשם לא חוקי עבור משתנה‪ ,‬מתקבלת הודעת‬


‫שגיאה‪.‬‬
‫מילים שמורות‬

.‫ בהן אסור להשתמש כשמות משתנים‬,‫ מילים שמורות בפייתון‬33 ‫ישנן‬

:‫מלים אלו הן‬


False await else import pass
None break except in raise
True class finally is return
and continue for lambda try
as def from nonlocal while
assert del global not with
async elif if or yield
‫אופרטורים‬

‫אופרטורים הם סמלים מיוחדים‪ ,‬שמסמלים חישובים פשוטים‬

‫כדוגמת חיבור וכפל‪.‬‬

‫סדר הפעולות בפייתון דומה לסדר הקדימויות המתמטי הרגיל‪:‬‬

‫קודם כל סוגריים‪ ,‬לאחר‪-‬מכן חזקה‪ ,‬כפל וחילוק‪ ,‬חיבור וחיסור‪.‬‬

‫החישוב מתבצע משמאל לימין‪.‬‬


‫אופרטורי פעולה‬

‫דוגמה‬ ‫משמעות‬ ‫אופרטור‬


‫‪2+3=5‬‬ ‫חיבור‬ ‫‪+‬‬
‫‪2-3=-1‬‬ ‫חיסור‬ ‫‪-‬‬
‫‪2*3=6‬‬ ‫כפל‬ ‫*‬
‫‪2**3 = 8‬‬ ‫חזקה‬ ‫**‬
‫‪7/3 = 2.5‬‬ ‫חלוקה ממשית‬ ‫‪/‬‬
‫‪7//3 = 2‬‬ ‫חלוקת שלמים‬ ‫‪//‬‬
‫‪7%3 = 1‬‬ ‫שארית‬ ‫‪%‬‬
‫אופרטורי פעולה ‪ -‬המשך‬

‫דוגמה‬ ‫דוגמה‬ ‫אופרטור‬


‫‪x=5‬‬ ‫‪x=5‬‬ ‫=‬
‫‪x=x+5‬‬ ‫‪x += 5‬‬ ‫=‪+‬‬
‫‪x=x-5‬‬ ‫‪x -= 5‬‬ ‫=‪-‬‬
‫‪x=x*5‬‬ ‫‪x *= 5‬‬ ‫=*‬
‫‪x=x/5‬‬ ‫‪x /= 5‬‬ ‫=‪/‬‬
‫‪x=x%5‬‬ ‫‪x %= 5‬‬ ‫=‪%‬‬
‫‪x = x // 5‬‬ ‫‪x //= 5‬‬ ‫=‪//‬‬
‫אופרטורי השוואה‬

‫דוגמה‬ ‫משמעות‬ ‫אופרטור‬


‫‪x == y‬‬ ‫שווה ל‪-‬‬ ‫==‬
‫‪x>y‬‬ ‫גדול מ‪-‬‬ ‫>‬
‫‪x<y‬‬ ‫קטן מ‪-‬‬ ‫<‬
‫‪x!=y‬‬ ‫שונה מ‪-‬‬ ‫=!‬
‫‪x<=y‬‬ ‫קטן מ‪ -‬או שווה ל‪-‬‬ ‫=<‬
‫‪x>=y‬‬ ‫גדול מ‪ -‬או שווה ל‪-‬‬ ‫=>‬
PRINT-‫פונקציית ה‬

name=“Yoram”

num=3

other_num=1.5

print (name)
Output:
print (num) ‘Yoram’
3
print (other_num)
1.5
‫פונקציית ה‪PRINT-‬‬

‫שימו לב שפונקציית ה‪ print‬מוסיפה באופן‬


‫דיפולטיבי ירידת שורה בסופה‪.‬‬

‫אם נרצה לשנות זאת‪ ,‬לדוגמה‪ ,‬לרווח‬


‫במקום ירידת שורה‪ ,‬נעשה זאת כך‪:‬‬

‫)' '=‪print(“hello world”, end‬‬


PRINT-‫פונקציית ה‬
:‫עוד אופציות‬

print(1, 2, 3, 4)

print(1, 2, 3, 4, sep='*')

print(1, 2, 3, 4, sep='#', end='&')

Output:
1234
1*2*3*4
1#2#3#4&
INPUT-‫פונקציית ה‬

‫ על מנת לקרוא קלט מהמשתמש‬input ‫נשתמש בפונקציה‬

name=input(“please enter your name: ”)

print (name)

Output:

please enter your name: Sharon

‘Sharon’
INPUT-‫פונקציית ה‬
string ‫ מחזירה‬input() ‫שימו לב! הפונקציה‬
int‫ יש לעשות המרה מפורשת ל‬,‫כאשר אנו מעוניינים לקלוט מספר‬

num = input(“please enter a number: “)


type(num)
Output:
num = int(num)
print(num+2) please enter a number: 5

<class ‘str’>

7
‫כמה נקודות נוספות‪:‬‬
‫• כמו בשפות רבות אחרות‪ ,‬התו ’‪ ‘\n‬בפונקציה ‪ print‬משמעותו שורה חדשה‬
‫• הערה בקוד תסומן על ידי ‪ #‬בתחילת השורה‬
‫לדוגמה‪:‬‬
‫=============== ‪#=============== class ex1‬‬
‫• הערה בת כמה שורות תתחיל ותסתיים על ידי ‪ 3‬מרכאות‬
‫לדוגמה‪:‬‬
‫=============== ‪"""=============== class ex1‬‬
‫"""‪This program implements a calculator‬‬
‫כמה נקודות נוספות‪:‬‬
‫• שורה ארוכה אפשר לחלק בצורה הזו‪:‬‬
‫\‪a=1+2+3+‬‬
‫\‪4+5+6+‬‬
‫‪7+8+9‬‬
‫•כשזה בתוך סוגריים‪ ,‬אין צורך להוסיף כלום‪:‬‬
‫‪a = (1 + 2 + 3 +‬‬
‫‪4+5+6+‬‬
‫)‪7 + 8 + 9‬‬

You might also like