إسناد (حوسبة)
في برمجة الحاسوب، تقوم عبارة الإسناد[1] بتعيين أو إعادة تعيين القيمة [الإنجليزية] المخزنة في موقع التخزين، ويرمز لها باسم متغير. بمعنى آخر، تقوم بنسخ قيمة إلى متغير. وتُعتبر عبارة الإسناد تركيبًا أساسيًّا في معظم لغات البرمجة.
في الوقت الحاضر، أشهر ترميز لهذه العملية الأساسية هو x = expr
(في الأصل من لغة سوبربلان (Superplan) 1949–51، اشتُهرت بلغة فورتران 1957م و لغة سي) ويلحقها الترميز x := expr
(في الأصل من لغة ألغول، اشتُهرت بلغة باسكال)[2]، وهنالك العديد من التراميز الأخرى تُستخدم. في بعض لغات البرمجة يعتبر الرمز المستخدم كمشغل (بمعنى أن الإسناد يحوي قيمة)، بينما في لغات أخرى تُعرِف الإسناد كعبارة (يعني هذا أنه لا يمكن أن تُستخدم تعبيرًا حسابيًا).
تسمح الإسنادات عادةً للمتغير بأخذ قيم مختلفة في أوقات مختلفة خلال فترة التشغيل والمجال. ولكن، في بعض اللغات (وتحديداً لغات البرمجة الوظيفية) لا تسمح بذلك النوع من إعادة الإسناد المتغيرة، وذلك لأنها ستفرض تغييرات على الحالة الغير محلية. الغرض من ذلك هو تنفيذ الشفافية المرجعية، وهذا يعني أن الدوال لا تعتمد على حالة بعض المتغيرات، لكنها تولد نفس النتائج لمجموعة معينة من المدخلات الوسيطية في أي نقطة زمنية. تستخدم البرامج الحديثة في اللغات الأخرى أيضاً استراتيجيات مشابهة، ولكنها أقل صرامة، وفقط في أجزاء معينة، وذلك للتقليل من التعقيد، وذلك يتم غالباً بالتزامن مع استكمال طرائق كبنية البيانات، أو البرمجة المهيكلة، أو برمجة كائنية التوجه.
أشهر رمز للتحديد وأكثرها شيوعاً هو =، ولكنه قد يختلف باختلاف اللغات، يعرض الجدول التالي بعض الأمثلة، حيث يمثل (بالإنجليزية: variable) المتغير ويليه رمز التحديد، ومن ثم التعبير (بالإنجليزية: expression).
دلاليّات
[عدل]عملية الإسناد هي معالجة في البرمجة الأمرية بحيث ترتبط عدة قيم بمتغير محدد مع مرور الوقت.[3] البرنامج في تخطيط كهذا، يعمل باغيير حالته باستخدام عبارات إسناد متتالية.[2][4] تعتمد اللغات الأمرية البدائية على الإسناد لعمل تكرار. وفي لغات المستوى المنخفض، يمكن تنفيذ الإسناد باستخدام عمليات لغة التجميع، كـ MOVE
أو STORE
.[5][2]
المتغيرات تمثل حاويات للقيم. ومن الممكن وضع قيمة في متغير ومن ثم تبديلها بقيمة جديدة أخرى لاحقاً. عملية الإسناد تقوم بتعديل الحالة الراهنة للبرنامج المنفذ.[4] وإذن، الإسناد يعتمد على مفهوم المتغيرات.
- يُحسب التعبير
expression
في الوضع الراهن للبرنامج. - تُسنَد القيمة المحسوبة للمتغير
variable
، وتستبدل القيمة القديمة بتلك المحوسبة.
مثال: بافتراض a
متغير عددي، عملية الإسناد a := 2*a
تعني بأن محتوى المتغير a
سيتضاعف بعد تنفيذ عبارة الإسناد.
مثال آخر في لغة سي :
int x = 10;
float y;
x = 23;
y = 32.4f;
في هذا النموذج، صُرِّح المتغير x أولاً على أنه عدد صحيح، ومن ثم أُسند القيمة 10 له. يلاحظ أن التصريح والإسناد حدثا في نفس العبارة. في السطر التالي، صُرِّح y بدون إسناد. في السطر الثالث، أُعيد إسناد x بقيمة تساوي 23. وفي آخر السطر، أُسنِد y بقيمة 32.4.
من الضروري في عملية الإسناد بأن تكون قيمة expression
صالحة، وأن يكون variable
يمثل كيان قابل للتعديل. في بعض اللغات، وغالباً في لغات البرمجة الحركية، ليس من الضروري تصريح متغير قبل إسناد قيمة لها.
التدوين
[عدل]اللغة | الأمر |
---|---|
PL/1 ، فورتران، لغة سي، و جافا | variable = expression
|
ألغول، باسكال، أيدا | variable := expression
|
كوبول | MOVE expression TO variable
|
بيسيك | LET variable = expression
|
مراجع
[عدل]- ^ نزار الحافظ (2007)، مسرد مصطلحات المعلوماتية (بالعربية والإنجليزية)، الجمعية العلمية السورية للمعلوماتية، ص. 4، QID:Q108442159
- ^ ا ب ج ويسكوبف, ماري إلين (28 شباط 2012م). "البرمجة الأمرية". جامعة ألاباما في هنتسفيل (بالإنجليزية). ألاباما، الولايات الأمريكية المتحدة. Archived from the original on 04 مارس 2016. Retrieved 18 نسيان 2017م.
{{استشهاد بخبر}}
: تحقق من التاريخ في:|تاريخ الوصول=
and|تاريخ=
(help) - ^ "مواضيع في معالجة المعلومات". www.csc.liv.ac.uk (بالإنجليزية). جامعة ليفربول. 11 تشرين الأول 1999م. Archived from the original on 30 يونيو 2012. Retrieved 18 نسيان 2017م.
{{استشهاد ويب}}
: تحقق من التاريخ في:|تاريخ الوصول=
and|تاريخ=
(help) - ^ ا ب فليغ, روديجر ماركوس (31 آذار، 2008م). Bioinformatics Programming in Python: A Practical Course for Beginners (بالإنجليزية). جون وايلي آند سونز. ISBN:9783527320943. Archived from the original on 19 أبريل 2017. Retrieved 18 نسيان 2017م.
{{استشهاد بكتاب}}
: تحقق من التاريخ في:|تاريخ الوصول=
and|تاريخ=
(help) - ^ تيت, بروس (18 تموز 2006م). "Crossing borders: Explore functional programming with Haskell" (بالإنجليزية). آي بي إم. Archived from the original on 31 يوليو 2017. Retrieved 18 نسيان 2017م.
{{استشهاد ويب}}
: تحقق من التاريخ في:|تاريخ الوصول=
(help)صيانة الاستشهاد: BOT: original URL status unknown (link)