أنت هنا:برمجها»اللغة ج»الدرس 4: المتغيرات والثوابت والإسناد
الدرس 4: المتغيرات والثوابت والإسناد الدرس 4: المتغيرات والثوابت والإسناد
قيم الموضوع
(2 أصوات)

تستخدم المتغيرات لحفظ البيانات. سواء كانت هذه البيانات بسيطة كالأعداد، والحروف، أو مركبة كالجداول والبنيات.


1. المتغيرات

قبل استخدام أي متغير في أوامر البرنامج، يجب تعريفه بواسطة جملة تعريف لها الصيغة العامة التالية:

المتحول <اسم> [، <اسم> ...] : <نوع>

مثلاً، تعرف الجملة التالية المتغير عدد_الطلاب بأنه متحول صحيح، أي يمكن أن نضع فيه الأعداد الصحيحة.

المتحول عدد_الطلاب : صحيح

أما الجملة التالية فتعرف المتغيرات س ، ع ، ص بأنها متغيرات حقيقية، أي يمكنها حفظ الأعداد الحقيقية.

المتحول س ،ع ، ص : حقيقي

وفي العبارة التالية يعرف المتغير م بأنه متحول منطقي، يمكنه أن يأخذ إحدى القيمتين: صواب أو خطأ.

المتحول م : منطقي

غني عن القول أنه لا يجوز تعريف المتغير الواحد أكثر من مرة واحدة في نفس البرنامج، أو تعريف متغيرين مختلفين بنوعهما لهما نفس الاسم، أو تعريف عنصر آخر - كخوارزمية أو تابع – له نفس اسم أحد المتغيرات.

 ويصبح الـمتغير معرفاً في كافة مواضع البرنامج التي تلي جملة تعريفه في نص البرنامج، لكنه يظل غير معرف في المواضع التي تسبق هذه الجملة. لذلك يجب على الدوام تعريف المتغيرات في مكان سابق لمكان استخدامها. فاستخدام المتغير س في السطر الأول من البرنامج التالي، استخدام خاطىء لأنه لم يتم تعريفه بعد.

س = 15 !!لا يصح استخدام المتغير س في هذا الموضع لأنه سابق لجملة تعريفه
المتحول س ، ع : حقيقي
ع = س + 1 !! يصح هنا استخدام المتغير س لأنه تم تعريفه


 2. الثوابت

تستخدم الثوابت في لغات البرمجة رفيعة المستوى لتعريف القيم العددية الثابتة، كالثوابت الرياضية والفيزيائية. ويسهّل استعمال الثوابت في البرنامج استخدام هذه القيم في أماكن عديدة من البرنامج، كما يضمن عدم تغير قيمتها ولو بطريق الخطأ. علاوة على ذلك، تقدم الثوابت أسماء بديلة للقيم العددية المعقدة، يمكن تذكرها واستخدامها بسهولة عند كتابة البرنامج ومراجعته. فكتابة العبارة التالية باستخدام الثابت "سرعة_الضوء"

ط = ك × سرعة_الضوء ^2

أسهل من كتابة نفس العبارة باستخدام قيمته العددية، كما في هذه العبارة

ط = ك × (3.0 × 10^8) ^2

 ويعرف الثابت بواسطة جملة تعريف لها الصيغة العامة التالية:

الثابت <اسم> = <عبارة ثابتة>

يجب ألا تحتوي العبارة الثابتة التي تحدد قيمة الثابت على متغيرات، أو دوال تستخدم متغيرات، وأن تقتصر على الأعداد الثابتة، أو أسماء الـثوابت التي تم تعريفها قبل ذلك. فالجمل التالية تعرف ثوابت مقبولة:

الثابت بي = 3.141593 !! نسبة محيط الدائرة إلى قطرها
الثابت صفر = 0 !! بديل كتابي للصفر
الثابت نصف = 1 ÷ 2 !! بديل كتابي للقيمة نصف
الثابت ربع = نصف ÷ 2 !! بديل كتابي للقيمة ربع
الثابت مليون = 10^6 !! بديل كتابي للمليون
الثابت سرعة_الضوء = 3.0 × 10^8 !! سرعة انتشار الضوء
الثابت بلانك = 6.625 × 10^-34 !! ثابت بلانك
الثابت جيب90 = جب (بي ÷ 2) !! جيب الزاوية 90
الثابت بسم = "بسم الله الرحمن الرحيم"
الثابت ألفباء = "ا ب ت ث ج ح خ د ذ ر ز س ش ص ض ط ظ ع غ ف ق ك ل م ن ه و ي"

ويكتسب الثابت نوع العبارة المعرفة له. فالثابت بي المعرف أعلاه هو ثابت عددي حقيقي، وكذلك الحال بالنسبة للثوابت نصف و ربع و سرعة_الضوء و بلانك و جيب 90. أما الثابت صفر فهو ثابت صحيح وكذلك الثابت مليون. أما الثابتين بسم و ألفباء فهما ثابتين نصيين. أما الطريقة التالية لتعريف الثابت "نصف" فطريقة خاطئة لأن عبارة تعريف الثابت تحوي متغيرا:

