العمليات الحسابية في C++
ما هذا ولماذا؟
تخيل أنك أمين صندوق في متجر. يأتي إليك العملاء، وتجمع أسعار المنتجات، وتطرح الخصومات، وتضرب الكمية في السعر، وتقسم المبلغ الإجمالي بين الأصدقاء. كل هذا هو العمليات الحسابية. في البرمجة، تعمل تمامًا بنفس الطريقة: يستطيع الكمبيوتر الجمع والطرح والضرب والقسمة. بدون هذا، لن تتمكن من كتابة آلة حاسبة، أو لعبة، أو برنامج لحساب الرواتب.
لماذا تحتاج إلى معرفة هذا؟ حتى لو كنت تريد إنشاء برنامج بسيط يسأل المستخدم عن عمره ويخبره كم سنة متبقية على التقاعد - ستحتاج إلى الطرح. هل تريد حساب عدد البيتزا اللازمة لحفلة؟ ستحتاج إلى القسمة. وإذا كنت تكتب لعبة يتحرك فيها شخصية - فستحتاج إلى جمع وطرح الإحداثيات باستمرار. باختصار، الحساب هو الأساس الذي لا يمكن الاستغناء عنه.
الصيغة وأمثلة الكود
في لغة C++، تبدو العمليات الحسابية تقريبًا كما في الرياضيات. إليك العلامات الأساسية:
+— الجمع-— الطرح*— الضرب (علامة النجمة، وليس علامة x)/— القسمة (الشرطة المائلة)%— باقي القسمة (مثال: 7 % 3 = 1، لأن 7 تقسم على 3 والباقي 1)
لنلقِ نظرة على الأمثلة. نكتب الكود داخل main()، ونعرض النتائج على الشاشة باستخدام cout.
#include <iostream>
using namespace std;
int main() {
// مثال 1: الجمع
int a = 10;
int b = 5;
int sum = a + b; // نجمع a و b، ونضع النتيجة في sum
cout << "المجموع: " << sum << endl; // سيطبع: المجموع: 15
// مثال 2: الطرح
int diff = a - b; // نطرح b من a
cout << "الفرق: " << diff << endl; // سيطبع: الفرق: 5
// مثال 3: الضرب
int prod = a * b; // نضرب a في b
cout << "حاصل الضرب: " << prod << endl; // سيطبع: حاصل الضرب: 50
// مثال 4: القسمة
int quot = a / b; // نقسم a على b
cout << "ناتج القسمة: " << quot << endl; // سيطبع: ناتج القسمة: 2
// تنبيه: إذا كانت الأعداد صحيحة، فالنتيجة أيضًا صحيحة! 10 / 3 = 3، وليس 3.333
// مثال 5: باقي القسمة
int rem = 10 % 3; // نقسم 10 على 3، الباقي 1
cout << "الباقي: " << rem << endl; // سيطبع: الباقي: 1
return 0;
}
لاحظ: في المثال 4، قسمنا 10 على 5 وحصلنا على 2. أما إذا قسمنا 10 على 3، فسنحصل على 3، وليس 3.333. لأن int هو أعداد صحيحة، ويتم تجاهل الجزء الكسري. للحصول على نتيجة كسرية، يجب استخدام double (أعداد ذات فاصلة عشرية).
#include <iostream>
using namespace std;
int main() {
// مثال مع الأعداد الكسرية
double x = 10.0;
double y = 3.0;
double result = x / y; // الآن القسمة ستكون دقيقة
cout << "النتيجة: " << result << endl; // سيطبع: النتيجة: 3.33333
// يمكن خلط الأعداد الصحيحة والكسرية
int apples = 7;
double price = 2.5;
double total = apples * price; // 7 * 2.5 = 17.5
cout << "التكلفة الإجمالية: " << total << endl;
return 0;
}
نقطة مهمة أخرى: ترتيب العمليات. كما في الرياضيات، الضرب والقسمة أولاً، ثم الجمع والطرح. إذا أردت تغيير الترتيب، استخدم الأقواس.
#include <iostream>
using namespace std;
int main() {
int a = 2;
int b = 3;
int c = 4;
// بدون أقواس: الضرب أولاً، ثم الجمع
int res1 = a + b * c; // 2 + 12 = 14
cout << "بدون أقواس: " << res1 << endl;
// مع الأقواس: الجمع أولاً، ثم الضرب
int res2 = (a + b) * c; // 5 * 4 = 20
cout << "مع الأقواس: " << res2 << endl;
return 0;
}
مقارنة مع Python
إذا كنت قد جربت Python من قبل، ستلاحظ أن العمليات الحسابية متشابهة جدًا. لكن هناك بعض الاختلافات.
في Python:
- نفس الجمع
+، الطرح-، الضرب*، القسمة/. - لكن القسمة في Python تعطي دائمًا نتيجة كسرية!
10 / 3ستكون3.3333، حتى لو كانت الأعداد صحيحة. - للحصول على قسمة صحيحة (كما في C++)، يجب كتابة
//(شرطتان مائلتان). مثال:10 // 3ستعطي3. - باقي القسمة أيضًا
%، كما في C++.
إليك كيف يبدو نفس الكود في Python:
# Python
a = 10
b = 3
# القسمة العادية - كسرية
print(a / b) # 3.3333333333333335
# القسمة الصحيحة (كما في C++)
print(a // b) # 3
# الباقي
print(a % b) # 1
# كل شيء آخر هو نفسه
print(a + b) # 13
print(a - b) # 7
print(a * b) # 30
الفرق الرئيسي: في C++، يجب التصريح بنوع المتغير مسبقًا (int أو double)، بينما في Python يتم تحديد الأنواع تلقائيًا. لكن في C++، أنت من يقرر ما إذا كنت تريد عددًا صحيحًا أم كسريًا - وهذا يمنحك تحكمًا أكبر.
الأخطاء الشائعة للمبتدئين
إليك أكثر ما يحدث خطأً لمن يبدأون للتو:
- نسيان الفاصلة المنقوطة — في C++، كل أمر ينتهي بـ
;. إذا لم تكن موجودة، يشتكي المترجم. - الخلط بين
=و==—=هو للإسناد (وضع قيمة)، و==هو للمقارنة (هل يساوي؟). في العمليات الحسابية، نستخدم فقط=. - قسمة الأعداد الصحيحة وتوقع نتيجة كسرية — إذا كان كلا الرقمين من نوع
int، فستكون النتيجة أيضًاint. إذا أردت نتيجة كسرية، اجعل رقمًا واحدًا على الأقل من نوعdouble. - نسيان ترتيب العمليات —
2 + 3 * 4يساوي 14، وليس 20. استخدم الأقواس إذا كنت في شك. - القسمة على صفر — لا يمكن القسمة على صفر! سيتعطل البرنامج مع خطأ. تحقق دائمًا من أن المقسوم عليه لا يساوي صفرًا.