التهيئة (برمجة الحاسوب)

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

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

عائلة لغات C

المُهيئ

في لغات C/C99/C++، يُعدّ المُهيئ جزءًا اختياريًا من المُصرِّح . ويتألف من رمز "=" متبوعًا بتعبير أو قائمة تعبيرات مفصولة بفواصل موضوعة بين قوسين معقوفين. تُسمى هذه القائمة الأخيرة أحيانًا "قائمة المُهيئ" أو "قائمة التهيئة" (مع أن مصطلح "قائمة المُهيئ" محجوز رسميًا لتهيئة أعضاء الأصناف/البنى في C++؛ انظر أدناه ). أما التصريح الذي يُنشئ كائن بيانات، بدلًا من مجرد وصف وجوده، فيُسمى عادةً تعريفًا .

يجد الكثيرون أنه من الملائم التمييز بين مصطلحي "التصريح" و"التعريف"، كما في العبارة الشائعة "الفرق بين التصريح والتعريف ... "، مما يوحي بأن التصريح يُشير فقط إلى كائن بيانات (أو دالة). في الواقع، وفقًا لمعيار C++ ، يُعد التعريف تصريحًا. ومع ذلك، فإن استخدام "التصريحات والتعريفات"، على الرغم من عدم صحته رسميًا، شائع. [ 1 ] مع أن جميع التعريفات هي تصريحات، إلا أن ليس كل تصريح تعريفًا.

أمثلة بلغة C:

int i = 0 ; int k [ 4 ] = { 0 , 1 }; char tx [ 3 ] = 'a' ; char ty [ 2 ] = ' f ' ; struct Point { int x ; int y ; } p = { .y = 13 , .x = 7 };

أمثلة بلغة C++:

int i2 = 0 ; int i3 ( 0 ); int i4 {0} ; int j [ 2 ] = { rand (), k [ 0 ] }; MyClass * xox = new MyClass ( 0 , "zaza" ); Point q = { 0 , i + 1 };

قوائم تهيئة الأعضاء

في لغة C++، يمكن أن يحتوي مُنشئ فئة/بنية على قائمة تهيئة للأعضاء ضمن تعريفه، ولكن قبل جسم المُنشئ. عند استخدام قائمة التهيئة، لا تُسند القيم إلى المتغير، بل تُهيأ. في المثال أدناه، تُهيأ قيم re`a` و`b` imلمعاملات المُنشئ: مثال:

class GaussianInteger { private : int re ; int im ; public : GaussianInteger ( int re = 0 , int im = 0 ) : re { re }, im { im } {} };

هنا، البنية re{re}, im{im}هي قائمة التهيئة.

في بعض الأحيان، يُستخدم مصطلح "قائمة التهيئة" أيضًا للإشارة إلى قائمة التعبيرات في مصفوفة أو مُهيئ البنية.

يوفر C++11 مفهومًا أكثر قوة لقوائم التهيئة ، عن طريق قالب يسمى std::initializer_list.

التهيئة الافتراضية

قد تتم تهيئة البيانات دون الحاجة إلى صيغة صريحة في البرنامج. على سبيل المثال، إذا تم تعريف متغيرات ثابتة بدون مُهيئ، فسيتم تهيئة متغيرات أنواع البيانات الأولية بالقيمة صفر من النوع المقابل، بينما يتم تهيئة الكائنات الثابتة من نوع الفئة باستخدام مُنشئاتها الافتراضية .

انظر أيضاً

مراجع

  1. أسئلة وأجوبة حول لغة C++ ، من تأليف كلاين، لوموف، وجيرو، أديسون-ويسلي، 1999، رقم ISBN 0-201-30983-1.