العمليات الحسابية — أساسيات C++
العمليات الحسابية
العمليات الأساسية
+ - * / و % (باقي القسمة، للأعداد الصحيحة فقط).
⚠️ القسمة الصحيحة
cout << 7 / 2; // 3 (وليس 3.5!)
cout << 7.0 / 2; // 3.5إذا كان الطرفان صحيحين، تكون القسمة صحيحة ويُحذف الكسر. هذا يفاجئ القادمين من Python. الحل أن يكون أحد الطرفين عشرياً: static_cast<double>(sum) / count.
الزيادة والنقصان
int i = 5;
i++; // i = 6
int a = i++; // a = 6 ثم i = 7 (لاحقة: استخدم ثم زِد)
int b = ++i; // i = 8 ثم b = 8 (سابقة: زِد ثم استخدم)لا تكتب أكثر من ++ على نفس المتغير في تعبير واحد مثل i++ + i++: النتيجة غير مضمونة.
الإسناد المركب
+= -= *= /= %=.
أولوية العمليات
الأقواس، ثم * / %، ثم + -. عند الشك استخدم الأقواس.
الفيضان (Overflow)
int له حد أقصى (حوالي 2.1 مليار). تجاوزه لا يعطي خطأ بل نتيجة خاطئة:
int big = 2000000000;
int doubled = big * 2; // ❌ فيضان: سلوك غير معرّف
long long safe = 2LL * big; // ✅ 4000000000استخدم long long للأعداد الكبيرة (مثل المضروب أو المبالغ بالفلس).
دوال <cmath>
| الدالة | المثال |
|---|---|
| pow(x, y) | pow(2, 10) ← 1024 |
| sqrt(x) | الجذر التربيعي |
| abs(x) | القيمة المطلقة |
| ceil / floor / round | التقريب لأعلى، لأسفل، لأقرب |
pow ترجع double؛ لا تستخدمها للقوى الصحيحة الصغيرة داخل حلقات (x * x أدق وأسرع).
تمرين
اقرأ عدد ثوانٍ، واطبعه بصيغة ساعات:دقائق:ثوانٍ باستخدام / و %، ثم احسب متوسط ثلاث درجات صحيحة بشكل صحيح (عشري).
#include <iostream>
#include <cmath> // للدوال الرياضية
using namespace std;
int main() {
int a = 10, b = 3;
// العمليات الأساسية
cout << "a + b = " << (a + b) << endl; // 13
cout << "a - b = " << (a - b) << endl; // 7
cout << "a * b = " << (a * b) << endl; // 30
cout << "a / b = " << (a / b) << endl; // 3 (قسمة صحيحة!)
cout << "a % b = " << (a % b) << endl; // 1
// قسمة عشرية
double x = 10.0, y = 3.0;
cout << "x / y = " << (x / y) << endl; // 3.333...
// عمليات الإسناد
int num = 10;
num += 5; // num = num + 5 = 15
num -= 3; // num = 12
num *= 2; // num = 24
num /= 4; // num = 6
// الزيادة والنقصان
int i = 5;
cout << i++ << endl; // 5 (يطبع ثم يزيد)
cout << i << endl; // 6
cout << ++i << endl; // 7 (يزيد ثم يطبع)
// الدوال الرياضية
cout << "pow(2, 3) = " << pow(2, 3) << endl; // 8
cout << "sqrt(16) = " << sqrt(16) << endl; // 4
cout << "abs(-5) = " << abs(-5) << endl; // 5
cout << "ceil(3.2) = " << ceil(3.2) << endl; // 4
cout << "floor(3.8) = " << floor(3.8) << endl; // 3
cout << "round(3.5) = " << round(3.5) << endl; // 4
// أمثلة عملية
double price = 100;
double discount = 20;
double finalPrice = price - (price * discount / 100);
cout << "السعر النهائي: " << finalPrice << endl;
return 0;
}اختبر فهمك