Menu
Coddy logo textTech

הגדלה/הקטנה לאחר הפעולה

חלק מהיחידה יסודות במסלול ה-C++ של Coddy. שיעור 19 מתוך 74.

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

צורת הקידומת נכתבת לפני המשתנה (למשל, ++x או --x), וצורת הסיומת נכתבת אחרי המשתנה (למשל, x++ או x--).

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

ההבדל בין שתי הצורות עדין אך חשוב:

  • צורת קידומת: מגדילה/מקטינה את המשתנה ואז מחזירה את הערך החדש.
  • צורת סיומת: מחזירה את הערך הנוכחי של המשתנה ואז מגדילה/מקטינה אותו.

הנה דוגמה שממחישה את ההבדל:

int x = 5;
int y = x++;
// y = 5, x = 6 (סיומת: y מקבל את הערך המקורי, ואז הערך של x גדל ב-1)

int a = 5;
int b = ++a;
// b = 6, a = 6 (קידומת: תחילה הערך של a גדל ב-1, ואז b מקבל את הערך החדש)

במקרה הראשון, הערך המקורי של x (5) מוקצה ל־y, ולאחר מכן x גדל ל־6. במקרה השני, a גדל תחילה, ולאחר מכן הערך החדש שלו (6) מוקצה ל־b.

אותו היגיון חל גם על אופרטור ההפחתה:

int x = 5;
int y = x--;
// y = 5, x = 4 (סיומת: y מקבל את הערך המקורי, ואז הערך של x מופחת ב-1)

int a = 5;
int b = --a;
// b = 4, a = 4 (קידומת: תחילה הערך של a מופחת ב-1, ואז b מקבל את הערך החדש)
challenge icon

אתגר

מתחילים

ניתן לך קוד עם אתחולים של x, y ו-z. (אל תמחק את השורות האלה!)

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

  1. השתמש באופרטור הגדלה postfix כדי להציב ב-a את הערך הנוכחי של x, ואז להגדיל את x.
  2. השתמש באופרטור הקטנה prefix כדי להקטין את y ולהציב ב-b את הערך החדש שלו.
  3. השתמש באופרטור הקטנה postfix כדי להציב ב-c את הערך הנוכחי של z, ואז להקטין את z.

לאחר ביצוע הפעולות האלה, הדפס למסוף את הערכים של a, b, c, x, y ו-z בפורמט הבא:

a: [value of a]
b: [value of b]
c: [value of c]
x: [value of x]
y: [value of y]
z: [value of z]

נסו בעצמכם

#include <iostream>

int main() {
    int x = 10;
    int y = 20;
    int z = 30;
    
    int a, b, c;
    
    // כתבו את הקוד שלכם למטה
    
    
    // אל תשנו את השורות למטה
    std::cout << "a: " << a << std::endl;
    std::cout << "b: " << b << std::endl;
    std::cout << "c: " << c << std::endl;
    std::cout << "x: " << x << std::endl;
    std::cout << "y: " << y << std::endl;
    std::cout << "z: " << z << std::endl;
    
    return 0;
}
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה יסודות

תרגלו בעצמכם: קומפיילר C++ אונליין