ماهي العوامل التي تستخدم لإعطاء قيم للمتغيرات (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
           