Menu
Coddy logo textTech

Ordenar una lista

Parte de la sección Lógica y Flujo del Journey de Dart de Coddy — lección 7 de 65.

Cuando necesites organizar los elementos de una lista, Dart proporciona el método sort() que ordena los elementos en orden ascendente. Este método es especialmente útil para poner nombres en orden alfabético o números de menor a mayor.

El método sort() modifica la lista original directamente en lugar de crear una nueva lista ordenada. Cuando llamas a sort() en una lista, reorganiza los elementos existentes en su lugar.

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]

El método sort() funciona automáticamente para tipos de datos comunes como cadenas y números. Para las cadenas, ordena alfabéticamente, mientras que para los números, ordena de menor a mayor. Esto lo convierte en una herramienta sencilla para organizar tus datos siempre que necesites elementos en un orden predecible.

challenge icon

Desafío

Fácil

Crea un programa que gestione el sistema de menú de un restaurante organizando los platos en diferentes categorías. Tu programa debe:

  1. Leer una entrada de cadena que represente el nombre del restaurante
  2. Leer múltiples entradas de cadena que representen nombres de platos (la entrada terminará cuando recibas una cadena vacía)
  3. Usar el método sort() para organizar los platos en orden alfabético
  4. Imprimir el menú organizado en el formato exacto que se muestra a continuación

Por ejemplo, si el nombre del restaurante es "Bella Vista" y los platos son "Pasta Carbonara", "Caesar Salad", "Grilled Salmon", "Apple Pie", tu programa debería mostrar:

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 el nombre del restaurante es "Quick Bites" y los platos son "Burger", "Pizza", "Sandwich", tu programa debería mostrar:

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

Si el nombre del restaurante es "Cafe Corner" y solo se proporciona un plato "Coffee", tu programa debería mostrar:

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

Tu programa debe usar el método sort() para organizar los platos alfabéticamente. Recuerda que sort() modifica la lista original en su lugar, por lo que necesitarás crear una copia de la lista original antes de ordenar si deseas mostrar tanto la versión original como la ordenada.

Hoja de referencia

El método sort() organiza los elementos de la lista en orden ascendente y modifica la lista original directamente:

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]

Para las cadenas, sort() organiza los elementos alfabéticamente. Para los números, los ordena de menor a mayor. Dado que sort() modifica la lista original en su lugar, crea una copia primero si necesitas preservar el orden original.

Pruébalo tú mismo

import 'dart:io';

void main() {
  // Leer el nombre del restaurante
  String? restaurantName = stdin.readLineSync();
  
  // Leer nombres de platos hasta encontrar una cadena vacía
  List<String> dishes = [];
  String? dish;
  while ((dish = stdin.readLineSync()) != null && dish!.isNotEmpty) {
    dishes.add(dish);
  }
  
  // TODO: Escribe tu código a continuación
  // Crear una copia de la lista original y ordenarla
  // Calcular el total de platos
  // Imprimir el formato de salida requerido
  
  // Mostrar los resultados
  // print("Restaurant: $restaurantName");
  // print("Original menu: $dishes");
  // print("Sorted menu: $sortedDishes");
  // print("Total dishes: $totalDishes");
  // print("Status: Menu organized alphabetically");
}
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Lógica y Flujo