Smart-World Surf

יחידה 1: יסודות פייתון

הכרות עם מבנה השפה, משתנים, סוגי נתונים בסיסיים ואופרטורים.

ברוכים הבאים ליחידה הראשונה בקורס "תכנות וניתוח נתונים בשפת פייתון" (20606) – "יסודות פייתון". יחידה זו היא אבן הפינה להבנת השפה כולה, והיא תכסה את מבנה השפה הבסיסי, אופן הפעולה של משתנים, סוגי הנתונים העיקריים בפייתון ואת האופרטורים השונים המאפשרים לנו לבצע פעולות על נתונים אלו. הבנה מעמיקה של נושאים אלו חיונית לא רק לכתיבת קוד פונקציונלי, אלא גם לפתרון שאלות מעקב קוד (Code Tracing) ושאלות תיאורטיות במבחן.

מבנה השפה וביצוע קוד

פייתון היא שפה אינטרפרטטיבית (מפורשת), מה שאומר שהקוד נבדק ומבוצע שורה אחר שורה על ידי תוכנה ייעודית הנקראת מפרש (Interpreter). בניגוד לשפות מהודרות (Compiled languages), אין שלב הידור נפרד לפני ההרצה.

הכרות עם סביבת פייתון

ניתן להריץ קוד פייתון בשתי דרכים עיקריות: במצב אינטראקטיבי (Interactive Mode), בו כל פקודה מבוצעת מיד לאחר הקשתה, או על ידי שמירת הקוד בקובץ עם סיומת .py והרצתו באמצעות המפרש.

מפרש (Interpreter): תוכנה המבצעת הוראות הכתובות בשפת תכנות (כמו פייתון) באופן ישיר, שורה אחר שורה, ללא צורך בשלב הידור מקדים.

הערות (Comments)

הערות הן טקסט בקוד שאינו מבוצע על ידי המפרש. הן משמשות להסבר הקוד, תיעוד, או השבתה זמנית של קטעי קוד. בפייתון, הערה מתחילה בסימן # ונמשכת עד סוף השורה.

הצהרות וביטויים (Statements and Expressions)

קוד פייתון מורכב מהצהרות וביטויים. הבנת ההבדל ביניהם חשובה.

הצהרה (Statement): יחידת קוד המבצעת פעולה כלשהי, אך לא בהכרח מחזירה ערך. דוגמאות: השמת משתנה (x = 5), הדפסה (print("Hello")), לולאה (for i in range(5):).
ביטוי (Expression): יחידת קוד המעריכה (evaluates) לערך מסוים. דוגמאות: 5 + 3 (מעריך ל-8), "hello" + " world" (מעריך ל-"hello world"), x > 0 (מעריך ל-True או False).

משתנים וסוגי נתונים בסיסיים

משתנים הם שמות שאנו נותנים למיקומי זיכרון המכילים נתונים. פייתון היא שפה עם טיפוסיות דינמית, כלומר אין צורך להצהיר על סוג המשתנה מראש.

הגדרת משתנים

משתנה מוגדר באמצעות אופרטור ההשמה =. לדוגמה: age = 30. שם המשתנה חייב להתחיל באות או בקו תחתון, ויכול להכיל אותיות, מספרים וקו תחתון.

משתנה (Variable): שם המשמש להתייחסות לערך מסוים בזיכרון המחשב.
טיפוסיות דינמית (Dynamic Typing): מאפיין של שפת תכנות שבה סוג הנתונים של משתנה נקבע בזמן ריצה, וניתן לשנותו במהלך חיי התוכנית.

סוגי נתונים בסיסיים

פייתון תומכת במספר סוגי נתונים בסיסיים.

מספרים שלמים (int)

מייצגים מספרים שלמים (חיוביים, שליליים ואפס) ללא נקודה עשרונית. לדוגמה: 10, -5, 0.

מספרים עשרוניים (float)

מייצגים מספרים ממשיים עם נקודה עשרונית. לדוגמה: 3.14, -0.5, 2.0.

מחרוזות (str)

