מבוא למדעי המחשב - סיכום
משתנים (Variables)
משתנה הוא מקום בזיכרון המחשב שמאחסן ערך מסוים.
סוגי משתנים בסיסיים:
- int - מספרים שלמים (לדוגמה:
5,-3,0) - float - מספרים עשרוניים (לדוגמה:
3.14,-2.5) - str - מחרוזות טקסט (לדוגמה:
"שלום","hello") - bool - ערכים בוליאניים (
TrueאוFalse)
דוגמאות:
age = 25 # מספר שלם
price = 19.99 # מספר עשרוני
name = "דני" # מחרוזת
is_student = True # בוליאני
תנאים (Conditions)
תנאים מאפשרים לתוכנית לבצע פעולות שונות בהתאם למצבים שונים.
מבנה בסיסי:
if תנאי:
# קוד שירוץ אם התנאי מתקיים
elif תנאי_אחר:
# קוד שירוץ אם התנאי האחר מתקיים
else:
# קוד שירוץ אם אף תנאי לא מתקיים
אופרטורים להשוואה:
| אופרטור | משמעות |
|---|---|
== | שווה |
!= | שונה |
> | גדול מ |
< | קטן מ |
>= | גדול או שווה |
<= | קטן או שווה |
אופרטורים לוגיים:
- and - וגם (שני התנאים חייבים להתקיים)
- or - או (לפחות תנאי אחד חייב להתקיים)
- not - שלילה (הופך את התנאי)
age = 20
has_license = True
if age >= 18 and has_license:
print("יכול לנהוג")
if age < 13 or age > 65:
print("הנחה בכרטיס")
if not has_license:
print("צריך רישיון")
Short-circuit evaluation (קיצור דרך)
אינטואיציה: פייתון "עצלן" - ברגע שהוא יודע את התוצאה, הוא מפסיק לבדוק.
and- אם הצד השמאליFalse, אין צורך לבדוק את הימני (התוצאה בטוחFalse)or- אם הצד השמאליTrue, אין צורך לבדוק את הימני (התוצאה בטוחTrue)
דוגמאות עם side effects:
# מניעת חלוקה באפס
x = 0
if x != 0 and y/x > 2: # y/x לא יחושב כי x != 0 הוא False
print("גדול מ-2")
# בדיקה שרשימה לא ריקה לפני גישה
lst = []
if lst and lst[0] > 5: # lst[0] לא ייבדק כי lst ריקה (False)
print("האיבר הראשון גדול מ-5")
# הימנעות מחישוב יקר
if cached_result or expensive_calculation(): # אם יש cache, לא נחשב
print("יש תוצאה")
חשוב: and/or מחזירים ערך, לא רק True/False
# and מחזיר את הערך הראשון ש-"עוצר" או האחרון
0 and 5 # 0 (עצר בראשון - falsy)
3 and 5 # 5 (שניהם truthy - מחזיר אחרון)
# or מחזיר את הערך הראשון ש-"מספיק" או האחרון
0 or 5 # 5 (ראשון falsy, ממשיך)
3 or 5 # 3 (ראשון truthy - מספיק)
# שימוש נפוץ: ערך ברירת מחדל
name = user_input or "אורח" # אם user_input ריק, ייקח "אורח"
טעויות נפוצות:
| טעות | דוגמה | בעיה |
|---|---|---|
| סדר שגוי בתנאי | lst[0] > 5 and lst | קריסה אם lst ריקה - צריך לבדוק קודם שיש איברים |
| ציפייה ל-True/False | x = 3 or 5 ואז if x == True | x הוא 3, לא True |
דוגמה:
grade = 85
if grade >= 90:
print("מצוין!")
elif grade >= 70:
print("טוב מאוד")
else:
print("יש מקום לשיפור")
לולאות (Loops)
לולאות מאפשרות לחזור על פעולה מספר פעמים.
לולאת while
רצה כל עוד התנאי מתקיים:
count = 0
while count < 5:
print(count)
count += 1
# ידפיס: 0, 1, 2, 3, 4
לולאת for
רצה על כל איבר באוסף או בטווח מספרים:
# מעבר על טווח מספרים
for i in range(5):
print(i)
# ידפיס: 0, 1, 2, 3, 4
# מעבר על רשימה
fruits = ["תפוח", "בננה", "תפוז"]
for fruit in fruits:
print(fruit)
פקודות שליטה בלולאה:
- break - יציאה מיידית מהלולאה
- continue - דילוג לאיטרציה הבאה
דוגמה:
for i in range(10):
if i == 3:
continue # דלג על 3
if i == 7:
break # עצור ב-7
print(i)
# ידפיס: 0, 1, 2, 4, 5, 6
טיפים חשובים
-
הזחה (Indentation) - בפייתון, הזחה קובעת את מבנה הקוד. השתמשו ב-4 רווחים או Tab באופן עקבי.
-
שמות משתנים - בחרו שמות משמעותיים שמתארים את תוכן המשתנה.
-
תנאים מקוננים - ניתן לשים תנאי בתוך תנאי, אך יש להיזהר מקינון עמוק מדי.
-
לולאות אינסופיות - יש לוודא שתנאי העצירה בלולאת while יתקיים בשלב כלשהו.
טעויות נפוצות
| טעות | דוגמה שגויה | תיקון |
|---|---|---|
| השמה במקום השוואה | if x = 5: | if x == 5: |
| שכחת נקודתיים | if x > 0 | if x > 0: |
| הזחה לא עקבית | ערבוב Tab ורווחים | להשתמש רק באחד מהם |
| שכחת הזחה אחרי if/for/while | הקוד צמוד לשמאל | להזיח 4 רווחים |
| לולאת while ללא עדכון משתנה | while x < 5: בלי x += 1 | לוודא שהתנאי ישתנה |
קישורים נוספים
- קוד: basics_demo.py