الفريق العربي للهندسة العكسية
2.5 الAssignment والInitialization - نسخة قابلة للطباعة

+- الفريق العربي للهندسة العكسية (https://www.at4re.net/f)
+-- قسم : منتديات البرمجة - Programming Forums (https://www.at4re.net/f/forum-5.html)
+--- قسم : البرمجة بلغة السى و السى بلس بلس ++C & C (https://www.at4re.net/f/forum-17.html)
+--- الموضوع : 2.5 الAssignment والInitialization (/thread-3905.html)



2.5 الAssignment والInitialization - R333T - 05-05-2024

[صورة مرفقة: 128383135-210777607283724-8238622407463275907-n.jpg]
رحلة في عالم البرمجة: إتقان أساسيات البرمجة وتطبيقاتها باستخدام لغة C++
 
https://www.youtube.com/playlist?list=PLmOrGO9IfJEcDyuBLOX5AzAqaKxmAKHrq





# الفصل 0 : تمهيد # الفصل 1 : # الفصل 2 :   
[صورة مرفقة: mqdefault.jpg]
 
https://www.youtube.com/watch?v=1Ra8mIrCK2M



اليوم سنشرح مبدا مهم جدا الAssignment والInitialization

لنشرع على بركه الله

بعدة طرق، أكثر الoperator إثارة للاهتمام هي العملية الassignment، المُمثلة بعلامة يساوي. إنها تُعطي value جديدة لvariable. على سبيل المثال:


int a = 3;



تبدأ بالقيمة
a
يساوي
3.



a = 4;



القيمة
3
(تصبح 4).


int b = a;

b
تبدأ بنسخة من قيمة a(أي 4).

b = a+5;

b
تحصل على القيمة a+5 (أي 9).

a = a+7;

a
تحصل على القيمة a+7 (أي 11).

هذا الassignment الأخير يستحق الانتباه.
أولاً وقبل كل شيء، يوضح بوضوح أن علامة يساوي لا يعني يساوي بالتأكيد، a لا تساوي a+7.
إنه يعني الassignment، أي وضع قيمة جديدة في متغير. ما يتم لـ a=a+7 هو ما يلي:

أولاً، احصل على قيمة a؛ وهي العدد الصحيح 4.
ثم، أضف 7 إلى هذا الرقم 4، مما يعطي العدد الصحيح 11.
أخيراً، ضع هذا الرقم 11 في a.
int a = 3; // a starts out with the value 3
a = 4; // a gets the value 3 (becomes 4)
int b = a; // b starts out with a copy of a’s value (that is,
b = a + 5; // b gets the value a+5 (that is, 9)
a = a + 7; // a gets the value a+7 (that is, 11)


يمكننا أيضًا توضيح الassignment باستخدام الstrings:
string a = "alpha"; // a starts out with the value "alpha"
a = "beta"; // a gets the value "beta" (becomes "beta")
string b = a; // b starts out with a copy of a’s value (that is, "beta")
b = a + "gamma"; // b gets the value a+"gamma" (that is, "betagamma")
a = a + "delta"; // a gets the value a+"delta" (that is, "betadelta")


string a = "alpha";

a
تبدأ بالقيمة "alpha".

a = "beta";

a
تحصل على القيمة "beta" اي (تصبح "beta").

string b = a;

b
تبدأ بنسخة من قيمة a (أي "beta").

b = a +"gamma";

b
تحصل على القيمة a زائد"gamma" (أي "betagamma").

a = a+"delta";

a
تحصل على القيمة
a+"delta"
(أي "betadelta").

نستخدم "تبدأ ب" starts out with
و "تحصل على" gets
لتمييز عمليتين متشابهتين، لكن منطقيًا مُختلفتين:

التهيئة Initialization: إعطاء متغير قيمته الأولية.
التخصيص Assignment: إعطاء متغير قيمة جديدة.

من الناحية المنطقية، الAssignment والInitialization مختلفان.

في المبدأ، الInitialization دائمًا ما تجد المتغير فارغًا.
من ناحية أخرى، الAssignment (في المبدأ) يجب أن يُفرغ القيمة القديمة من المتغير قبل وضع القيمة الجديدة.
يمكنك أن تفكر في المتغير كصندوق صغير والقيمة كشيء ملموس، مثل عملة، تضعه داخله.
قبل الInitialization، الصندوق فارغ، ولكن بعد الInitialization يحمل دائمًا عملة بحيث لوضع عملة جديدة، يجب عليك (أنت، أي مُشغّل العملية الAssignment) أن تقوم أولاً بإزالة القديمة ("تدمير القيمة القديمة").
الأمور ليست حرفيًا بهذا الشكل في ذاكرة الحاسوب، لكنها ليست طريقة سيئة للتفكير في ما يحدث.
 
dance