Menu
Coddy logo textTech

Ordenando uma Lista

Parte da seção Lógica & Fluxo do Journey de Dart da Coddy — lição 7 de 65.

Quando você precisa organizar os elementos em uma lista, o Dart fornece o método sort(), que organiza os elementos em ordem crescente. Este método é particularmente útil para colocar nomes em ordem alfabética ou números do menor para o maior.

O método sort() modifica a lista original diretamente, em vez de criar uma nova lista ordenada. Quando você chama sort() em uma lista, ele reorganiza os elementos existentes no local.

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]

O método sort() funciona automaticamente para tipos de dados comuns, como strings e números. Para strings, ele ordena alfabeticamente, enquanto para números, ordena do menor para o maior. Isso o torna uma ferramenta direta para organizar seus dados sempre que você precisar de elementos em uma ordem previsível.

challenge icon

Desafio

Fácil

Crie um programa que gerencie um sistema de menu de restaurante organizando os pratos em diferentes categorias. Seu programa deve:

  1. Ler uma entrada de string representando o nome do restaurante
  2. Ler múltiplas entradas de string representando nomes de pratos (a entrada terminará quando você receber uma string vazia)
  3. Usar o método sort() para organizar os pratos em ordem alfabética
  4. Imprimir o menu organizado no formato exato mostrado abaixo

Por exemplo, se o nome do restaurante for "Bella Vista" e os pratos forem "Pasta Carbonara", "Caesar Salad", "Grilled Salmon", "Apple Pie", seu programa deve exibir:

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 o nome do restaurante for "Quick Bites" e os pratos forem "Burger", "Pizza", "Sandwich", seu programa deve exibir:

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

Se o nome do restaurante for "Cafe Corner" e apenas um prato "Coffee" for fornecido, seu programa deve exibir:

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

Seu programa deve usar o método sort() para organizar os pratos em ordem alfabética. Lembre-se de que o sort() modifica a lista original no local, então você precisará criar uma cópia da lista original antes de ordenar se quiser exibir tanto a versão original quanto a ordenada.

Folha de consulta

O método sort() organiza os elementos da lista em ordem crescente e modifica a lista original diretamente:

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 strings, o sort() organiza os elementos em ordem alfabética. Para números, ele ordena do menor para o maior. Como o sort() modifica a lista original no local (in-place), crie uma cópia primeiro se precisar preservar a ordem original.

Experimente você mesmo

import 'dart:io';

void main() {
  // Ler o nome do restaurante
  String? restaurantName = stdin.readLineSync();
  
  // Ler os nomes dos pratos até encontrar uma string vazia
  List<String> dishes = [];
  String? dish;
  while ((dish = stdin.readLineSync()) != null && dish!.isNotEmpty) {
    dishes.add(dish);
  }
  
  // TODO: Escreva seu código abaixo
  // Criar uma cópia da lista original e ordená-la
  // Calcular o total de pratos
  // Imprimir o formato de saída exigido
  
  // Exibir os resultados
  // print("Restaurant: $restaurantName");
  // print("Original menu: $dishes");
  // print("Sorted menu: $sortedDishes");
  // print("Total dishes: $totalDishes");
  // print("Status: Menu organized alphabetically");
}
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Lógica & Fluxo