Menu
Coddy logo textTech

Ordinare una lista

Fa parte della sezione Logica e flusso del percorso Dart di Coddy. Lezione 7 di 65.

Quando hai bisogno di organizzare gli elementi di una lista, Dart mette a disposizione il metodo sort(), che dispone gli elementi in ordine crescente. Questo metodo è particolarmente utile per mettere i nomi in ordine alfabetico o i numeri dal più piccolo al più grande.

Il metodo sort() modifica direttamente la lista originale invece di crearne una nuova ordinata. Quando chiami sort() su una lista, riordina gli elementi esistenti sul posto.

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]

Il metodo sort() funziona automaticamente per i tipi di dati comuni, come stringhe e numeri. Per le stringhe, ordina alfabeticamente, mentre per i numeri ordina dal più piccolo al più grande. Questo lo rende uno strumento semplice per organizzare i tuoi dati ogni volta che hai bisogno che gli elementi siano in un ordine prevedibile.

challenge icon

Sfida

Facile

Crea un programma che gestisca il menu di un ristorante organizzando i piatti in diverse categorie. Il tuo programma dovrebbe:

  1. Leggere un input di tipo stringa che rappresenta il nome del ristorante
  2. Leggere più input di tipo stringa che rappresentano i nomi dei piatti (l’input terminerà quando riceverai una stringa vuota)
  3. Usare il metodo sort() per disporre i piatti in ordine alfabetico
  4. Stampare il menu organizzato nel formato esatto mostrato qui sotto

Per esempio, se il nome del ristorante è "Bella Vista" e i piatti sono "Pasta Carbonara", "Caesar Salad", "Grilled Salmon", "Apple Pie", il tuo programma dovrebbe produrre:

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

Se il nome del ristorante è "Quick Bites" e i piatti sono "Burger", "Pizza", "Sandwich", il tuo programma dovrebbe produrre:

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

Se il nome del ristorante è "Cafe Corner" e viene fornito un solo piatto, "Coffee", il tuo programma dovrebbe produrre:

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

Il tuo programma deve usare il metodo sort() per disporre i piatti in ordine alfabetico. Ricorda che sort() modifica la lista originale direttamente, quindi dovrai creare una copia della lista originale prima di ordinarla se vuoi visualizzare sia la versione originale sia quella ordinata.

Provalo tu

import 'dart:io';

void main() {
  // Leggi il nome del ristorante
  String? restaurantName = stdin.readLineSync();
  
  // Leggi i nomi dei piatti fino a una stringa vuota
  List<String> dishes = [];
  String? dish;
  while ((dish = stdin.readLineSync()) != null && dish!.isNotEmpty) {
    dishes.add(dish);
  }
  
  // TODO: Scrivi il tuo codice qui sotto
  // Crea una copia della lista originale e ordinala
  // Calcola il numero totale di piatti
  // Stampa il formato di output richiesto
  
  // Mostra i risultati
  // print("Restaurant: $restaurantName");
  // print("Original menu: $dishes");
  // print("Sorted menu: $sortedDishes");
  // print("Total dishes: $totalDishes");
  // print("Status: Menu organized alphabetically");
}
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Logica e flusso

Esercitati da solo: Compilatore Dart online