– المتغيرات (Variables) من أهم مفاهيم البرمجة، لأنها الأساس الذي تُبنى عليه البرامج
ما هي المتغيرات (Variables)؟
المتغير هو مكان في الذاكرة يُخزّن قيمة يمكنك استخدامها لاحقًا أو تعديلها أثناء تنفيذ البرنامج.
فكر في المتغير وكأنه علبة تحمل اسمًا وتحتوي قيمة.
🧰 لماذا نستخدم المتغيرات؟ (الفوائد) — إضافات
✅ نقل البيانات بين أجزاء البرنامج المختلفة (مثل تمرير المتغيرات بين الدوال أو الصفوف).
✅ تنفيذ عمليات منطقية أو حسابية بناءً على القيم المخزنة.
✅ تسهيل التعامل مع مدخلات المستخدم ومعالجتها.
✅ إدارة الحالة (State Management) في البرامج التفاعلية أو تطبيقات الجوال.
✅ زيادة مرونة الكود وجعله أكثر قابلية لإعادة الاستخدام والصيانة.
✅ تقليل التكرار في الكود عن طريق استخدام نفس المتغير في أكثر من مكان.
قواعد تسمية المتغيرات في Dart (بالتفصيل):
✅ يجب أن يبدأ اسم المتغير:
- بحرف إنجليزي صغير (a-z أو A-Z).
- أو بعلامة underscore
_
(لكن هذا يُستخدم عادةً للمتغيرات الخاصة أو الداخلية). - ✅ يمكن أن يحتوي الاسم على:
- أحرف إنجليزية.
- أرقام (لكن ليس في أول الاسم).
- علامة underscore
_
. - ❌ لا يمكن:
- أن يبدأ برقم (مثل:
1name
). - أن يحتوي على فراغ (مثل:
user name
). - أن يحتوي على رموز خاصة (مثل:
@
,#
,%
,-
). - 📛 لا يُسمح باستخدام الكلمات المحجوزة في Dart كأسماء للمتغيرات، مثل:
int
,class
,if
,while
,return
,true
,false
,null
,var
,const
, وغيرها.- 🎯 يُفضل استخدام أسلوب camelCase:
- تبدأ الكلمة الأولى بحرف صغير.
- تبدأ كل كلمة جديدة بعدها بحرف كبير.
مثال:userName
,totalPrice
,isLoggedIn
. - 📌 ملاحظة:
- Dart حسّاسة لحالة الأحرف (Case-sensitive)، أي أن
userName
وUsername
وUSERNAME
تعتبر أسماء مختلفة تمامًا.ي على أرقام بعد الحرف الأول. - لايمكن أن يبدأ برقم.
- لايمكن أن يحتوي على فراغ.
- يُفضل استخدام camelCase (أي تبدأ بحرف صغير، وكل كلمة جديدة تبدأ بحرف كبير).
- أن لا يكون كلمة محجوزة في اللغة.
🧾 ما معنى التصريح عن المتغير؟
التصريح يعني إخبار البرنامج أنك ستستخدم متغيرًا باسم معيّن وتحديد نوعه (أو ترك Dart تحدده تلقائيًا)، ويمكن أن تعطيه قيمة أولية أو تتركه فارغًا مؤقتًا.
✅ طرق التصريح عن المتغير في Dart:
1. ✅ باستخدام var
(يُستنتج النوع تلقائيًا):
var name = 'AHMAD'; //String
var age = 25; // نوعه int
................................
Dart سيفهم نوع المتغير تلقائيًا من القيمة.
Dart✅ باستخدام نوع البيانات مباشرة:
String name = 'سارة';
int age = 30;
double price = 19.99;
bool isAvailable = true;
.....................................
هنا حددت نوع المتغير بنفسك، وهذا يُستخدم لكتابة كود أكثر وضوحًا.
Dart3. ✅ باستخدام final
(قيمة لا تتغير لاحقًا):
final city = 'القاهرة';
........................................
تُستخدم عندما تكون القيمة ثابتة ولكن تُعرف أثناء التشغيل.
Dart4. ✅ باستخدام const
(قيمة ثابتة وقت الترجمة):
const pi = 3.14;
.................................
تُستخدم مع الثوابت التي لا تتغير أبدًا ويتم تحديدها وقت كتابة الكود.
Dart5. ✅ باستخدام dynamic
(يمكن تغيير نوع القيمة):
dynamic x = 'نص';
x = 123; // مسموح
x = true; // مسموح
Dartيُستخدم إذا كنت لا تعرف نوع القيمة مسبقًا، ولكن يفضّل تجنبه إلا عند الضرورة.
📌 ملاحظات:
- يمكن التصريح عن المتغير دون إعطائه قيمة:
String name;
int age;
void main() {
name = 'يوسف';
age = 24;
print(name);
}
Dartلكن مع var
لا يمكن التصريح فقط دون قيمة:
var city; // مسموح، لكن نوعه سيكون dynamic تلقائيًا
Dartvoid main() {
var name = 'علي';
int age = 20;
double height = 1.75;
bool isStudent = true;
final country = 'مصر';
const pi = 3.14;
print('الاسم: $name');
print('العمر: $age');
print('الطول: $height');
print('طالب؟ $isStudent');
print('البلد: $country');
print('الثابت: $pi');
}
Dart