15

13 - سلسلة تبسيط البرمجة – آلية المجال أو النطاق

13 - سلسلة تبسيط البرمجة – آلية المجال أو النطاق

السلام عليكم ورحمة الله وبركاته

بسم الله الرحمن الرحيم

تحدثنا في الحلقة الماضية عن المتغيرات و أنه بالإمكان تعريفها على أنها مكان في الذاكرة لحفظ قيم يمكن أن تتغير مع تقدم سير البرنامج

وعليه يجب أن يتم تعريف المتغير باسم لا يتشابه مع اسم متغير آخر في نفس المستوى أو المجال حتى لا يختلط الأمر على المترجم أيهما المقصود عند الطلب

تخيلو لو أنه في البيت الواحد يوجد شخصين بنفس الاسم ثم نادت الأم هذا الاسم

فلا شك أنه سيحصل التباس وكل واحد يحتار هل هو المقصود أم الثاني

ولهذا كان من الأفضل جعل الاسماء مختلفة لو حتى بأرقام

كأن تنادي أحمد الكبير أو أحمد1 أو أحمدالأسمر

وهكذا إننا نسمي المستوى الذي يكون الوصول فيه للمتغيرات واحدا أو متساوي بالمجال أو النطاق أو المدى (Scope)

فالمجال قد يكون ضيق وقد يكون على أوسع وقد يكون عام

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

وهنا لا مشكلة لو كان في البيت أحمد ومحمد وفي بيت الجيران أحمد ومحمد

لأنه عند استدعاء الاسم ضمن نطاقه فلن يختلط على أحد لأن الاستدعاء ضمن نطاق ليس فيه تشابه

ولكن تخيلو لو أن واحد على درج البناية والذي هو أوسع من البيت ثم نادى أحمد

فمن المقصود هل هو أحمد في المنزل الأول أم أحمد في المنزل الثاني أم الثالث أم من ؟

من هنا يجب عند معرفتنا مسبقا باستخدام المتحول أو المتغير ضمن نطاق أن يكون الاسم فريدا ضمن نفس النطاق

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

فالحارة مليئة بمن يحمل نفس الاسم فمن هو المقصود

ولهذا إذا كان تعريف المتغير ضمن نطاق واسع يجب جعل اسمه فريدا أو يتم إضافة جزء كبادئة تعبر عن نطاقه الخاص لتمييزه عن النطاقات الأخرى

كأن ينادي أحمد الذي يقطن البيت الخامس من البناية كذا يحضر إلى هنا

تصوروا في مثالنا في الدرس السابق عن المحاسب لو أنه يوجد صندوقي مال في مكتب المحاسب

فسيختلط الأمر على المحاسب أيهما الذي سيحسبه ولهذا إما أن يكون فريدا أو أن يتم تمييزه

كأن يقول المدير الصندوق الكبير أو الصندوق الفضي وهكذا

بينما لو كان هناك صندوق في غرفته وصندوق في غرفة المدير

فلا شك أنه سيفهم أن المقصود هو الذي في غرفته

نفس الأمر ينطبق على الثوابت لأنه خانات ذاكرية يتم استدعائها من خلال اسمها إلا أنها تتميز بأن قيمتها ثابتة لا تتغير

دمتم بأمان الله

يرجى الدخول لحسابك أو تسجيل حساب لتستطيع إضافة تعليق
حساب جديد دخول

التعليقات

فكرة الشرح جميلة جدا،تشكر على الموضوع أخي عبد الرحمن

أشكرك على الثناء الحسن

أين المثال عن متغير محلي ومتغير عام ؟ :)

العفو،فعلا لم انتبه أني لم أكتب مثاﻻ عن المتغيرات...أتمنى أن يفهم الجميع هذا المثال البسيط

var = "Abdelmadjid"
Var = "Mohamed"
Home = ["Abdelmadjid","Mohamed"]
Town = ["Abdelmadjid","Mohamed"]

print var
print Var
print Home[1]
print Town[0]

هل هذه تعتبر متغيرات عامة أم محلية أي كنا نريد المثال أن يوضح متغير ضمن نطاق محلي - داخل دالة مثلا - و متغير ضمن نطاق أوسع .

بالنسبة للمبتدئ في البرمجة فلن يكون بمقدوره فهم متغيرات الدوال بشكل جيد.كنت أود طرح ذلك المثال و لكني فضلت هذا.

ببساطة إن اردنا مناداة شخص معين و ليكن مثلا محمد الذي هو جالس أمامنا فإننا بحاجة لمناداة المتغير Var(متغير عام) أما إن كنا نريد مناداة عبد المجيد الذي يسكن في معنا في نفس المدينة فعلينا "تحديد" مكان البحث عنه و الذي هو Town (المتغير محلي)

مقدمة السلسلة

https://io.hsoub.com/progra...

الدرس السابق 12

https://io.hsoub.com/progra...

الدرس التالي 14

https://io.hsoub.com/progra...