في لغة البرمجة دارت (Dart)، تعتبر المتغيرات (Variables) مفاهيم أساسية تستخدم لتخزين وتمثيل البيانات. وتتميز لغة دارت
بأنها تستخدم نمطاً قوياً للتحقق من الأنواع (Type Safety)، مما يعني أن كل متغير يجب أن يحتوي على نوع معين من البيانات ولا يمكن تغيير هذا النوع بعد تعيينه.
سوف نتناول في هذا الدرس
مقدمة عن المتغيرات البريميتيفية وأهميتها في برمجة لغة دارت.
شرح كل نوع من المتغيرات البريميتيفية واستخداماته.
كيفية تعريف المتغيرات وتخزين القيم فيها.
كيفية استخدام المتغيرات في العمليات الحسابية والمنطقية.
تفاعل المتغيرات مع عمليات الإدخال والإخراج.
أمثلة تطبيقية توضح استخدام المتغيرات البريميتيفية في برامج دارت.
تشمل هذه المتغيرات الأنواع البسيطة مثل الأعداد الصحيحة
(integers) والأعداد العشرية (doubles) والبوليان (booleans) والسلاسل النصية (strings).
int age = 25; double weight = 65.5; bool isStudent = true; String name = 'Ahmed';
تستخدم للإشارة إلى كائنات معقدة مثل القوائم (lists) والمصفوفات (arrays) والمجموعات (sets) والخرائط (maps) وأشكال البيانات المخصصة (custom data structures).
List<int> numbers = [1, 2, 3, 4, 5]; Map<String, dynamic> person = {'name': 'Ali', 'age': 30};
يمكن تعريف متغيرات تحتوي على دوال.
int Function(int, int) add = (int a, int b) => a + b;
تُعرف المتغيرات في دارت باستخدام الكلمة المفتاحية “var” أو باستخدام نوع البيانات مباشرة مع اسم المتغير ومن ثم تعيين قيمته.
يجب أن يكون لدى كل متغير اسم فريد يستخدم للإشارة إليه في البرنامج
وتتبع قواعد محددة لتسمية المتغيرات مثل عدم بدء الاسم برقم واستخدام الحروف والأرقام وشرطة السفلية فقط.
باستخدام المتغيرات، يمكن للمطورين تخزين البيانات المؤقتة والمعالجة عليها في برامجهم، مما يسهل إنشاء تطبيقات قوية ومرنة باستخدام لغة دارت.
لإنشاء متغير في لغة دارت (Dart)، يمكن اتباع الخطوات التالية:
قبل إنشاء المتغير، يجب تحديد نوع البيانات الذي سيحتويه المتغير. يمكن أن يكون النوع أحد الأنواع البريمية مثل int أو
double أو bool، أو يمكن أن يكون نوعًا مركبًا مثل List أو Map أو نوعًا مخصصًا.
بعد تحديد النوع، يمكنك إسناد قيمة للمتغير باستخدام عامل التساوي (=).
اختر اسمًا مناسبًا للمتغير واتبع قواعد تسمية المتغيرات في لغة دارت، مثل عدم بدء الاسم برقم واستخدام الحروف والأرقام وشرطة
السفلية فقط.
void main() { // تعريف المتغير وتحديد نوعه وإسناد قيمة له int age = 25; // طباعة قيمة المتغير print('Age: $age'); }
في هذا المثال، تم إنشاء متغير يسمى “age” من نوع int وتم إسناد قيمة 25 له. ثم تم طباعة قيمة المتغير باستخدام الدالة print
().
بالطبع! دعنا نشرح كيفية إنشاء متغير في لغة دارت (Dart) باستخدام أمثلة شاملة:
الخطوة 1: تحديد النوع
قم بتحديد نوع المتغير الذي تريد إنشاؤه. يمكن أن يكون النوع بريميتيفيًا مثل int أو double أو bool، أو قد يكون نوعًا مركبًا مثل
List أو Map أو نوعًا مخصصًا.
الخطوة 2: اختيار اسم للمتغير
اختر اسمًا مناسبًا للمتغير واتبع قواعد تسمية المتغيرات في لغة دارت، مثل عدم بدء الاسم برقم واستخدام الحروف والأرقام وشرطة السفلية فقط.
الخطوة 3: إسناد قيمة للمتغير
بعد تحديد النوع واختيار اسم المتغير، قم بإسناد قيمة للمتغير باستخدام عامل التساوي (=).
الخطوة 4: استخدام المتغير
يمكنك الآن استخدام المتغير في البرنامج حسب الحاجة.
مثال شامل:
لنقم بإنشاء متغير من نوع String يحمل اسمًا ونقوم بطباعة هذا الاسم:
void main() { // الخطوة 1: تحديد النوع واختيار اسم المتغير String name; // الخطوة 2: إسناد قيمة للمتغير name = 'John Doe'; // الخطوة 4: استخدام المتغير print('Hello, my name is $name.'); }
في هذا المثال، قمنا بإنشاء متغير يسمى “name” من نوع String. ثم قمنا بإسناد قيمة ‘John Doe’ إلى هذا المتغير.
وأخيرًا، قمنا بطباعة جملة تحتوي على قيمة المتغير باستخدام تركيب السلسلة (‘Hello, my name is $name.’).
في لغة دارت (Dart)، تتوفر أنواع متغيرات بريميتيفية (Primitive Variables) لتمثيل القيم الأساسية. هذه الأنواع
تشمل:
تُستخدم لتمثيل الأعداد الصحيحة بدون أجزاء عشرية.
int age = 30;
تُستخدم لتمثيل الأعداد العشرية الذي يمكن أن تحتوي على أجزاء عشرية.
double weight = 65.5;
تُستخدم لتمثيل قيمتين ممكنتين فقط: صحيح أو خطأ.
bool isStudent = true;
تُستخدم لتمثيل النصوص أو السلاسل النصية.
String name = 'Ahmed';
تُستخدم هذه الأنواع من المتغيرات بشكل شائع في البرمجة اليومية لتمثيل مجموعة متنوعة من البيانات. يمكن استخدامها لتخزين معلومات المستخدم، أو القيم المستخدمة في الحوسبة، أو أي بيانات أخرى ذات صلة في التطبيقات البرمجية.
هاكم أمثلة شاملة توضح كيفية استخدام كل نوع من أنواع المتغيرات البريميتيفية في لغة دارت مع شرح لكل منها:
هذا النوع يستخدم لتمثيل الأعداد الصحيحة بدون أجزاء عشرية.
// إنشاء متغير من نوع int يحمل قيمة عمر الشخص int age = 25;
في هذا المثال، تم إنشاء متغير يحمل قيمة عمر الشخص وهو 25.
يُستخدم هذا النوع لتمثيل الأعداد العشرية التي قد تحتوي على أجزاء عشرية.
// إنشاء متغير من نوع double يحمل قيمة وزن الشخص double weight = 65.5;
في هذا المثال، تم إنشاء متغير يحمل قيمة وزن الشخص وهو 65.5.
يُستخدم هذا النوع لتمثيل القيمتين الممكنتين فقط: صحيح أو خطأ.
// إنشاء متغير من نوع bool لتمثيل حالة الطالب bool isStudent = true;
في هذا المثال، تم إنشاء متغير يمثل حالة الطالب، إذا كان صحيحًا فإن الطالب طالب، وإذا كان خطأ فإنه ليس طالب.
يُستخدم هذا النوع لتمثيل النصوص أو السلاسل النصية.
// إنشاء متغير من نوع String يحمل اسم الشخص String name = 'Ahmed';
في هذا المثال، تم إنشاء متغير يحمل اسم الشخص وهو “Ahmed”.
هذه الأمثلة توضح استخدام كل نوع من الأنواع البريميتيفية في لغة دارت بشكل شامل. تُستخدم هذه المتغيرات لتمثيل البيانات بشكل دقيق وفعال في البرمجة.
لنقدم تطبيقًا بسيطًا يستخدم المتغيرات الأولية في لغة دارت. سنقوم بكتابة برنامج يقوم بحساب متوسط درجات الطالب وطباعته على الشاشة. في هذا
التطبيق، سنستخدم المتغيرات الأولية int و double لتمثيل الدرجات والمتوسط.
void main() { // تعريف المتغيرات لدرجات الطالب int mathGrade = 85; int scienceGrade = 90; int historyGrade = 75; // حساب المتوسط double average = (mathGrade + scienceGrade + historyGrade) / 3; // طباعة المتوسط print('متوسط درجات الطالب: $average'); }
في هذا التطبيق، قمنا بتعريف ثلاثة متغيرات من نوع int لتمثيل درجات الرياضيات والعلوم والتاريخ. ثم قمنا بحساب المتوسط بجمع الدرجات
وقسمتها على عددها. الناتج تم تخزينه في متغير من نوع double ليتمثل بدقة الأرقام العشرية. أخيرًا، تم طباعة المتوسط على الشاشة.
هذا المثال يظهر كيف يمكن استخدام المتغيرات البريميتيفية في تطبيق بسيط لحساب المتوسطات، ويوضح كيفية التعامل مع الأنواع المختلفة من المتغيرات
واستخدامها في البرنامج.
سنقوم بكتابة تطبيق بسيط يسأل المستخدم عن اسمه وعمره ويقوم بطباعة رسالة ترحيبية تحتوي على معلومات المستخدم.
سنستخدم متغيرًا من نوع String لتخزين اسم المستخدم.
import 'dart:io'; void main() { // طلب اسم المستخدم stdout.write('ما هو اسمك؟ '); String name = stdin.readLineSync(); // طلب عمر المستخدم stdout.write('كم عمرك؟ '); int age = int.parse(stdin.readLineSync()!); // طباعة رسالة الترحيب print('مرحباً $name، تبلغ من العمر $age عامًا.'); }
قمنا بإستيراد مكتبة dart:io لاستخدام وظائف الإدخال والإخراج من وإلى المستخدم.
قمنا بتعريف متغير name من نوع String لتخزين اسم المستخدم.
باستخدام stdout.write()، نقوم بطباعة رسالة تطلب من المستخدم إدخال اسمه.
باستخدام stdin.readLineSync()، نقوم بقراءة إدخال المستخدم وتخزينه في المتغير name.
نقوم بنفس الخطوات لطلب عمر المستخدم وتخزينه في متغير age.
أخيرًا، نستخدم print() لطباعة رسالة ترحيبية تحتوي على اسم المستخدم وعمره.
هذا التطبيق يوضح كيفية استخدام المتغيرات من نوع String في تخزين البيانات النصية مثل أسماء المستخدمين، وكيفية التفاعل مع المستخدم باستخدام وظائف الإدخال والإخراج.
لنقم بكتابة تطبيق بسيط يحسب معدل درجات طالب في بعض المواد، وذلك باستخدام متغير من نوع double لتخزين الدرجات وحساب المعدل النهائي.
import 'dart:io'; void main() { // طلب درجات المواد stdout.write('ادخل درجة الرياضيات: '); double mathGrade = double.parse(stdin.readLineSync()!); stdout.write('ادخل درجة العلوم: '); double scienceGrade = double.parse(stdin.readLineSync()!); stdout.write('ادخل درجة التاريخ: '); double historyGrade = double.parse(stdin.readLineSync()!); // حساب المعدل النهائي double average = (mathGrade + scienceGrade + historyGrade) / 3; // طباعة المعدل النهائي print('معدلك النهائي هو: $average'); }
استوردنا مكتبة dart:io لاستخدام وظائف الإدخال والإخراج.
قمنا بتعريف ثلاثة متغيرات من نوع double (mathGrade, scienceGrade, historyGrade)
لتخزين درجات الطالب في المواد المختلفة.
باستخدام stdout.write()، طلبنا من المستخدم إدخال درجاته في كل مادة.
باستخدام stdin.readLineSync()، قرأنا إدخال المستخدم وحفظناه في المتغيرات المناسبة.
قمنا بحساب معدل الطالب بجمع درجات المواد وقسمتها على عددها.
استخدمنا print() لطباعة المعدل النهائي على الشاشة.
هذا التطبيق يوضح كيفية استخدام المتغيرات من نوع double لتخزين الأرقام العشرية مثل الدرجات، وكيفية استخدام العمليات الحسابية لحساب المعدلات والنتائج النهائية في البرنامج.
لنكتب تطبيق بسيط يطلب من المستخدم إدخال عمره ويحدد ما إذا كان الشخص قاصرًا أم لا، وذلك باستخدام متغير من نوع bool لتمثيل الحالة القانونية للشخص.
import 'dart:io'; void main() { // طلب عمر المستخدم stdout.write('ما هو عمرك؟ '); int age = int.parse(stdin.readLineSync()!); // تحديد ما إذا كان الشخص قاصرًا أم لا bool isMinor = age < 18; // طباعة النتيجة if (isMinor) { print('أنت قاصر.'); } else { print('أنت لست قاصرًا.'); } }
قمنا بإستيراد مكتبة dart:io لاستخدام وظائف الإدخال والإخراج.
قمنا بطلب عمر المستخدم باستخدام stdout.write() وقراءة الإدخال باستخدام stdin.readLineSync()
وتحويله إلى int.
قمنا بتحديد ما إذا كان الشخص قاصرًا أم لا باستخدام معامل مقارنة عمره مع القيمة 18، وحفظ النتيجة في متغير من نوع bool.
استخدمنا print() لطباعة نتيجة التحقق من الشرط، إما “أنت قاصر.” إذا كان الشخص قاصرًا أو “أنت لست قاصرًا.” إذا كان الشخص ليس قاصرًا.
هذا التطبيق يوضح كيفية استخدام المتغيرات من نوع bool لتمثيل القيم المنطقية مثل حالة قانونية الشخص، وكيفية استخدام العمليات المنطقية لاتخاذ قرارات في البرنامج.
لنقدم تطبيقًا بسيطًا يقوم بحساب مساحة مستطيل باستخدام المتغيرات من نوع int في لغة دارت.
void main() { // تعريف المتغيرات لقياسات المستطيل int length = 5; int width = 3; // حساب مساحة المستطيل int area = length * width; // طباعة النتيجة print('مساحة المستطيل هي: $area'); }
قمنا بتعريف متغيرين من نوع int (length و width) لتمثيل طول وعرض المستطيل على التوالي.
استخدمنا هذه المتغيرات لحساب مساحة المستطيل بضرب قيمة الطول في قيمة العرض.
قمنا بتخزين النتيجة في متغير من نوع int (area).
استخدمنا print() لطباعة قيمة مساحة المستطيل على الشاشة.
هذا التطبيق يوضح كيفية استخدام المتغيرات من نوع int لتمثيل الأرقام الصحيحة، وكيفية استخدام العمليات الحسابية البسيطة للقيام بعمليات حسابية وطباعة النتائج.
سنقوم بإنشاء تطبيق بسيط لحساب معدل الوزن الطبيعي للأشخاص باستخدام المتغيرات الأولية في لغة دارت.
import 'dart:io'; void main() { // تعريف المتغيرات للوزن والطول double weight, height; // طلب إدخال وزن المستخدم stdout.write('ما هو وزنك (بالكيلوغرام): '); weight = double.parse(stdin.readLineSync()!); // طلب إدخال الطول من المستخدم stdout.write('ما هو طولك (بالأمتار): '); height = double.parse(stdin.readLineSync()!); // حساب معدل الوزن الطبيعي باستخدام معادلة كتلة الجسم double bmi = weight / (height * height); // طباعة النتيجة print('معدل وزنك الطبيعي (BMI): $bmi'); }
قمنا بتعريف متغيرين من نوع double (weight و height) لتخزين وزن المستخدم بالكيلوغرام وطوله بالأمتار على
التوالي.
طلبنا من المستخدم إدخال وزنه وطوله باستخدام stdout.write() للمرة الأولى وقمنا بقراءة الإدخال باستخدام
stdin.readLineSync() وتحويله إلى double.
قمنا بحساب معدل الوزن الطبيعي باستخدام معادلة كتلة الجسم (BMI)، حيث يتم قسم الوزن في الكيلوغرام على الطول في المترات مربعًا.
قمنا بطباعة النتيجة باستخدام print().
هذا التطبيق يوضح كيفية استخدام المتغيرات البريميتيفية في الحصول على الإدخال من المستخدم، واستخدام العمليات الحسابية البسيطة لحساب النتائج،
وأخيرًا طباعة النتيجة للمستخدم.
كويز بسيط حول المتغيرات الأولية في لغة دارت مع الشرح:
أ) int
ب) double
ج) bool
د) String
أ) int
ب) double
ج) bool
د) String
أ) int
ب) double
ج) bool
د) String
أ) int
ب) double
ج) bool
د) String
الشرح:
الإجابة الصحيحة: أ) int.
يتم استخدام النوع int لتمثيل الأرقام الصحيحة بدون أجزاء عشرية.
الإجابة الصحيحة: ب) double.
يتم استخدام النوع double لتمثيل الأعداد العشرية التي قد تحتوي على أجزاء عشرية.
الإجابة الصحيحة: ج) bool.
يتم استخدام النوع bool لتمثيل القيم المنطقية صحيح أو خطأ.
الإجابة الصحيحة: د) String.
يتم استخدام النوع String لتمثيل النصوص والسلاسل النصية.
هذا الكويز يساعد في فهم المفاهيم الأساسية حول المتغيرات البريميتيفية في لغة دارت واختبار المعرفة المكتسبة.
bool isRaining = false;
أ) صحيح
ب) خطأ
ج) لا يمكن التحديد
String cityName = ‘New York’;
أ) int
ب) double
ج) bool
د) String
int num1 = 10;
int num2 = 5;
double average = (num1 + num2) / 2;
أ) 15
ب) 7.5
ج) 5
د) 10
double temperature = 25.5;
أ) 25.5
ب) 25
ج) 26
د) 26.0
الشرح:
الإجابة الصحيحة: أ) صحيح.
قيمة المتغير isRaining هي false، والتي تمثل عدم هطول المطر.
الإجابة الصحيحة: د) String.
المتغير cityName هو من نوع String ويحتوي على القيمة ‘New York’، وهو يمثل اسم المدينة.
الإجابة الصحيحة: ب) 7.5.
تم حساب المعدل بجمع الأعداد وقسمتها على عددها، لذا المعدل هو (10 + 5) / 2 = 7.5.
الإجابة الصحيحة: أ) 25.5.
قيمة المتغير temperature هي 25.5 وهي قيمة عشرية.
int numberOfStudents = 50;
أ) 50
ب) 49
ج) 51
د) “50”
bool isSunny = true;
أ) int
ب) double
ج) bool
د) String
String greeting = “Hello, world!”;
أ) “Hello”
ب) “world”
ج) “Hello, world!”
د) “Hello world”
double price = 19;
أ) 19
ب) 19.0
ج) “19”
د) 18.99
الشرح:
الإجابة الصحيحة: أ) 50.
المتغير numberOfStudents يحمل قيمة 50، وهي قيمة صحيحة.
الإجابة الصحيحة: ج) bool.
المتغير isSunny هو من نوع bool ويحمل قيمة true، والتي تمثل حالة الطقس.
الإجابة الصحيحة: ج) “Hello, world!”.
المتغير greeting يحمل السلسلة النصية “Hello, world!”.
الإجابة الصحيحة: ب) 19.0.
المتغير price هو من نوع double ويحمل قيمة 19.0، وهي قيمة عشرية.