רצף של תווים, מוקף במרכאות בודדות (') או כפולות ("). לדוגמה: "Hello", 'Python'.

ערכים בוליאניים (bool)

מייצגים ערכי אמת או שקר: True או False. משמשים בעיקר בבקרת זרימה וביטויים לוגיים.

המרה בין סוגי נתונים (Type Conversion)

לעיתים קרובות נצטרך להמיר נתון מסוג אחד לאחר. ניתן לעשות זאת במפורש באמצעות פונקציות כמו int(), float(), str(), bool(). לדוגמה: int("10") יחזיר את המספר השלם 10. המרה מרומזת (Implicit conversion) מתרחשת אוטומטית במקרים מסוימים, למשל כאשר מבצעים פעולה בין int ל-float, התוצאה תהיה float.

טיפוסיות דינמית ושגיאות סוג: למרות שטיפוסיות דינמית נוחה, היא מקור נפוץ לשגיאות, במיוחד במבחנים. פייתון לא תאפשר לכם לבצע פעולות שאינן הגיוניות מבחינת סוגי הנתונים (לדוגמה, חיבור מספר למחרוזת ללא המרה מפורשת). שימו לב היטב לסוגי המשתנים בכל שלב של מעקב קוד, ובדקו האם מתבצעת המרה מפורשת או מרומזת. טעות נפוצה היא ניסיון לשרשר (concatenate) מחרוזת ומספר ללא המרת המספר למחרוזת קודם לכן.

אופרטורים וביטויים

אופרטורים הם סימנים המבצעים פעולות על אופרנדים (הערכים שעליהם פועל האופרטור).

אופרטורים חשבוניים

  • +: חיבור
  • -: חיסור
  • *: כפל
  • /: חילוק (תמיד מחזיר float)
  • //: חילוק שלם (מחזיר את החלק השלם של המנה)
  • %: מודולו (שארית החלוקה)
  • **: חזקה

אופרטורי השוואה

אופרטורים אלו משווים בין שני ערכים ומחזירים ערך בוליאני (True או False).

  • ==: שווה ל-
  • !=: שונה מ-
  • <: קטן מ-
  • >: גדול מ-
  • <=: קטן או שווה ל-
  • >=: גדול או שווה ל-

אופרטורים לוגיים

משמשים לשילוב או שינוי ביטויים בוליאניים.

  • and: מחזיר True אם שני האופרנדים True.
  • or: מחזיר True אם לפחות אחד מהאופרנדים True.
  • not: הופך את הערך הבוליאני של האופרנד.

סדר קדימות (Precedence) וקיבוץ (Associativity)

סדר קדימות קובע איזה אופרטור יבוצע קודם בביטוי מורכב (לדוגמה, כפל לפני חיבור). קיבוץ קובע את סדר הביצוע כאשר ישנם אופרטורים בעלי אותה קדימות (לדוגמה, משמאל לימין). הבנה של כללים אלו קריטית למעקב קוד מדויק.

סדר קדימות (Operator Precedence): הכללים הקובעים את סדר הביצוע של אופרטורים שונים בביטוי אחד. לדוגמה, כפל וחילוק קודמים לחיבור וחיסור.
קיבוץ (Associativity): הכללים הקובעים את סדר הביצוע של אופרטורים בעלי אותה רמת קדימות (לדוגמה, רוב האופרטורים החשבוניים הם שמאליים, כלומר מבוצעים משמאל לימין).

קלט/פלט בסיסי (Basic Input/Output)

אינטראקציה עם המשתמש היא חלק בלתי נפרד מכל תוכנית.

פונקציית print()

משמשת להצגת פלט למסך. ניתן להדפיס מספר ארגומנטים, והם יודפסו מופרדים ברווח כברירת מחדל. ניתן לשלוט על מפריד (sep) ועל התו בסוף ההדפסה (end).

print(): פונקציה מובנית בפייתון המשמשת להצגת פלט (טקסט, ערכי משתנים וכו') למסך.

פונקציית input()

משמשת לקבלת קלט מהמשתמש. חשוב לזכור שפונקציה זו תמיד מחזירה מחרוזת (str), גם אם המשתמש הזין מספר. אם יש צורך במספר, יש לבצע המרה מפורשת (לדוגמה, int(input())).

input(): פונקציה מובנית בפייתון המשמשת לקבלת קלט טקסטואלי מהמשתמש דרך הקונסולה.

שאלות לדיון

  • הסבירו את ההבדל בין הצהרה (Statement) לביטוי (Expression) בפייתון, ותנו דוגמה לכל אחד.
  • מהי טיפוסיות דינמית בפייתון, ומדוע היא נחשבת יתרון וחיסרון כאחד? תנו דוגמה לשגיאה נפוצה הנובעת ממנה.
  • נתון הביטוי: result = 10 + 3 * 2 ** 2 - 1. מה יהיה ערכו של result? הסבירו את סדר הפעולות.
  • כיצד תשפיע פונקציית input() על סוג הנתונים של קלט המשתמש, וכיצד נטפל בכך אם נרצה לבצע פעולות חשבוניות על הקלט?

נקודות לתשובת מודל

  • הצהרה מול ביטוי: הצהרה מבצעת פעולה (למשל, השמה, הדפסה), ביטוי מעריך לערך. דוגמאות: x = 5 (הצהרה), 5 + 3 (ביטוי).
  • טיפוסיות דינמית: סוג המשתנה נקבע בזמן ריצה וניתן לשינוי. יתרון: גמישות ופחות קוד. חיסרון: פוטנציאל לשגיאות סוג בזמן ריצה. דוגמה לשגיאה: "Hello" + 5.
  • מעקב ביטוי:
    1. 2 ** 2 מעריך ל-4.
    2. 3 * 4 מעריך ל-12.
    3. 10 + 12 מעריך ל-22.
    4. 22 - 1 מעריך ל-21.
    לכן, result יהיה 21.
  • פונקציית input(): תמיד מחזירה מחרוזת (str). כדי לבצע פעולות חשבוניות, יש להמיר את הקלט למספר (לדוגמה, int() או float()) באופן מפורש: num = int(input("הכנס מספר: ")).
מצאתם טעות או שחסר משהו?
הבאה ←
מבני נתונים מובנים