إنشاء اسم مستعار Aliasing و المتغير الثابت Constant Variable
إنشاء اسم مستعار Aliasing
يحدث الـ Aliasing في C++ عندما يشير اسمان مختلفان أو أكثر إلى نفس موقع الذاكرة. يمكن أن يحدث هذا عند استخدام المؤشرات pointers أو المراجع، أو عند الإعلان عن متغيرين من نفس النوع وتهيئتهما لنفس القيمة.
على سبيل المثال، التعليمة البرمجية التالية بإنشاء اسم مستعار للمتغير x
:
int x = 1; int &y = x;
الآن، كلا المتغيرين x
و y
يشيران إلى نفس موقع الذاكرة. إذا قمت بتغيير قيمة x
، قيمة y
ستتغير أيضًا.
مثال:
#include <iostream> using namespace std; int main() { int x = 1; int &y = x; x = 5; int &z = y; cout << "x = " << x << " " << "y = " << y << " " << "z = " << z << endl; y = 7; cout << "x = " << x << " " << "y = " << y << " " << "z = " << z << endl; y = x + z - 3; cout << "x = " << x << " " << "y = " << y << " " << "z = " << z << endl; return 0; }
يبدأ الكود بإعلان متغير صحيح اسمه x
وتهيئته إلى 1. ثم يعلن عن مرجع عدد صحيح مسمى y
وربطه بالمتغير x
. مما يعني أن y
هو الآن اسم مستعار لـ x
.
بعد ذلك، يقوم الكود بتعيين القيمة 5 للمتغير x
. وهذا يغير أيضًا قيمة المتغير y
، لأنه اسم مستعار لـ x
.
بعد ذلك، يقوم البرنامج بتعريف مرجع عدد صحيح آخر يسمى z
وربطه بالمتغير y
. مما يعني أن z
وهو أيضًا اسم مستعار لـ x
.
الآن، جميع المتغيرات الثلاثة x
, y
، و z
تشير إلى نفس موقع الذاكرة. وهذا يعني أن تغيير قيمة أي من هذه المتغيرات سيؤدي أيضًا إلى تغيير قيمة المتغيرين الآخرين.
ثم يقوم الكود بطباعة قيم المتغيرات x
, y
، و z
إلى شاشة المخرجات والتي ستكون كالتالي:
x = 5 y = 5 z = 5
بعد ذلك، يقوم الكود بتعيين القيمة 7 للمتغير y
. وهذا يغير أيضًا قيم المتغيرات x
و z
، لأنها كلها أسماء مستعارة لنفس موقع الذاكرة.
ثم يقوم الكود بطباعة قيم المتغيرات x
, y
، و z
إلى شاشة المخرجات والتي ستكون كالتالي:
x = 7 y = 7 z = 7
وأخيرًا، يقوم الكود بحساب قيمة x + z - 3
ويعينه للمتغير y
. وهذا يغير أيضًا قيم المتغيرات x
و z
، لأنها كلها أسماء مستعارة لنفس موقع الذاكرة.
ثم يقوم الكود بطباعة قيم المتغيرات x
, y
، و z
إلى شاشة المخرجات والتي ستكون كالتالي:
x = 11 y = 11 z = 11
يوضح هذا الكود كيف يمكن استخدام الاسم المستعار لتغيير قيم متغيرات متعددة في وقت واحد. ويوضح أيضًا كيف يمكن استخدام الأسماء المستعارة لإنشاء أسماء مستعارة للتعبيرات المعقدة.
من المهم ملاحظة أن الاسم المستعار يمكن أن يكون أداة قوية، ولكنه قد يؤدي أيضًا إلى الارتباك والأخطاء إذا تم استخدامه بشكل غير صحيح. من المهم أن تفكر بعناية في الآثار المترتبة على الاسم المستعار قبل استخدامه في التعليمات البرمجية الخاصة بك.
المتغير الثابت Constant Variable
المتغير الثابت في لغة C++ هو متغير لا يمكن تغيير قيمته بعد تهيئته. للإعلان عن متغير ثابت، يمكنك استخدام const
كـ keyword قبل نوع المتغير. على سبيل المثال:
const double Pi = 3.14;
بمجرد الإعلان عن متغير ثابت، لا يمكنك تعيين قيمة جديدة له. إذا حاولت القيام بذلك، سيقوم المترجم بإنشاء خطأ.
مثال:
#include <iostream> using namespace std; int main() { const double Pi = 3.14; int r; cout << "please enter r: "; cin >> r; double a = Pi * r * r; cout << "Area of circle = " << a << endl; return 0; }
هذا الكود يحسب مساحة الدائرة يبدأ البرنامج بإعلان متغير عشري ثابت اسمه Pi
وتهيئته إلى القيمة 3.14. ثم يعلن عن متغير عدد صحيح اسمه r
ويطالب المستخدم بإدخال قيمة له.
بعد ذلك، يقوم البرنامج بحساب مساحة الدائرة باستخدام الصيغة التالية:
- Area = πr²
يقوم البرنامج بعد ذلك بطباعة مساحة الدائرة إلى شاشة المخرجات.
فيما يلي تفصيل للكود:
int main() { // Declare a constant double variable named Pi and initialize it to the value 3.14. const double Pi = 3.14; // Declare an integer variable named r. int r; // Prompt the user to enter a value for r. cout << "please enter r: "; cin >> r; // Calculate the area of the circle. double a = Pi * r * r; // Print the area of the circle to the console. cout << "Area of circle = " << a << endl; return 0; }
المخرجات:
please enter r: 5 Area of circle = 78.5
يمكن أن تتفاعل المتغيرات المستعارة والثابتة بعدة طرق مثيرة للاهتمام:
- إذا كان لديك متغير ثابت وقمت بإنشاء اسم مستعار له، فسيكون الاسم المستعار ثابتًا أيضًا. وذلك لأن الاسم المستعار هو مجرد اسم آخر لنفس المتغير، ولا يمكن تغيير قيمة المتغير.
- إذا كان لديك متغير ثابت وقمت بتمريره إلى دالة كـparameter، فلن تتمكن الدالة من تغيير قيمة المتغير. وذلك لأن الدالة مسموح لها فقط بتعديل النسخة المحلية من المتغير.
- إذا كان لديك مؤشر pointer لمتغير ثابت، فلا يزال بإمكانك استخدام المؤشر لإلغاء الإشارة إلى المتغير وقراءة قيمته. ومع ذلك، لا يمكنك استخدام المؤشر لتغيير قيمة المتغير.
فيما يلي مثال على المتغيرات المستعارة والثابتة في لغة C++:
#include <iostream> using namespace std; int main() { int i = 1; int &j = i; cout << "j = " << j << endl; const int &k = j; cout << "k = " << k << endl; return 0; }
المخرجات:
j = 1 k = 1