ماهي العوامل التي تستخدم لإعطاء قيم للمتغيرات (Assignment Operators) في C++
| إسم العامل | رمزه | مثال | شرح الكود |
|---|---|---|---|
| Basic Assignment | = | a = b | ضع قيمة b في a. |
| Add AND Assignment | += | a += b | أضف قيمة a على قيمة b و خزن الناتج في a |
| Susbtract AND Assignment | -= | a -= b | أنقص قيمة a من قيمة b و خزن الناتج في a |
| Multiply AND Assignment | *= | a *= b | أضرب قيمة a بقيمة b و خزن الناتج في a |
| Divide AND Assignment | /= | a /= b | أقسم قيمة a على قيمة b و خزن الناتج في a |
| Modulo AND Assignment | %= | a %= b | أقسم قيمة a على قيمة b و خزن آخر رقم يبقى من عملية القسمة في a |
| Left shift AND Assignment | <<= | a <<= 2 | أزح آخر إثنين bits و ضعهم في الأول ثم خزن الناتج في a |
| Right shift AND Assignment | >>= | a >>= 2 | أزح أول اثنين bits و ضعهم في الآخر ثم خزن الناتج في a |
| Bitwise AND Assignment | &= | a &= b | أحسب ناتج جمع الـ bits المشتركة بين a و b و خزن الناتج في a |
| Bitwise exclusive OR and Assignment | ^= | a ^= b | أحسب ناتج جمع الـ bits الغير مشتركة بين a و b و خزن الناتج في a |
| Bitwise inexclusive OR and Assignment | |= | a |= b | أحسب ناتج جمع الـ bits المشتركة و الغير مشتركة بين a و b و خزن الناتج في a |
شرح العوامل التي تستخدم لإعطاء قيم للمتغيرات في C++
العامل = (Basic Assign) في C++
العامل = يستخدم لإعطاء قيمة لمتغير.
مثال
#include <iostream>
using namespace std;
int main()
{
int a = 10;
cout << "a = " << a;
return 0;
}
•سنحصل على النتيجة التالية عند التشغيل.
a = 10
العامل += (Add and Assign) في C++
العامل += يستخدم لإضافة قيمة ما على قيمة المتغير بكود أقل.
مثال
#include <iostream>
using namespace std;
int main()
{
int a = 10;
int b = 20;
a += b; // a = a + b = 10 + 20 = 30
cout << "a = " << a;
return 0;
}
•سنحصل على النتيجة التالية عند التشغيل.
a = 30
العامل -= (Susbtract and Assign) في C++
العامل -= يستخدم لطرح قيمة ما من قيمة المتغير بكود أقل.
مثال
#include <iostream>
using namespace std;
int main()
{
int a = 10;
int b = 20;
a -= b; // a = a - b = 10 - 20 = -10
cout << "a = " << a;
return 0;
}
•سنحصل على النتيجة التالية عند التشغيل.
a = -10
العامل *= (Multiply and Assign) في C++
العامل *= يستخدم لضرب قيمة المتغير بقيمة ما بكود أقل.
مثال
#include <iostream>
using namespace std;
int main()
{
int a = 10;
int b = 20;
a *= b; // a = a * b = 10 * 20 = 200
cout << "a = " << a;
return 0;
}
•سنحصل على النتيجة التالية عند التشغيل.
a = 200
العامل /= (Divide and Assign) في C++
العامل /= يستخدم لقسم قيمة المتغير على قيمة ما بكود أقل.
مثال
#include <iostream>
using namespace std;
int main()
{
int a = 100;
int b = 20;
a /= b; // a = a / b = 100 / 20 = 5
cout << "a = " << a;
return 0;
}
•سنحصل على النتيجة التالية عند التشغيل.
a = 5
العامل %= (Modulo and Assign) في C++
العامل %= يستخدم لتخزين الباقي من قسمة قيمة المتغير على قيمة ما بكود أقل.
مثال
#include <iostream>
using namespace std;
int main()
{
int a = 10;
int b = 7;
a %= b; // a = a % b = 10 % 7 = 3
cout << "a = " << a;
return 0;
}
•سنحصل على النتيجة التالية عند التشغيل.
a = 3
العامل <<= (Left shift and Assign) في C++
في المثال التالي, العامل <<= يعني إمسح bits من ناحية اليسار ثم بدل كل bit تم مسحها منهم بصفر و ضعهم من ناحية اليمين ثم ضع الناتج في المتغير من جديد.
مثال
#include <iostream>
using namespace std;
int main()
{
int a = 10;
a <<= 2; // a = a << 2 = 00000000000000000000000000001010 << 2 = 00000000000000000000000000101000 = 40
cout << "a = " << a;
return 0;
}
•سنحصل على النتيجة التالية عند التشغيل.
a = 40
العامل >>= (Right shift and Assign) في C++
في المثال التالي, العامل >>= يعني إمسح bits من ناحية اليمين ثم بدل كل bit تم مسحها منهم بصفر و ضعهم من ناحية اليسار ثم ضع الناتج في المتغير من جديد.
مثال
#include <iostream>
using namespace std;
int main()
{
int a = 10;
a >>= 2; // a = a >> 2 = 00000000000000000000000000001010 >> 2 = 00000000000000000000000000000010 = 2
cout << "a = " << a;
return 0;
}
•سنحصل على النتيجة التالية عند التشغيل.
a = 2
العامل &= (Bitwise and Assign) في C++
العامل &= يعني أحسب ناتج جمع الـ bits المشتركة بين المتغير a و المتغير b ثم خزن الناتج في المتغير a.
مثال
#include <iostream>
using namespace std;
int main()
{
int a = 10;
int b = 75;
a &= b; // a = a & b = 00000000000000000000000000001010 & 00000000000000000000000001001011 = 00000000000000000000000000001010 = 10
cout << "a = " << a;
return 0;
}
•سنحصل على النتيجة التالية عند التشغيل.
a = 10
العامل |= (Bitwise exclusive OR and Assign) في C++
العامل |= يعني أحسب ناتج جمع الـ bits المشتركة و الغير مشتركة بين المتغير a و المتغير b ثم خزن الناتج في المتغير a.
مثال
#include <iostream>
using namespace std;
int main()
{
int a = 10;
int b = 75;
a |= b; // a = a | b = 00000000000000000000000000001010 | 00000000000000000000000001001011 = 00000000000000000000000001001011 = 75
cout << "a = " << a;
return 0;
}
•سنحصل على النتيجة التالية عند التشغيل.
a = 75
عوامل أخرى مهمة جدا في C++
| إسم العامل | رمزه | إستخدامه |
|---|---|---|
| Conditional | ?: | يطلق عليه أيضاً إسم Ternary Operator لأنه يأخذ ثلاث عناصر ليعمل. يمكن إستعماله بدل جمل الشرط if و else في حال كنت تريد إعطاء قيمة للمتغير. |
| Size of | sizeof() | يستخدم لمعرفة حجم المساحة المخصصة في الذاكرة لأي شيء يتم تمريره بين القوسين. الرقم الذي يتم إرجاعه يمثل الحجم بالـ Byte. |
| Address | & | يستخدم لمعرفة عنوان المساحة المخصصة في الذاكرة للشيء الذي يتم وضعه بعده مباشرةً. العنوان الذي يتم إرجاعه يتم إرجاعه بشكل Hexadecimal. |
| Pointer | * | يستخدم لوضع مؤشر لشيء تم تعريفه مما يجعلك قادر على الوصول إليه بشكل مباشر من أي مكان تريد من خلال عنوانه في الذاكرة. |
| Comma | , | تستخدم الفاصلة لتنفيذ أكثر من عملية حسابية و من ثم إسناد قيمتها كلها في متغير واحد. مع الإشارة إلى أنه يجب وضع فاصلة بين كل عملتين تفوم بوضعهما. |
عوامل أخرى مهمة في C++
العامل ?: (Conditional Operator) في C++
العامل ?: يقال له Conditional أو Ternary Operator لأنه يأخذ ثلاث عناصر ليعمل.
يمكن إستعماله بدل جمل الشرط if و else في حال كنت تريد إعطاء قيمة للمتغير.
بنا العامل ?: (Conditional Operator) في C++
expression: يمثل الشرط الذي نضعه.value if true: تمثل القيمة التي ستعطى للمتغيرxإذا تحقق الشرط نضعها بعد الرمز?.value if false: تمثل القيمة التي ستعطى للمتغيرxإذا لم يتحقق الشرط نضعها بعد الرمز:.
المثال الأول
#include <iostream>
using namespace std;
int main()
{
int a = 10;
// b إن لم تكن كذالك سيتم وضع القيمة 30 في المتغير ,b تساوي 1 سيتم وضع القيمة 20 في المتغير a إذا كانت قيمة المتغير
int b = (a == 1) ?20 :30;
cout << "b = " << b;
return 0;
}
•سنحصل على النتيجة التالية عند التشغيل.
b = 30
•نلاحظ أنه تم وضع القيمة 30 في b لأن نتيجة الشرط كانت false.
المثال الثاني
#include <iostream>
using namespace std;
int main()
{
int a = 10;
// b إن لم تكن كذالك سيتم وضع القيمة 30 في المتغير ,b أكبر من 1 سيتم وضع القيمة 20 في المتغير a إذا كانت قيمة المتغير
int b = (a > 1) ?20 :30;
cout << "b = " << b;
return 0;
}
•سنحصل على النتيجة التالية عند التشغيل.
b = 20
•نلاحظ أنه تم وضع القيمة 20 في b لأن نتيجة الشرط كانت true.
العامل sizeof() (Size Of Operator) في C++
يستخدم لمعرفة حجم المساحة المخصصة في الذاكرة لأي شيء يتم تمريره بين القوسين.
الرقم الذي يتم إرجاعه يمثل الحجم بالـ Byte.
المثال الأول
#include <iostream>
using namespace std;
int main()
{
// C++ هنا قمنا بطباعة الحجم الذي يتطلبه كل نوع جاهز في لغة
cout << "Size of char: " << sizeof(char) << endl;
cout << "Size of int: " << sizeof(int) << endl;
cout << "Size of float: " << sizeof(float) << endl;
cout << "Size of double: " << sizeof(double) << endl;
cout << "Size of short int: " << sizeof(short int) << endl;
cout << "Size of long int: " << sizeof(long int) << endl;
cout << "Size of long long int: " << sizeof(long long int) << endl;
cout << "Size of long double: " << sizeof(long double) << endl;
return 0;
}
•سنحصل على النتيجة التالية عند التشغيل.
Size of char: 1
Size of int: 4
Size of float: 4
Size of double: 8
Size of short int: 2
Size of long int: 4
Size of long long int: 8
Size of long double: 12
المثال الثاني
#include <iostream>
using namespace std;
int main()
{
// int و نوعه x هنا قمنا بتعريف متغير إسمه
int x = 5;
// x هنا قمنا بطباعة الحجم الذي تم حجزه في الذاكرة من أجل المتغير
cout << "Size of x in memory: " << sizeof(char) << " Byte\n";
return 0;
}
•سنحصل على النتيجة التالية عند التشغيل.
Size of x in memory: 1 Byte
العامل & (Address) في C++
يستخدم لمعرفة عنوان المساحة المخصصة في الذاكرة للشيء الذي يتم وضعه بعده مباشرةً.
مثال
#include <iostream>
using namespace std;
int main()
{
// int و نوعه x هنا قمنا بتعريف متغير إسمه
int x = 5;
// في الذاكرة x هنا قمنا بطباعة عنوان المساحة التي تم تخصيصها للمتغير
cout << "Address of x in memory: " << &x;
return 0;
}
•سنحصل على نتيجة تشبه النتيجة التالية عند التشغيل.
Address of x in memory: 0x72feec
العامل * (Pointer) في C++
يستخدم لوضع مؤشر للشيء عند تعريفه مما يجعلك قادر على الوصول إليه بشكل مباشر من أي مكان تريد من خلال عنوانه في الذاكرة.
مثال
#include <iostream>
using namespace std;
int main()
{
// 5 و قيمته x هنا قمنا بتعريف متغير إسمه
int x = 5;
// x و قمنا بتعريفه كمؤشر للمتغير y هنا قمنا بتعريف متغير إسمه
// أصبحا يشيران لنفس القيمة المخزنة في الذاكرة y و المتغير x إذاً المتغير
int *y = &x;
// x و التي هي نفسها قيمة المتغير y هنا قمنا بطباعة القيمة الموضوعة في المتغير
cout << "y contain x value which is: " << *y;
return 0;
}
•سنحصل على نتيجة تشبه النتيجة التالية عند التشغيل.
y contain x value which is: 5
ملاحظة
ستتعرف على المؤشرات و كيفية التعامل معهم بشكل مفصل لاحقاً في الدورة; و يكفي أن تفهم معنى كلمة مؤشر.
العامل , (Comma) في C++
تستخدم الفاصلة لتنفيذ أكثر من عملية حسابية و من ثم إسناد قيمتها كلها في متغير واحد.
مع الإشارة إلى أنه يجب وضع فاصلة بين كل عملتين تفوم بوضعهما.
مثال
#include <iostream>
using namespace std;
int main()
{
// x هنا قمنا بتعريف متغير إسمه
int x;
// s تساوي 1, ثم أضفنا عليها 2, ثم ضربناها بالرقم 5. و في النهاية وضعنا الناتج في المتغير x هنا قمنا بجعل قيمة
int s = (x = 1, x += 2, x *= 5);
// s هنا قمنا بطباعة قيمة المتغير
cout << "s = ((1) + 2) * 5 = " << s;
return 0;
}
•سنحصل على نتيجة تشبه النتيجة التالية عند التشغيل.
s = ((1) + 2) * 5 = 15