Smart-World Surf

יחידה 1: מבוא לתכנות ושפת Python

הכרת יסודות התכנות, משתנים, טיפוסים וקלט/פלט.

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

יסודות התכנות ב-Python

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

מהי תוכנית?

תוכנית היא רצף של הוראות שהמחשב מבצע באופן עוקב. ב-Python, אנו כותבים קוד שמתורגם ומבוצע על ידי מפרש (interpreter).

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

מבנה בסיסי של תוכנית Python

  • הוראות מבוצעות מהשורה הראשונה ועד האחרונה.
  • כל שורה בדרך כלל מכילה הוראה אחת.
  • הזחה (indentation) חשובה מאוד ב-Python ומגדירה בלוקי קוד.

משתנים וטיפוסי נתונים

משתנים הם לב ליבה של כל תוכנית. הם מאפשרים לנו לאחסן מידע בזיכרון המחשב ולגשת אליו באמצעות שם.

משתנה (Variable): שם המשמש להתייחסות למיקום בזיכרון המחשב שבו מאוחסן ערך.

הקצאת ערך למשתנה

הקצאה מתבצעת באמצעות סימן השוויון (=). לדוגמה: x = 10 מקצה את הערך 10 למשתנה בשם x.

טיפוסי נתונים נפוצים

לכל ערך ב-Python יש טיפוס נתונים המגדיר את סוג המידע שהוא מכיל ואת הפעולות שניתן לבצע עליו.

int (מספר שלם)

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

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

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

str (מחרוזת)

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

bool (בוליאני)

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

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

המרת טיפוסים (Type Casting)

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

  • int(ערך): ממיר לטיפוס שלם.
  • float(ערך): ממיר לטיפוס עשרוני.
  • str(ערך): ממיר לטיפוס מחרוזת.

קלט ופלט

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

פלט (Output): מידע שהתוכנית מציגה למשתמש (לרוב למסך).
קלט (Input): מידע שהתוכנית מקבלת מהמשתמש (לרוב מהמקלדת).

פונקציית הפלט: print()

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

  • דוגמה: print("שלום", "עולם") תדפיס: שלום עולם
  • ניתן להשתמש ב-f-strings (מחרוזות מעוצבות) לשילוב משתנים בקלות: name = "אלי"; print(f"השם שלי הוא {name}.")

פונקציית הקלט: input()

הפונקציה input() מאפשרת לקבל קלט מהמשתמש דרך המקלדת. היא מציגה הודעה למשתמש (אופציונלי) ומחכה שהמשתמש יקליד טקסט וילחץ Enter.

input() מחזירה תמיד מחרוזת: זוהי נקודה קריטית למבחן! גם אם המשתמש מקליד מספר, הפונקציה input() תחזיר אותו כמחרוזת. כדי להשתמש בו כמספר (למשל, לביצוע חישובים), יש לבצע המרת טיפוס מפורשת (לדוגמה, age = int(input("הכנס גיל: "))). אי-ביצוע המרה זו היא טעות נפוצה המובילה לשגיאות טיפוס.

טעויות נפוצות ושיטות עבודה מומלצות

בשלבי התכנות הראשונים, נתקלים רבות בשגיאות. הבנה של סוגי השגיאות וכיצד להתמודד איתן היא מיומנות חשובה.

סוגי שגיאות

  • שגיאות תחביר (Syntax Errors): מתרחשות כאשר הקוד אינו עומד בכללי השפה (לדוגמה, שגיאת כתיב בפקודה, גרשיים חסרים). המפרש לא יכול להבין את הקוד ומפסיק את הריצה.
  • שגיאות זמן ריצה (Runtime Errors / Exceptions): מתרחשות כאשר הקוד תקין תחבירית אך משהו משתבש במהלך הביצוע (לדוגמה, חלוקה באפס, ניסיון לגשת לאינדקס לא קיים).
  • שגיאות לוגיות (Logical Errors): הקוד רץ ללא שגיאות, אך התוצאה אינה מה שהתכוונתם אליו (לדוגמה, נוסחה שגויה בחישוב). אלו השגיאות הקשות ביותר לאיתור.

שיטות עבודה מומלצות

  • שמות משתנים ברורים: בחרו שמות משמעותיים למשתנים שלכם (לדוגמה, student_name במקום s).
  • הערות (Comments): השתמשו בסימן # כדי להוסיף הערות לקוד שלכם. זה עוזר להסביר קטעי קוד מורכבים.
  • בדיקה ודיבוג: הרגילו את עצמכם לבדוק את הקוד שלכם עם קלטים שונים ולנסות "לדבג" אותו בראש כדי להבין את זרימת הביצוע.

שאלות לדיון

  • הסבירו מדוע הבנת טיפוסי הנתונים השונים (int, float, str) היא קריטית לכתיבת תוכניות נכונות ויעילות ב-Python. תנו דוגמה לשגיאה שעלולה לקרות עקב אי-התאמת טיפוסים.
  • מה ההבדל העיקרי בין פונקציית print() לפונקציית input() מבחינת תפקידן וערך ההחזרה שלהן?
  • כתבו קטע קוד קצר ב-Python המבקש מהמשתמש את שמו ואת גילו, ולאחר מכן מדפיס הודעה מותאמת אישית המשלבת את שני הנתונים.
  • מה יקרה אם ננסה לחבר ישירות מחרוזת ומספר שלם (לדוגמה: "המספר הוא: " + 5)? כיצד ניתן לתקן זאת?

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

  • טיפוסי נתונים: קריטיים כי הם מגדירים אילו פעולות חוקיות (חיבור מספרים, שרשור מחרוזות). אי-התאמה תוביל לשגיאות זמן ריצה (TypeError). לדוגמה, ניסיון לחבר מחרוזת ומספר ללא המרה.
  • print() vs. input(): print() מציגה פלט למסך ואינה מחזירה ערך משמעותי. input() מקבלת קלט מהמשתמש ומחזירה תמיד מחרוזת.
  • קוד לדוגמה:
    name = input("אנא הזן את שמך: ")
    age = int(input("אנא הזן את גילך: "))
    print(f"שלום {name}, אתה בן {age} שנים.")
    
  • חיבור מחרוזת ומספר: יגרום לשגיאת TypeError. יש להמיר את המספר למחרוזת לפני החיבור: "המספר הוא: " + str(5).
מצאתם טעות או שחסר משהו?
הבאה ←
בקרת זרימה ולולאות