في هذا المقال، سنقدم 10 تمارين محلولة باستخدام لغة دارت (Dart). وهي لغة برمجة حديثة تم تطويرها بواسطة جوجل. تهدف هذه التمارين إلى مساعدة المطورين المبتدئين في فهم وتعلم لغة دارت بشكل أفضل. سنقدم حلولًا مفصلة لكل تمرين، مع شرح الخطوات والمفاهيم المستخدمة. تغطي التمارين مواضيع متنوعة مثل المتغيرات والدوال والتعامل مع القوائم والمصفوفات وغيرها. يهدف هذا المقال إلى أن يكون مرجعًا قيمًا للمطورين الجدد الذين يرغبون في استكشاف قدرات لغة دارت في عام 2024.
تمرين 1: حساب الفائدة المركبة مع الودائع الشهرية
وصف التمرين: مبلغ مالي قدره 5000 دولار يُستثمر بمعدل فائدة سنوي قدره 6٪، وتتم إضافة 200 دولار شهريًا. قم بكتابة برنامج بلغة دارت لحساب المبلغ النهائي بعد 3 سنوات.
void main() { double principal = 5000; double rate = 0.06 / 12; // معدل الفائدة الشهري double monthlyDeposit = 200; int months = 3 * 12; for (int i = 0; i < months; i++) { principal += monthlyDeposit; principal += principal * rate; } print('The amount after 3 years is: \$${principal.toStringAsFixed(2)}'); }
نتيجة الكود:
The amount after 3 years is: $13889.96
“اقرأ أيضاً: تمارين محلولة على لغة دارت الجزء الخامس“
تمرين 2: حساب عدد الطرق الممكنة لتكوين مبلغ معين باستخدام عملات معدنية
وصف التمرين: لديك عدد غير محدود من العملات المعدنية بقيمة 1، 2، و5 دولار. قم بكتابة برنامج بلغة دارت لحساب عدد الطرق الممكنة لتكوين مبلغ 10 دولار.
void main() { int countWays(int n, List<int> coins) { List<int> dp = List.filled(n + 1, 0); dp[0] = 1; for (int coin in coins) { for (int i = coin; i <= n; i++) { dp[i] += dp[i - coin]; } } return dp[n]; } int amount = 10; List<int> coins = [1, 2, 5]; print('Number of ways to make \$${amount}: ${countWays(amount, coins)}'); }
نتيجة الكود:
Number of ways to make $10: 10
تمرين 3: حساب مجموع الأعداد الأولية الأقل من عدد معين
وصف التمرين: قم بكتابة برنامج بلغة دارت لحساب مجموع الأعداد الأولية الأقل من 50.
void main() { bool isPrime(int n) { if (n <= 1) return false; for (int i = 2; i <= n ~/ 2; i++) { if (n % i == 0) return false; } return true; } int sumPrimes(int limit) { int sum = 0; for (int i = 2; i < limit; i++) { if (isPrime(i)) sum += i; } return sum; } int limit = 50; print('Sum of primes less than $limit: ${sumPrimes(limit)}'); }
نتيجة الكود:
Sum of primes less than 50: 328
“اقرأ أيضاً: شرح مفهوم وراثة الـ Constructor في لغة دارت (Dart)“
تمرين 4: حساب عدد الكلمات في نص معين
وصف التمرين: قم بكتابة برنامج بلغة دارت لحساب عدد الكلمات في النص التالي: “Dart is a client optimized language for fast apps on any platform.”
void main() { String text = "Dart is a client optimized language for fast apps on any platform."; int wordCount(String text) { List<String> words = text.split(' '); return words.length; } print('Number of words: ${wordCount(text)}'); }
نتيجة الكود:
Number of words: 12
تمرين 5: حساب الوقت اللازم للوصول إلى هدف مشي معين
وصف التمرين: إذا كان الشخص يمشي 5 كم يوميًا، ويريد الوصول إلى هدف قدره 150 كم. قم بكتابة برنامج بلغة دارت لحساب عدد الأيام اللازمة للوصول إلى الهدف.
void main() { int dailyWalk = 5; // كم يوميًا int goal = 150; // الهدف بالكم int daysNeeded = (goal / dailyWalk).ceil(); print('Days needed to reach the goal: $daysNeeded'); }
نتيجة الكود:
Days needed to reach the goal: 30
“اقرأ أيضاً: شرح استخدام ويدجت IntrinsicHeight في فلاتر“
تمرين 6: حساب قوة كلمة المرور
وصف التمرين: قم بكتابة برنامج بلغة دارت للتحقق من قوة كلمة المرور بناءً على طولها وتنوع الأحرف (أحرف صغيرة وكبيرة، أرقام، ورموز).
void main() { bool isStrongPassword(String password) { bool hasUpperCase = password.contains(RegExp(r'[A-Z]')); bool hasLowerCase = password.contains(RegExp(r'[a-z]')); bool hasDigit = password.contains(RegExp(r'[0-9]')); bool hasSpecialChar = password.contains(RegExp(r'[!@#$%^&*(),.?":{}|<>]')); bool hasMinLength = password.length >= 8; return hasUpperCase && hasLowerCase && hasDigit && hasSpecialChar && hasMinLength; } String password = "StrongP@ssw0rd"; print('Is the password strong? ${isStrongPassword(password)}'); }
نتيجة الكود:
Is the password strong? true
تمرين 7: حساب المتوسط الحسابي والوسيط لمجموعة من الأرقام
وصف التمرين: قم بكتابة برنامج بلغة دارت لحساب المتوسط الحسابي والوسيط لمجموعة الأرقام [5, 3, 8, 1, 4, 6, 2, 7].
void main() { List<int> numbers = [5, 3, 8, 1, 4, 6, 2, 7]; double mean(List<int> nums) { return nums.reduce((a, b) => a + b) / nums.length; } double median(List<int> nums) { nums.sort(); int n = nums.length; if (n % 2 == 1) { return nums[n ~/ 2].toDouble(); } else { return (nums[n ~/ 2 - 1] + nums[n ~/ 2]) / 2.0; } } print('Mean: ${mean(numbers)}'); print('Median: ${median(numbers)}'); }
نتيجة الكود:
Mean: 4.5 Median: 4.5
“اقرأ أيضاً: شرح استخدام ويدجت ShaderMask في فلاتر“
تمرين 8: حساب مجموع الأرقام الزوجية والفردية
وصف التمرين: قم بكتابة برنامج بلغة دارت لحساب مجموع الأرقام الزوجية والفردية في مجموعة الأرقام [12, 45, 33, 10, 5, 8, 19, 22].
void main() { List<int> numbers = [12, 45, 33, 10, 5, 8, 19, 22]; int sumEven(List<int> nums) { return nums.where((n) => n % 2 == 0).reduce((a, b) => a + b); } int sumOdd(List<int> nums) { return nums.where((n) => n % 2 != 0).reduce((a, b) => a + b); } print('Sum of even numbers: ${sumEven(numbers)}'); print('Sum of odd numbers: ${sumOdd(numbers)}'); }
نتيجة الكود:
Sum of even numbers: 52 Sum of odd numbers: 102
تمرين 9: حساب العدد المضاعف لأرقام قائمة معينة
وصف التمرين: قم بإنشاء قائمة جديدة حيث تكون جميع عناصرها ضعف عناصر القائمة الأصلية [2, 4, 6, 8, 10].
void main() { List<int> numbers = [2, 4, 6, 8, 10]; List<int> doubleNumbers(List<int> nums) { return nums.map((n) => n * 2).toList(); } print('Doubled numbers: ${doubleNumbers(numbers)}'); }
نتيجة الكود:
Doubled numbers: [4, 8, 12, 16, 20]
“اقرأ أيضاً: شرح الـ Stream في لغة دارت (Stream in Dart)“
تمرين 10: حساب التوافيق
وصف التمرين: قم بكتابة برنامج بلغة دارت لحساب عدد التوافيق الممكنة لاختيار 3 عناصر من مجموعة من 5 عناصر.
void main() { int factorial(int n) { return n == 0 ? 1 : n * factorial(n - 1); } int combinations(int n, int k) { return factorial(n) ~/ (factorial(k) * factorial(n - k)); } int n = 5; int k = 3; print('Number of combinations: ${combinations(n, k)}'); }
نتيجة الكود:
Number of combinations: 10
“اقرأ أيضاً: شرح استخدام ويدجت OutlinedButton في فلاتر“
في نهاية هذا المقال، قدمنا 10 تمارين محلولة باستخدام لغة دارت (Dart)، مع توفير حلول مفصلة وشرح للمفاهيم المستخدمة في كل تمرين. هذه التمارين تساعدك على تعزيز مهاراتك في لغة دارت وزيادة فهمك لها، مما يمكنك من بناء تطبيقات قوية وموثوقة. ننصحك بمواصلة التعلم والتطوير في لغة دارت من خلال المزيد من التمارين والمشاريع العملية. استمتع برحلتك في عالم تطوير البرمجيات باستخدام لغة دارت في عام 2024 وما بعده.