Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

فرز القائمة

جزء من قسم Logic & Flow في رحلة Dart على Coddy — الدرس 7 من 65.

عندما تحتاج إلى تنظيم العناصر في قائمة، توفر Dart الـ sort() التي ترتب العناصر بترتيب تصاعدي. هذه الطريقة مفيدة بشكل خاص لترتيب الأسماء أبجديًا أو الأرقام من الأصغر إلى الأكبر.

تقوم طريقة sort() بتعديل القائمة الأصلية مباشرة بدلاً من إنشاء قائمة مرتبة جديدة. عندما تستدعي sort() على قائمة، فإنها تعيد ترتيب العناصر الموجودة في مكانها.

List<String> names = ['Charlie', 'Alice', 'Bob'];
names.sort();
print(names);  // ['Alice', 'Bob', 'Charlie']

List<int> scores = [85, 92, 78, 96];
scores.sort();
print(scores);  // [78, 85, 92, 96]

تعمل طريقة sort() تلقائياً مع أنواع البيانات الشائعة مثل السلاسل النصية والأرقام. بالنسبة للسلاسل النصية، فإنها ترتب أبجدياً، بينما بالنسبة للأرقام، فإنها ترتب من الأصغر إلى الأكبر. وهذا يجعلها أداة مباشرة لتنظيم بياناتك كلما احتجت إلى العناصر بترتيب متوقع.

challenge icon

التحدي

سهل

قم بإنشاء برنامج يدير نظام قائمة مطعم من خلال تنظيم الأطباق في فئات مختلفة. يجب على برنامجك القيام بما يلي:

  1. قراءة مدخل نصي (string) يمثل اسم المطعم
  2. قراءة مدخلات نصية متعددة تمثل أسماء الأطباق (ينتهي الإدخال عندما تتلقى سلسلة فارغة)
  3. استخدام طريقة sort() لترتيب الأطباق ترتيباً أبجدياً
  4. طباعة القائمة المنظمة بالتنسيق الدقيق الموضح أدناه

على سبيل المثال، إذا كان اسم المطعم هو "Bella Vista" والأطباق هي "Pasta Carbonara"، و "Caesar Salad"، و "Grilled Salmon"، و "Apple Pie"، يجب أن يخرج برنامجك ما يلي:

Restaurant: Bella Vista
Original menu: [Pasta Carbonara, Caesar Salad, Grilled Salmon, Apple Pie]
Sorted menu: [Apple Pie, Caesar Salad, Grilled Salmon, Pasta Carbonara]
Total dishes: 4
Status: Menu organized alphabetically

إذا كان اسم المطعم هو "Quick Bites" والأطباق هي "Burger"، و "Pizza"، و "Sandwich"، يجب أن يخرج برنامجك ما يلي:

Restaurant: Quick Bites
Original menu: [Burger, Pizza, Sandwich]
Sorted menu: [Burger, Pizza, Sandwich]
Total dishes: 3
Status: Menu organized alphabetically

إذا كان اسم المطعم هو "Cafe Corner" وتم تقديم طبق واحد فقط "Coffee"، يجب أن يخرج برنامجك ما يلي:

Restaurant: Cafe Corner
Original menu: [Coffee]
Sorted menu: [Coffee]
Total dishes: 1
Status: Menu organized alphabetically

يجب أن يستخدم برنامجك طريقة sort() لترتيب الأطباق أبجدياً. تذكر أن sort() تعدل القائمة الأصلية في مكانها، لذا ستحتاج إلى إنشاء نسخة من القائمة الأصلية قبل الفرز إذا كنت ترغب في عرض كل من النسخة الأصلية والنسخة المرتبة.

ورقة مرجعية

تقوم الطريقة sort() بترتيب عناصر القائمة بترتيب تصاعدي وتعديل القائمة الأصلية مباشرة:

List<String> names = ['Charlie', 'Alice', 'Bob'];
names.sort();
print(names);  // ['Alice', 'Bob', 'Charlie']

List<int> scores = [85, 92, 78, 96];
scores.sort();
print(scores);  // [78, 85, 92, 96]

بالنسبة للسلاسل النصية، تقوم sort() بترتيب العناصر أبجديًا. وبالنسبة للأرقام، فإنها ترتب من الأصغر إلى الأكبر. وبما أن sort() تعدل القائمة الأصلية في مكانها، فقم بإنشاء نسخة أولاً إذا كنت بحاجة إلى الحفاظ على الترتيب الأصلي.

جرّب بنفسك

import 'dart:io';

void main() {
  // قراءة اسم المطعم
  String? restaurantName = stdin.readLineSync();
  
  // قراءة أسماء الأطباق حتى يتم إدخال سلسلة فارغة
  List<String> dishes = [];
  String? dish;
  while ((dish = stdin.readLineSync()) != null && dish!.isNotEmpty) {
    dishes.add(dish);
  }
  
  // TODO: اكتب الكود الخاص بك أدناه
  // إنشاء نسخة من القائمة الأصلية وفرزها
  // حساب إجمالي عدد الأطباق
  // طباعة تنسيق المخرجات المطلوب
  
  // إخراج النتائج
  // print("Restaurant: $restaurantName");
  // print("Original menu: $dishes");
  // print("Sorted menu: $sortedDishes");
  // print("Total dishes: $totalDishes");
  // print("Status: Menu organized alphabetically");
}
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس Logic & Flow