→ חזרו אחורה

פרק 3 - תנאים

⏱ 12 דקות קריאה

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

1. מהו תנאי?

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

דוגמה לתנאי: האם הגיל גדול מ-18?

אם כן, התשובה היא true.

אם לא, התשובה היא false.

2. הפקודה if

הפקודה if מאפשרת לנו להריץ קטע קוד רק אם תנאי מסוים מתקיים.

Java

int age = 20;

if (age >= 18) {
    System.out.println("מותר להיכנס");
}
            
שימו לב: הסוגריים העגולים ( ) מכילים את התנאי, והסוגריים המסולסלים { } מכילים את הפקודות שירוצו אם התנאי נכון.

3. הפקודה else

אם נרצה לבצע פעולה אחרת כאשר התנאי לא מתקיים, נוסיף else.

Java

int age = 16;

if (age >= 18) {
    System.out.println("מותר להיכנס");
} else {
    System.out.println("אסור להיכנס");
}
            

4. הפקודה else if

לפעמים יש יותר משתי אפשרויות. במצב כזה נשתמש ב-else if.

Java

int grade = 85;

if (grade >= 90) {
    System.out.println("מצוין");
} else if (grade >= 70) {
    System.out.println("טוב");
} else {
    System.out.println("צריך שיפור");
}
            

5. אופרטורי השוואה נפוצים

אופרטור פירוש דוגמה
==שווה לx == 5
!=שונה מx != 5
>גדול מx > 5
<קטן מx < 5
>=גדול או שווה לx >= 5
<=קטן או שווה לx <= 5
שימו לב: כדי לבדוק שוויון משתמשים ב-== ולא ב-=. הסימן = הוא השמה, לא השוואה.

טעות נפוצה - בלבול בין = ל-==: כתיבת if (age = 18) במקום if (age == 18). למרבה המזל, ב-Java (ובאותה מידה ב-C#‏) זו שגיאת קומפילציה מיידית - התנאי בתוך if חייב להיות מסוג boolean, ו-age = 18 הוא ביטוי מסוג int - אז התוכנית פשוט לא תרוץ, ולא תקבלו תוצאה שגויה "בשקט". עדיין כדאי להכיר את השגיאה כדי לא להיתקע עליה בזמן מבחן.

🎓 זווית הבגרות

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

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

טעות נפוצה: להשתמש בכמה if נפרדים במקום else if - זה גורם לבדיקת כל התנאים גם אחרי שאחד כבר התקיים, ועלול להדפיס יותר מדי.

מה לזכור למבחן: ברגע שתנאי ב-if/else if מתקיים, כל השאר בשרשרת מדולג אוטומטית - לא נבדק בכלל.

6. תרגול

מה יודפס למסך על ידי הקוד הבא?

Java
int grade = 72;

if (grade >= 90) {
    System.out.println("מצוין");
} else if (grade >= 70) {
    System.out.println("טוב");
} else {
    System.out.println("צריך שיפור");
}

כמה שורות פלט יודפסו בסה"כ על ידי הקוד הבא?

Java
int score = 95;
if (score >= 60) {
    System.out.println("עבר");
}
if (score >= 90) {
    System.out.println("מצטיין");
}

מה יודפס למסך על ידי הקוד הבא? (תנאי מקונן - if בתוך if)

Java
int age = 20;
boolean hasLicense = true;

if (age >= 18) {
    if (hasLicense) {
        System.out.println("מותר לנהוג");
    } else {
        System.out.println("צריך רישיון");
    }
} else {
    System.out.println("צעיר מדי");
}

כתבו את השורה הראשונה של תנאי שבודק אם המשתנה age גדול או שווה ל-18, כולל הסוגריים המסולסלים הפותחים (כמו בדוגמאות שראינו).

כתבו את השורה הראשונה של תנאי שבודק אם המשתנה grade שווה ל-100, כולל הסוגריים המסולסלים הפותחים.

פרק 2 - קלט ופלט פרק 4 - לולאות