1. ספריית Math
תת־נושא: פונקציות מתמטיות מובנות וייבוא נכון
מוטיבציה: שפת פייתון תוכננה להיות קלה ויעילה. לכן, פונקציות מתמטיות מתקדמות לא נטענות אוטומטית (כדי לחסוך בזיכרון), אלא מאוגדות במודול חיצוני שצריך לייבא.
הגדרה: כדי לגשת לפונקציות מתמטיות יש להשתמש בפקודת
אזהרה: לא מומלץ להשתמש ב-
import math בתחילת הקובץ.
פונקציות נפוצות כוללות: $ \sqrt{x} $ (שורש ריבועי math.sqrt), $ \sin(x) $, $ \log(x) $ ועוד.
אזהרה: לא מומלץ להשתמש ב-
from math import * מחשש להתנגשות שמות (Name collision) עם פונקציות או משתנים קיימים בקוד שלכם.
דוגמה:
import math
x = 16
result = math.sqrt(x)
print("The square root of", x, "is", result)
# Output: The square root of 16 is 4.0
2. פתרון משוואה ריבועית
תת־נושא: תרגום אלגוריתם מתמטי לקוד וטיפול במקרי קצה
מוטיבציה: אחת הבעיות הקלאסיות במדעי המחשב היא תרגום נוסחה מתמטית לקוד עובד. עלינו לא רק לחשב, אלא גם למנוע קריסה של התוכנית (למשל: ניסיון להוציא שורש ממספר שלילי). בינה מלאכותית (AI) יכולה לעזור בהבנת שגיאות תחביר (Syntax errors) כמו חלוקה שגויה.
הגדרה ואלגוריתם:
עבור משוואה מהצורה: $$ ax^2 + bx + c = 0 $$
1. מחשבים את הדיסקרימיננטה: $$ D = b^2 - 4ac $$
2. בודקים תקינות: אם $ D \ge 0 $, ניתן לחשב שורשים ממשיים.
3. מחשבים את השורשים בעזרת הנוסחה: $$ x_{1,2} = \frac{-b \pm \sqrt{D}}{2a} $$
דוגמה: קוד מאובטח מתקלות (עם משפט תנאי)
import math
a, b, c = 1, -5, 6
d = b**2 - 4*a*c
if d >= 0:
x1 = (-b + math.sqrt(d)) / (2*a)
x2 = (-b - math.sqrt(d)) / (2*a)
print(f"Solutions: x1={x1}, x2={x2}")
else:
print("No real solutions")
הדגמה אינטראקטיבית: מחשבון משוואה ריבועית
$x^2 + $
$x + $
$= 0$
3. משפטי תנאי - חלק 1
תת־נושא: אופרטורים בוליאניים והזחות (Indentation)
מוטיבציה: תכנות רציף (שורה אחר שורה) אינו מספיק לעולם האמיתי. משפטי תנאי מעניקים לתוכנית "בינה" - היכולת לקבל החלטות בהתאם לקלט, ולמנוע שגיאות זמן ריצה.
הגדרה: אופרטורי השוואה בודקים יחסים בין ערכים ומחזירים ערך בוליאני (
אופרטורים נפוצים:
הזחות (Indentation): בפייתון, הבלוק שמבוצע תחת התנאי חייב להיות מוזח (בד"כ 4 רווחים פנימה).
True או False).
אופרטורים נפוצים:
== (שווה), != (לא שווה), <, >, <=, >=.
הזחות (Indentation): בפייתון, הבלוק שמבוצע תחת התנאי חייב להיות מוזח (בד"כ 4 רווחים פנימה).
דוגמה:
number = 5
if number > 0:
# בלוק זה ירוץ כי התנאי מתקיים
print("The number is positive.")
4. משפטי תנאי - חלק 2
תת־נושא: תנאים מורכבים (if-elif-else), אופרטורים לוגיים ותנאים מקוננים
מוטיבציה: כשהלוגיקה מסתבכת, אנו נדרשים לבדוק מספר תרחישים התלויים אחד בשני (כמו ניתוח ציון, סיווג גילאים) או לשלב מספר תנאים בו-זמנית.
הגדרה:
if / elif / else: מבנה המאפשר בדיקת שרשרת תנאים. אם התנאי הראשון נכשל, בודקים את ה-elif, ואם כולם נכשלו מבצעים את ה-else.- אופרטורים לוגיים:
and(וגם - שני התנאים חייבים להתקיים),or(או - לפחות אחד מתקיים),not(שלילה). - תנאי מקונן (Nested Condition): משפט
ifבתוך בלוק שלifאחר. מומלץ לא לבצע יותר מ-3 רמות קינון כדי לשמור על קריאות הקוד.
דוגמה: שימוש ב-elif ואופרטורים לוגיים
age = int(input("Enter your age: "))
if age < 0:
print("You are not born yet")
elif age >= 0 and age <= 120:
print("You are alive")
else:
print("You are a vampire")
דוגמה: תנאי מקונן (בדיקת זוגיות וחלוקה ב-4)
x = 16
if x > 0:
print("Positive number")
if x % 2 == 0:
print("Even number")
if x % 4 == 0:
print("Divisible by 4")
מילון מושגים
- Module (מודול) /
import - קובץ המכיל קוד פייתון מוכן מראש (כמו
math). הפקודהimportטוענת אותו לזיכרון כדי שנוכל להשתמש בו. - Discriminant (דיסקרימיננטה - $D$)
- החלק במשוואה הריבועית שמתחת לשורש ($ D = b^2 - 4ac $). קובע כמה שורשים ממשיים יש למשוואה.
- Boolean (בוליאני)
- טיפוס נתונים היכול להכיל רק שני ערכים:
True(אמת) אוFalse(שקר). - Indentation (הזחות)
- הרווחים בתחילת שורה שמגדירים לאיזה בלוק קוד (למשל תחת
if) השורה שייכת. - Nested Conditions (תנאים מקוננים)
- הצבת פקודת
ifאחת בתוך הבלוק המותנה של פקודתifאחרת. מאפשר עצי החלטה מורכבים.
שאלות בדיקה עצמית
1. מדוע בדרך כלל לא מומלץ להשתמש בפקודה from math import *?
נכון (B): ייבוא באמצעות כוכבית טוען את כל הפונקציות ללא префикс, מה שעלול לדרוס פונקציות קיימות בעלות שם זהה.
2. בפתרון משוואה ריבועית, מה יקרה אם ננסה לחשב שורש ל-$D$ כאשר $D < 0$ ללא משפט תנאי מקדים?
נכון (C): פונקציית
math.sqrt מיועדת למספרים חיוביים. ניסיון להעביר לה ערך שלילי יגרום לתוכנית לקרוס (Crash), ולכן תמיד חובה להשתמש ב-if d >= 0:.
3. מה ההבדל בין האופרטור = לאופרטור == בתוך משפטי תנאי?
נכון (A): סימן שוויון בודד מבצע פעולת השמה (Assignment), למשל
x = 5. סימן שוויון כפול מבצע השוואה לוגית ומחזיר True או False, ולכן הוא זה שמופיע במשפטי if.