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

عكس القائمة

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

أحيانًا تحتاج إلى عرض عناصر القائمة بترتيب عكسي. توفر Dart خاصية .reversed التي تنشئ عرضًا معكوسًا لقائمتك دون تغيير القائمة الأصلية.

تعيد خاصية .reversed كائنًا قابلًا للتكرار (iterable) يعرض عناصر القائمة بترتيب عكسي. وهذا يعني أن العنصر الأخير يظهر أولاً، والعنصر قبل الأخير يظهر ثانياً، وهكذا.

List<int> numbers = [1, 2, 3, 4, 5];

var reversedNumbers = numbers.reversed;
print(reversedNumbers);  // (5, 4, 3, 2, 1)

// القائمة الأصلية تبقى دون تغيير
print(numbers);  // [1, 2, 3, 4, 5]

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

challenge icon

التحدي

سهل

قم بإنشاء برنامج يقوم بتحليل قائمة قراءة من خلال عرض الكتب بترتيبها الأصلي والترتيب العكسي. يجب على برنامجك القيام بما يلي:

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

على سبيل المثال، إذا كان عنوان قائمة القراءة هو "Summer Reading" والكتب هي "1984"، و "To Kill a Mockingbird"، و "The Great Gatsby"، فيجب أن يكون مخرج برنامجك:

Reading List: Summer Reading
Books in original order: (1984, To Kill a Mockingbird, The Great Gatsby)
Books in reversed order: (The Great Gatsby, To Kill a Mockingbird, 1984)
Total books: 3

إذا كان عنوان قائمة القراءة هو "Quick Reads" وتم توفير كتاب واحد فقط "Animal Farm"، فيجب أن يكون مخرج برنامجك:

Reading List: Quick Reads
Books in original order: (Animal Farm)
Books in reversed order: (Animal Farm)
Total books: 1

يجب أن يستخدم برنامجك خاصية .reversed لعرض الكتب بترتيب عكسي. تذكر أن .reversed تعيد كائناً قابلاً للتكرار (iterable)، لذا عند طباعته، سيظهر بين أقواس دائرية بدلاً من الأقواس المربعة.

ورقة مرجعية

استخدم خاصية .reversed لعرض عناصر القائمة بترتيب عكسي دون تعديل القائمة الأصلية:

List<int> numbers = [1, 2, 3, 4, 5];

var reversedNumbers = numbers.reversed;
print(reversedNumbers);  // (5, 4, 3, 2, 1)

// القائمة الأصلية تظل دون تغيير
print(numbers);  // [1, 2, 3, 4, 5]

تعيد خاصية .reversed كائناً قابلاً للتكرار (iterable)، وليس قائمة. لتحويله مرة أخرى إلى قائمة، استخدم .toList().

جرّب بنفسك

import 'dart:io';

void main() {
  // قراءة عنوان قائمة القراءة
  String? title = stdin.readLineSync();
  
  // قراءة عناوين الكتب حتى يتم إدخال سلسلة فارغة
  List<String> books = [];
  String? book;
  while ((book = stdin.readLineSync()) != null && book!.isNotEmpty) {
    books.add(book);
  }
  
  // TODO: اكتب كودك هنا
  // استخدم خاصية .reversed لإنشاء عرض معكوس لقائمة الكتب
  // اطبع المخرجات بالتنسيق المطلوب
  
}
quiz iconاختبر نفسك

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

جميع دروس Logic & Flow