Menu
Coddy logo textTech

Trier une liste

Fait partie de la section Logique & Flux du Journey Dart de Coddy — leçon 7 sur 65.

Lorsque vous avez besoin d'organiser les éléments d'une liste, Dart fournit la méthode sort() qui organise les éléments par ordre croissant. Cette méthode est particulièrement utile pour classer des noms par ordre alphabétique ou des nombres du plus petit au plus grand.

La méthode sort() modifie directement la liste d'origine plutôt que de créer une nouvelle liste triée. Lorsque vous appelez sort() sur une liste, elle réorganise les éléments existants sur place.

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]

La méthode sort() fonctionne automatiquement pour les types de données courants comme les chaînes de caractères et les nombres. Pour les chaînes de caractères, elle trie par ordre alphabétique, tandis que pour les nombres, elle trie du plus petit au plus grand. Cela en fait un outil simple pour organiser vos données chaque fois que vous avez besoin d'éléments dans un ordre prévisible.

challenge icon

Défi

Facile

Créez un programme qui gère le système de menu d'un restaurant en organisant les plats dans différentes catégories. Votre programme doit :

  1. Lire une chaîne de caractères en entrée représentant le nom du restaurant
  2. Lire plusieurs chaînes de caractères en entrée représentant les noms des plats (la saisie s'arrête lorsque vous recevez une chaîne vide)
  3. Utiliser la méthode sort() pour organiser les plats par ordre alphabétique
  4. Afficher le menu organisé exactement selon le format indiqué ci-dessous

Par exemple, si le nom du restaurant est "Bella Vista" et que les plats sont "Pasta Carbonara", "Caesar Salad", "Grilled Salmon", "Apple Pie", votre programme doit afficher :

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

Si le nom du restaurant est "Quick Bites" et que les plats sont "Burger", "Pizza", "Sandwich", votre programme doit afficher :

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

Si le nom du restaurant est "Cafe Corner" et qu'un seul plat "Coffee" est fourni, votre programme doit afficher :

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

Votre programme doit utiliser la méthode sort() pour organiser les plats par ordre alphabétique. N'oubliez pas que sort() modifie la liste originale sur place, vous devrez donc créer une copie de la liste originale avant de trier si vous souhaitez afficher à la fois la version originale et la version triée.

Aide-mémoire

La méthode sort() trie les éléments de la liste par ordre croissant et modifie directement la liste originale :

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]

Pour les chaînes de caractères, sort() trie les éléments par ordre alphabétique. Pour les nombres, elle trie du plus petit au plus grand. Comme sort() modifie la liste originale en place, créez d'abord une copie si vous avez besoin de préserver l'ordre original.

Essayez vous-même

import 'dart:io';

void main() {
  // Lire le nom du restaurant
  String? restaurantName = stdin.readLineSync();
  
  // Lire les noms des plats jusqu'à une chaîne vide
  List<String> dishes = [];
  String? dish;
  while ((dish = stdin.readLineSync()) != null && dish!.isNotEmpty) {
    dishes.add(dish);
  }
  
  // TODO: Écrivez votre code ci-dessous
  // Créer une copie de la liste originale et la trier
  // Calculer le nombre total de plats
  // Imprimer le format de sortie requis
  
  // Afficher les résultats
  // print("Restaurant: $restaurantName");
  // print("Original menu: $dishes");
  // print("Sorted menu: $sortedDishes");
  // print("Total dishes: $totalDishes");
  // print("Status: Menu organized alphabetically");
}
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Logique & Flux