الزيادة والنقصان اللاحقة
جزء من قسم Fundamentals في رحلة C++ على Coddy — الدرس 19 من 74.
في الدرس السابق، قمنا بتغطية عاملي الزيادة (++) والنقصان (--). هذان العاملان لهما شكلان: prefix (بادئة) و postfix (لاحقة).
معرفة أي شكل يجب استخدامه أمر مهم في البرامج الحقيقية — على سبيل المثال، عند تتبع نتيجة لعبة، أو عد تكرارات الحلقات، أو التقدم عبر قائمة من العناصر.
تُكتب الصيغة البادئة (prefix) قبل المتغير (على سبيل المثال، ++x أو --x)، وتُكتب الصيغة اللاحقة (postfix) بعد المتغير (على سبيل المثال، x++ أو x--).
الفرق بين الصيغتين دقيق ولكنه مهم:
- صيغة البادئة (Prefix form): تقوم بزيادة/إنقاص المتغير ثم تُرجع القيمة الجديدة.
- صيغة اللاحقة (Postfix form): تُرجع القيمة الحالية للمتغير ثم تقوم بزيادته/إنقاصه.
إليك مثال لتوضيح الفرق:
int x = 5;
int y = x++;
// y = 5, x = 6 (لاحق - postfix)
int a = 5;
int b = ++a;
// b = 6, a = 6 (سابق - prefix)في الحالة الأولى، يتم تعيين القيمة الأصلية لـ x (5) إلى y، ثم يتم زيادة x إلى 6. وفي الحالة الثانية، يتم زيادة a أولاً، ثم يتم تعيين قيمتها الجديدة (6) إلى b.
ينطبق نفس المنطق على عامل الإنقاص:
int x = 5;
int y = x--;
// y = 5, x = 4 (لاحق - postfix)
int a = 5;
int b = --a;
// b = 4, a = 4 (سابق - prefix)التحدي
مبتدئلقد تم تزويدك بكود يحتوي على تهيئة للمتغيرات x و y و z. (لا تحذف هذه الأسطر!)
مهمتك هي استخدام معاملات الزيادة والنقصان (increment/decrement operators) لإجراء العمليات التالية، بهذا الترتيب:
- استخدم معامل الزيادة اللاحق (postfix increment) لتعيين القيمة الحالية لـ
xإلىaثم قم بزيادةx. - استخدم معامل النقصان السابق (prefix decrement) لإنقاص
yوتعيين قيمتها الجديدة إلىb. - استخدم معامل النقصان اللاحق (postfix decrement) لتعيين القيمة الحالية لـ
zإلىcثم قم بإنقاصz.
بعد إجراء هذه العمليات، قم بطباعة قيم a و b و c و x و y و z إلى وحدة التحكم (console) بالتنسيق التالي:
a: [value of a]
b: [value of b]
c: [value of c]
x: [value of x]
y: [value of y]
z: [value of z]ورقة مرجعية
عوامل الزيادة (++) والنقصان (--) لها شكلان:
- الشكل البادئ (
++x،--x): يزيد/ينقص قيمة المتغير أولاً، ثم يعيد القيمة الجديدة - الشكل اللاحق (
x++،x--): يعيد القيمة الحالية أولاً، ثم يزيد/ينقص قيمة المتغير
أمثلة:
int x = 5;
int y = x++; // y = 5, x = 6 (لاحق)
int a = 5;
int b = ++a; // b = 6, a = 6 (بادئ)
int x = 5;
int y = x--; // y = 5, x = 4 (لاحق)
int a = 5;
int b = --a; // b = 4, a = 4 (بادئ)جرّب بنفسك
#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;
}يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Fundamentals
4المعاملات - الجزء الأول
المعاملات الحسابيةمعامل باقي القسمة (Modulo)الزيادة والنقصانالزيادة والنقصان اللاحقةاختصارات العمليات الحسابيةمعاملات المقارنةمقارنة النصوص