المتحول س : صحيح
أجعل س = 1
الثابت نصف = س ÷ 2 !! خطأ

وبعد تعريف ثابت عددي يمكن استخدامه في العلاقات الحسابية كأي قيمة عددية أخرى. فالبرنامج الصغير التالي:

!! برنامج لحساب مساحة دائرة ومحيطها
الثابت بي = 3.1415
المتحول ر : حقيقي
أكتب "أدخل قيمة نصف قطر الدائرة:"
أقرأ ر
أكتب "مساحة الدائرة = " ، بي × ر^2
أكتب "محيط الدائرة = " ، 2 × بي × ر

يطلب من المستخدم أن يدخل نصف قطر دائرة، ثم يقوم بكتابة مساحتها ومحيطها. أما البرنامج التالي:

الثابت بسم = "بسم الله الرحمن الرحيم"
أكتب بسم

فيكتب عند تنفيذه عبارة "بسم الله الرحمن الرحيم" في لوحة الكتابة.

 وبعد تعريف ثابت لا يجوز إسناد قيمة جديدة له، عن طريق الإسناد أو القراءة مثلاً. فمحاولة تغيير قيمة الثابت ث في السطر الثاني من البرنامج التالي عمل خاطئ.

الثابت ث = 16
أجعل ث = 2 !! خطأ. لا يجوز تغيير قيمة الثابت بعد تعريفه

يكتشفه مترجم لغة ج ويصدر رسالة الخطأ المناسبة.


3. الإسناد

الإسناد في لغات البرمجة هو وضع قيمة معينة في متغير يقبل هذه القيمة. وفي لغة ج يتسخدم الأمر "أجعل" لإسناد القيم للمتغيرات المختلفة.

جملة أجعل

يتستخدم أمر الإسناد أجعل لتهيئة متغير حسابي بقيمة معينة، أو قيمة منطقية لمتغير منطقي. والصيغة العامة لجملة أجعل هي:

[أجعل] <متحول> = <عبارة>

تقوم هذه الجملة بإسناد (تخزين أو تهئية) قيمة العبارة المكتوبة إلى يسار إشارة تساوي في المتحول المذكور إلى يمينها. كما في الأمثلة التالية:

أجعل س = 40.5 !! أسند للمتحول س القيمة 40.5
أجعل س = ع + 1 !! أسند للمتحول س قيمة العبارة ع+1
أجعل ص = مط × تجب(يه) !! أسند للمتحول ص قيمة العبارة مط×تجب(يه)
أجعل م = (د>10) !!أسند للمتحول المنطقي م قيمة العبارة المنطقية د>10

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

نوع المتحول (الطرف الأيمن

نوع العبارة (الطرف الأيسر)

صحيح

صغير

حقيقي

حرف

منطقي

مؤشر

 

صحيح

نعم

نعم

لا

نعم

لا

لا

صغير 

ممكن 

نعم 

لا 

نعم 

لا 

لا 

حقيقي

نعم

نعم

نعم

نعم

لا

لا

حرف

ممكن

ممكن

لا

نعم

لا

لا

منطقي

لا

لا

لا

لا

نعم

لا

مؤشر

نعم

نعم

لا

نعم

لا

لا

وفي هذا الجدول تشير:

1- "نعم"  إلى أنه يجوز إسناد قيمة العبارة للمتغير،

2- "لا" إلى أنه لا يجوز إسناد قيمة العبارة للمتغير،

3- "ممكن"  إلى أنه يجوز إسناد قيمة العبارة للمتغير شريطة أن لا تتجاوز قيمتها أكبر قيمة يمكن للمتغير أن يقبلها. ويكون ذلك من مسؤولية المبرمج الذي يجب أن يراعي هذه الناحية. ففي البرنامج التالي:

المتحول ص : صحيح
المتحول غ : صغير
ص = 4500
غ = ص + 1
أكتب غ

يصح الإسناد في الأمر الرابع لأن قيمة العبارة ص+1 (4600) أقل من أكبر قيمة يقبلها المتغير الصغير غ.

مثال آخر:

1 المتحول س ، ع : صحيح
2 المتحول م : منطقي
3 أقرأ س ، ع
4 م = س =؟ ع
5 إذا م أكتب "س=ع"

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


تأليف

المؤلف الأصلي: الدكتورمحمد عمار السَلكة (دمشق - سوريا)

الموقع الشخصي: http://www.drsalka.com

البريد الإلكتروني: عنوان البريد الإلكتروني هذا محمي من روبوتات السبام. يجب عليك تفعيل الجافاسكربت لرؤيته.

 

ضبط بتصرف: محمد عبد الرحمان (الدار البيضاء - المغرب) 


المراجع

http://www.jeemlang.com


  

التعليقات  

د عبدالهادي
0 # د عبدالهادي 2014-05-12 18:21
هل يمكن أن يأخذ الاسناد أكثر من قيمة واحدة
مع الاحترام
رد | رد مع اقتباس | اقتباس | تقرير إلى المدير

أضف تعليقا


إصنعها يريد أن يتأكد أنك لست روبوتا، لذلك أحسب ما يلي:

كود امني
تحديث