المتغيرات (متوسط)
مقدمة
هذا الدرس يحتوي على بعض المعلومات المتقدمة عن المتغيرات وأساليب تسميتها، وهو تكملة لدرس المتغيرات (المستوى اﻹبتدائي) الذي يحتوي على كل المعلومات اﻷساسية عن المتغيرات.
لغات حساسة اﻷحرف (Case-Sensitive)
معظم لغات البرمجة ومنهم جافاسكريبت حسّاسة اﻷحرف (Case Sensitive)، ويعني ذلك أنها تعتبر الحرف الكبير (Capital) مختلف عن الحرف الصغير (Small)
var name = "Dalilmobarmg";
var Name = "Dalilmobarmg 2";
console.log(name);
console.log(Name);
Dalilmobarmg 2
في المثال السابق نستنتج أن المفسر يعتبر
name
متغير وName
متغير آخر يختلف عنه تماماً. والفرق بينهم فقط حرف N كبير
المعلومة السابقة تُطبق أيضاً على أسماء الدوال وأسماء المتغيرات وأي اسماء أو كلمات في اللغة، مثلاً المتغير name
يختلف عن المتغير Name
كذلك if
تختلف عن If
، الثانية ستعطي خطأ
الكلمات المُستخدم في اللغة، ككلمة function
أو if
أو while
يجب أن تُكتب كما هي، لو غيرتها مثلاً إلى Function
سيُعطيك المفسر خطأ! كذلك null
و true
و false
وهناك لغات كلغة Python تُكتب فيها القيمة المنطقية هكذا True
, False
وهي لغة حساسة اﻷحرف، بالتالي إذا كتبتها true
فسيُعطي المفسر خطأ.
اﻷسماء متعددة الكلمات
في بعض اﻷحيان نحتاج لكتابة اسم للمتغير يحتوي على أكثر من كلمة! وبالتأكيد نعرف أنه غير مسموح بأن تضع مسافة في إسم المتغير يعني مثلاً first test
هو إسم خاطئ للمتغير، يجب أن يتكون المتغير من حروف متلاصقة بدون مسافات، ولو كتبناها هكذا firsttest
فيصبح اﻹسم غير قابل للقراءة، تشعر بأنه كلمة واحدة وليست كلمتين؛ لذلك وضع المبرمجين بعض الأساليب والطرق لكتابة اسم من عدة كلمات...
طريقة الجمل (Camel Case)
في هذه الطريقة نقوم بكتابة الحرف اﻷول من الكلمة اﻷولى صغير، والحرف اﻷول من أي كلمة أخرى كبير؛ كالتالي:
firstName
userName
dalilMobarmg
camelCase
ويمكن أن يتكون اﻹسم من ثلاث كلمات أو أكثر:
myVariableName
dateOfBirth
var firstName = "Ebrahim";
هذه الطريقة هي الطريقة المُتبعة في كتابة أكواد جافاسكريبت.. كما ستعلم لاحقاً في الدرس.
طريقة باسكال (Pascal Case)
في هذه الطريقة نقوم بكتابة الحرف اﻷول من كل كلمة كبير:
FirstName
UserName
DalilMobarmg
PascalCase
var FirstName = "Ebrahim";
طريقة الثعبان (Snake Case)
في هذه الطريقة كل الحروف تكون صغيرة، ونفصل بين كل كلمة واﻷخرى بعلامة _
وتسمى هذه العلامة Underscore:
first_name
user_name
dalil_mobarmg
snake_case
var first_name = "Ebrahim";
كما قلنا سابقاً في درس المتغيرات في المستوى اﻹبتدائي أن الرمز _
من الرموز التي يمكن أن تُستخدم في أسماء المتغيرات.
سُميت هذه الطريقة بطريقة الثعبان ﻷننا نفصل بين كل كلمة بـ _
فيصبح شكل الكلمة أشبه بالثعبان
أي طريقة نستخدم؟
يمكنك استخدام أي من الطرق الثلاثة، لكن لكل لغة مجتمع برمجي، وكل مجتمع برمجي وضع بعض اﻷساليب أو دليل لكتابة أكواد هذه اللغة بالطريقة اﻷمثل، وبالتالي عندما تدرس أي لغة ستجد أن مبرمجيها يفضلون الكتابة بطريقة واحدة من الطرق الثلاثة
جافاسكريبت وطريقة الجمل
مثلاً مبرمجين جافاسكريبت يفضلون استخدام طريقة الجمل (camelCase) وستجد معظم الأمثلة والمكتبات الخارجية والدوال المدمجة في اللغة تستعمل هذه الطريقة، لذلك يفضل دائما أثناء كتابتك لكود بلغة جافاسكريبت أن تستخدم طريقة الجمل.
var firstName = 'test';
بايثون وطريقة الثعبان
للغة بايثون أسلوب كتابة (Style Guide) مُتبع في كتابة أكوادها، يفضل مبرمجيها اتباعه ليكون الكود منسق وقابل للقراءة، ومن هذه اﻷساليب استخدام طريقة الثعبان في أسماء المتغيرات والدوال .. الخ. لذلك ستجد في لغة بايثون معظم الدوال الجاهزة والمدمجة باللغة تستخدم هذا اﻷسلوب، وستجد مبرمجي اللغة يفضلون الكتابة بطريقة الثعبان، وهذا مثال بسيط على إنشاء متغير بلغة بايثون:
first_name = 'test'
مجال المتغيرات (variables scope)
نعني بالمجال: المساحة التي يمكنك فيها الوصول للمتغير، وماذا يعني ذلك..؟
المتغير العام (global variable)
يعني أننا لدينا في البرمجة متغيرات يكون مجالها عام (global) يمكن الوصول لهذا المتغير في أي مكان في البرنامج، وتكون هذه المتغيرات هي تلك التي تم إنشاؤها خارج أي دالة (نطلق عليها في مستوى عالي) وهذه المتغيرات يمكن الوصول لها
var num = 10;
function test(){
console.log(num);
}
test();
في المثال السابق نجد أننا بداخل الدالة تمكننا من استخدام المتغير المعرف خارج الدالة! ﻷن هذا المتغير مجاله عام (global)
المتغير المحلي (local variable)
المتغير المحلي هو متغير تم إنشاؤه أو تعريفه داخل دالة، وﻷن كل دالة تقوم بإنشاء مجال خاص بها، فإن هذا المتغير لا يمكنك استخدامه خارج مجال هذه الدالة.
function test(){
var num = 10;
}
test();
console.log(num);
في المثال السابق على الرغم من أننا قمنا بتعريف المتغير
num
داخل الدالة، وقمنا بإستدعاء الدالة، لكن عندما حاولنا طباعة قيمة المتغير خارج الدالة أعطانا المفسّر خطأ، معناه أن المتغيرnum
لم يتم تعريفه.
المتغير المحلي له اﻷولية على المتغير العام داخل الدالة
في المثال التالي سنقوم بإنشاء متغير عام ومتغير محلي بنفس اﻹسم، ونجري تجربة بسيطة...
var num = 6;
function test(){
var num = 10;
console.log(num);
}
test();
console.log(num);
6
في المثال السابق قمنا بإنشاء متغير عام اسمه
num
خارج الدالة، وإنشاء متغير بنفس اﻹسم داخل الدالة ولكن قيمته 10، وقمنا بطباعة قيمة المتغيرnum
مرة داخل الدالة، ومرة خارج الدالة... نجد أن داخل الدالة يعتبر المفسر أن قيمةnum
تساوي 10 ﻷننا قمنا بتعريفه محلياً داخل الدالة على أن قيمته 10، لكن خارج الدالة يتعامل المفسّر مع المتغيرnum
على أن قيمته 6 ﻷننا قمنا بتعريفه كمتغير عام قيمته 6
المساهمين
وجدت خطأ أو تريد المساهمة في محتوى الدرس؟ عدل الصفحة على Github