الفرق بين المتغير المحلي والمتغير العالمي
الاختلافات الرئيسية بين المتغير المحلي والمتغير العالمي
- يتم تعريف المتغير المحلي داخل الدالة، بينما يتم تعريف المتغير العام خارج الدالة.
- يتم إنشاء المتغيرات المحلية عندما تبدأ الوظيفة في التنفيذ ويتم فقدها عند انتهاء الوظيفة، من ناحية أخرى، يتم إنشاء متغير عام عند بدء التنفيذ ويتم فقده عند انتهاء البرنامج.
- لا يوفر المتغير المحلي مشاركة البيانات، بينما يوفر المتغير العام مشاركة البيانات.
- يتم تخزين المتغيرات المحلية على المكدس، بينما يتم تخزين المتغير العام في موقع ثابت يحدده المترجم.
- تمرير المعلمات مطلوب للمتغيرات المحلية، في حين أنه ليس ضروريًا للمتغير العام
ما هو المتغير؟
المتغير هو اسم مخصص لمنطقة التخزين التي يمكن للبرنامج التعامل معها. يحدد نوع المتغير حجم وتخطيط ذاكرة المتغير.
ويحدد أيضًا نطاق القيم التي يجب تخزينها داخل تلك الذاكرة وطبيعة العمليات التي يمكن تطبيقها على هذا المتغير.
نطاق المتغيرات
نطاق المتغير هو ببساطة عمر المتغير. إنها كتلة من التعليمات البرمجية التي بموجبها يكون المتغير قابلاً للتطبيق أو حيًا. على سبيل المثال:
function foo(){
var x;
}
قمت بتعريف المتغير "x" داخل دالة "foo". يبقى نطاق هذا المتغير داخل تلك الوظيفة ولا يمكن استخدامه خارج تلك الوظيفة.
هناك ثلاثة أماكن يمكن فيها تعريف المتغيرات بمتغير لغة البرمجة:
- داخل دالة أو كتلة: المتغيرات المحلية
- خارج كل الوظائف: المتغيرات العالمية
- في تعريف المعلمات الوظيفية: المعلمات الرسمية
متغير محلي
متغير محلي يتم تعريفه على أنه نوع من المتغيرات المعلنة داخل كتلة البرمجة أو البرامج الفرعية. لا يمكن استخدامه إلا داخل البرنامج الفرعي أو كتلة التعليمات البرمجية التي تم الإعلان عنها فيها. يظل المتغير المحلي موجودًا حتى يتم تنفيذ كتلة الوظيفة. بعد ذلك، سيتم تدميره تلقائيًا.
مثال على المتغير المحلي
public int add(){
int a =4;
int b=5;
return a+b;
}
هنا، "a" و"b" متغيران محليان
المتغير العالمي
A المتغير العالمي في البرنامج هو متغير محدد خارج الروتين الفرعي أو الوظيفة. وله نطاق عالمي يعني أنه يحتفظ بقيمته طوال عمر البرنامج. وبالتالي، يمكن الوصول إليه خلال البرنامج من خلال أي وظيفة محددة داخل البرنامج، ما لم يتم تظليله.
على سبيل المثال:
int a =4;
int b=5;
public int add(){
return a+b;
}
هنا، يعد "a" و"b" متغيرين عالميين.
المتغير المحلي مقابل المتغيرات العالمية
فيما يلي بعض الاختلافات الأساسية بين المتغيرات المحلية والعالمية.
| معامل | محلّي | تجوال حول العالم |
|---|---|---|
| مجال | يتم الإعلان عنها داخل وظيفة. | يتم الإعلان عنها خارج الوظيفة. |
| بعد التخفيض | إذا لم تتم تهيئته، فسيتم تخزين قيمة البيانات المهملة | إذا لم تتم تهيئته، فسيتم تخزين الصفر كإعداد افتراضي. |
| حياة | يتم إنشاؤه عندما تبدأ الوظيفة في التنفيذ ويتم فقده عند انتهاء الوظائف. | يتم إنشاؤه قبل بدء التنفيذ العالمي للبرنامج، ويتم فقده عند انتهاء البرنامج. |
| تبادل البيانات | لا يمكن مشاركة البيانات حيث يمكن الوصول إلى بيانات المتغير المحلي من خلال وظيفة واحدة فقط. | يمكن مشاركة البيانات حيث يمكن لوظائف متعددة الوصول إلى نفس المتغير العام. |
| المعاملات | تمرير المعلمات مطلوب للمتغيرات المحلية للوصول إلى القيمة في وظيفة أخرى | إن تمرير المعلمات ليس ضروريًا للمتغير العام كما هو مرئي في جميع أنحاء البرنامج |
| تعديل القيمة المتغيرة | عندما يتم تعديل قيمة المتغير المحلي في دالة واحدة، فإن التغييرات غير مرئية في دالة أخرى. | عندما يتم تعديل قيمة المتغير الشامل في دالة واحدة، تظهر التغييرات في بقية البرنامج. |
| الوصول إليها | يمكن الوصول إلى المتغيرات المحلية بمساعدة البيانات، داخل الوظيفة التي تم الإعلان عنها. | يمكنك الوصول إلى المتغيرات العامة عن طريق أي عبارة في البرنامج. |
| تخزين الذاكرة | يتم تخزينه على المكدس ما لم يتم تحديده. | يتم تخزينه في مكان ثابت يحدده المترجم. |
مزايا استخدام المتغيرات العالمية
- يمكنك الوصول إلى المتغير العام من كافة الوظائف أو الوحدات النمطية في البرنامج
- ما عليك سوى الإعلان عن المتغير الشامل مرة واحدة خارج الوحدات النمطية.
- يتم استخدامه بشكل مثالي لتخزين "الثوابت" حيث يساعدك في الحفاظ على التناسق.
- يكون المتغير العام مفيدًا عندما تصل وظائف متعددة إلى نفس البيانات.
مزايا استخدام المتغيرات المحلية
- يوفر استخدام المتغيرات المحلية ضمانًا بأن تظل قيم المتغيرات سليمة أثناء تشغيل المهمة
- إذا قامت عدة مهام بتغيير متغير واحد يعمل في نفس الوقت، فقد تكون النتيجة غير متوقعة. ولكن إعلانه كمتغير محلي يحل هذه المشكلة حيث ستقوم كل مهمة بإنشاء مثيل خاص بها من المتغير المحلي.
- يمكنك إعطاء المتغيرات المحلية نفس الاسم في وظائف مختلفة لأنه يتم التعرف عليها فقط من خلال الوظيفة التي تم الإعلان عنها فيها.
- يتم حذف المتغيرات المحلية بمجرد انتهاء أي وظيفة وتحرير مساحة الذاكرة التي تشغلها.
عيوب استخدام المتغيرات العالمية
- هناك عدد كبير جدًا من المتغيرات التي تم الإعلان عنها على أنها متغيرات عمومية، ثم تظل في الذاكرة حتى اكتمال تنفيذ البرنامج. يمكن أن يسبب هذا مشكلة نفاد الذاكرة.
- يمكن تعديل البيانات بأي وظيفة. يمكن لأي عبارة مكتوبة في البرنامج تغيير قيمة المتغير الشامل. قد يعطي هذا نتائج غير متوقعة في بيئات متعددة المهام.
- إذا تم إيقاف المتغيرات العامة بسبب إعادة بناء التعليمات البرمجية، فستحتاج إلى تغيير جميع الوحدات التي يتم استدعاؤها.
عيوب استخدام المتغيرات المحلية
- عملية تصحيح الأخطاء للمتغير المحلي صعبة للغاية.
- البيانات المشتركة مطلوبة لتمريرها بشكل متكرر لأن مشاركة البيانات غير ممكنة بين الوحدات.
- لديهم نطاق محدود للغاية.
ما هو أكثر فائدة؟
المتغير المحلي والعالمي متساويان في الأهمية أثناء كتابة البرنامج بأي لغة. ومع ذلك، قد يشغل عدد كبير من المتغير الشامل مساحة كبيرة من الذاكرة. أصبح من الصعب تحديد أي تغيير غير مرغوب فيه في المتغيرات العالمية. ولذلك، فمن المستحسن تجنب الإعلان عن المتغيرات العالمية غير المرغوب فيها.

