CSE 210: Programação com Classes

Programação em C# - Exercício 4: Listas e Genéricos

Visão Geral

Esta atividade ajudará você a aprender a trabalhar com Listas e Genéricos em C#.

Preparação

Coleções

As principais bibliotecas C# fornecem todas as coleções e estruturas de dados padrão que você provavelmente precisará em seus programas, incluindo listas, conjuntos, dicionários e assim por diante. Este artigo se concentrará em listas, mas você pode procurar informações facilmente para qualquer outra estrutura de dados que precisar.

Listas

Como você sabe, uma grande diferença entre C# e Python é que você deve declarar seus tipos de variáveis em C#. Embora a princípio isso possa parecer um fardo em C#, você logo descobrirá que isso ajuda a evitar muitos erros em tempo de execução.

De forma semelhante, quando você declara uma nova variável do tipo lista em C#, você não apenas declara que ela é uma List, mas também deve declarar o tipo de dado que pode ser colocado na lista. Dessa forma, se você criar uma lista de usuários, evitará adicionar acidentalmente um pedido ou uma variável de produto a essa lista.

Para criar uma nova lista de inteiros, especifique int dentro de parênteses angulares <> logo após o nome da estrutura de dados: List<int> e se você quiser ter uma lista de strings, você usaria: List<string> como mostrado abaixo.

Tipos de Dados Genéricos

Ao invés de implementar código separado para a estrutura de dados de cada tipo de dado possível, os desenvolvedores da biblioteca List do C# utilizam um conceito chamado 'Genéricos' (Generics).

Com genéricos, a biblioteca é escrita genericamente, e então o tipo pode ser fornecido para preencher o modelo. Na documentação, você frequentemente verá T sendo usado como valor de modelo a ser preenchido posteriormente.


List<int> numeros;
List<string> palavras;

O código acima declara uma variável para armazenar a lista, mas antes de poder usá-la, você precisa criar uma nova utilizando a palavra-chave new.


List<int> numeros;
numeros = new List<int>();

Isso normalmente é feito na mesma linha:


List<int> numeros = new List<int>();
List<string> palavras = new List<string>();

Observe os parênteses extras () no final, que usamos sempre que criamos um novo objeto.

Mais uma coisa importante que você precisa saber: Qualquer arquivo que use listas (ou qualquer outra coleção padrão) deve fazer referência à biblioteca no início do arquivo. Isso é tão comum que às vezes suas configurações para C# podem ser especificadas de forma que você não precise incluir isso manualmente. Mas é importante saber, caso você tenha problemas.


using System.Collections.Generic;
O que é "new" e por que precisamos disso?

Acontece que List é uma classe ou tipo de dado personalizado e estamos criando um novo objeto ou instância dessa classe. Na verdade, esse é o foco principal deste curso e, a partir da semana que vem, você aprenderá a criar suas próprias classes personalizadas.

Com isso em mente, você aprenderá muito mais sobre esse assunto nas próximas semanas, mas, por enquanto, lembre-se de incluir new antes de começar a usar uma lista.

Adicionando Itens a uma Lista

Para adicionar itens à lista, use o método .Add():

Python


palavras = []

palavras.append("telefone")
palavras.append("teclado")
palavras.append("mouse")

C#


using System.Collections.Generic;

...

List<string> palavras = new List<string>();

palavras.Add("telefone");
palavras.Add("teclado");
palavras.Add("mouse");
Obtendo o tamanho da lista

Você pode obter o tamanho da lista com a propriedade Count.

Python


print(len(palavras))

C#


Console.WriteLine(palavras.Count);

Observe que você não inclui parênteses () depois de Count porque é uma propriedade, não uma função.

Percorrendo uma Lista

A maneira mais fácil (e segura) de percorrer uma lista em C# é usar o loop foreach:

Python


for palavra in palavras:
    print(palavra)

C#


foreach (string palavra in palavras)
{
    Console.WriteLine(palavra);
}

Você também pode acessar os itens pelo índice:

Python


for i in range(len(palavras)):
    print(palavras[i])

C#


for (int i = 0; i < palavras.Count; i++)
{
    Console.WriteLine(palavras[i]);
}

Outras Operações

Há muitas outras coisas que você pode fazer com listas. Você pode visualizar a documentação oficial ou simplesmente começar a digitar no VS Code e ver as opções que o editor Intellisense exibe para você.

Além disso, não se esqueça de que você pode encontrar facilmente a sintaxe com uma rápida pesquisa na Web!

Instruções da Tarefa

Para esta tarefa, você concluirá outra tarefa que fez anteriormente em CSE 110, mas, neste caso, escreva o programa em C#:

Especificação do Programa

Aqui estão as instruções que você viu anteriormente em CSE 110 que usaremos como especificação do nosso programa:

Tarefa

Peça ao usuário uma série de números e adicione cada um deles a uma lista. Pare quando o usuário inserir 0.

Depois de criar uma lista, o seu programa deve fazer o seguinte:

Requisitos Básicos

Desenvolva estes requisitos básicos passo a passo para concluir o programa. Por favor, não pule etapas nem faça tudo de uma vez, porque outras pessoas do seu grupo podem precisar desenvolver o programa mais devagar.

  1. Calcular a soma, ou total, dos números da lista.

  2. Calcular a média dos números da lista.

  3. Encontrar o número máximo ou maior na lista.

Veja abaixo o resultado esperado:


  Insira uma lista de números e digite 0 quando terminar.
  Insira o número: 18
  Insira o número: 36
  Insira o número: 2
  Insira o número: 48
  Insira o número: 6
  Insira o número: 12
  Insira o número: 9
  Insira o número: 0
  A soma é: 131
  A média é: 18.714285714285715
  O maior número é: 48
  
Desafio Adicional
  1. Peça ao usuário para inserir números positivos e negativos, em seguida, encontre o menor número positivo (o número positivo mais próximo de zero).

  2. Ordene os números na lista e exiba a nova lista reordenada. Dica: Existem bibliotecas C# que podem ajudar você com isso. Tente pesquisá-las na Internet.

Veja abaixo o resultado esperado quando os desafios adicionais forem concluídos:


  Insira uma lista de números e digite 0 quando terminar.
  Insira o número: 3
  Insira o número: 5
  Insira o número: 7
  Insira o número: 3
  Insira o número: 2
  Insira o número: -1
  Insira o número: -4
  Insira o número: -8
  Insira o número: 0
  A soma é: 7
  A média é: 0.875
  O maior número é: 7
  O menor número positivo é: 2
  A lista reordenada é:
  -8
  -4
  -1
  2
  3
  3
  5
  7
  

Crie e Teste o Programa

  1. Crie e teste o programa conforme descrito acima.
  2. Você deve concluir os 3 Requisitos Básicos.
  3. Os desafios adicionais são opcionais.
  4. Certifique-se de usar o mesmo modelo de projeto que você usou para as atividades anteriores. No entanto, desta vez, você deve adicionar seu código ao arquivo Program.cs no projeto Exercicio4.

Exemplo de Solução

Quando terminar seu programa, veja o exemplo de solução para compará-la com a sua:

Obtendo Ajuda

Se você tiver dúvidas, por favor, pergunte no Microsoft Teams.

Enviando

Retorne ao Canvas e responda ao questionário correspondente.