Exercício – Introdução a matrizes

Concluído

As matrizes podem ser usadas para armazenar vários valores do mesmo tipo em uma só variável. Os valores armazenados em uma matriz geralmente estão relacionados entre si. Por exemplo, uma lista de nomes de alunos pode ser armazenada em uma matriz de cadeia de caracteres chamada students.

Seu trabalho no departamento de segurança se concentra em encontrar um padrão para os pedidos fraudulentos. Você deseja que seu código revise os pedidos de clientes anteriores e identifique marcadores associados a pedidos fraudulentos. Sua empresa espera que os marcadores possam ser usados no futuro para identificar possíveis ordens de compra fraudulentas antes de serem processadas. Como você nem sempre sabe com antecedência quantos pedidos será preciso analisar, não é possível criar variáveis individuais para conter cada ID de pedido. Como você pode criar uma estrutura de dados para conter diversos valores relacionados?

Neste exercício, você usa matrizes para armazenar e analisar uma sequência de IDs de pedido.

O que é uma matriz?

Uma matriz é uma sequência de elementos de dados individuais que pode ser acessada por meio de um único nome de variável. Use um índice numérico baseado em zero para acessar cada elemento de uma matriz. Como você pode ver, as matrizes permitem coletar dados semelhantes, com uma finalidade ou características em comum, na mesma estrutura de dados para facilitar o processamento.

Como declarar matrizes e acessar os elementos delas

Uma matriz é um tipo especial de variável que pode conter vários valores do mesmo tipo de dados. A sintaxe da declaração é ligeiramente diferente porque é necessário especificar o tipo de dados e o tamanho da matriz.

Preparar o ambiente de codificação

Este módulo inclui atividades que guiarão você através do processo de criação e execução de um código de exemplo. Incentivamos você a concluir essas atividades usando o Visual Studio Code como ambiente de desenvolvimento. O uso do Visual Studio Code para essas atividades introduz você ao trabalho de elaboração e execução de códigos em um ambiente de desenvolvedor que é usado por profissionais em todo o mundo.

  1. Abra o Visual Studio Code.

    Você pode usar o menu Iniciar do Windows (ou recurso equivalente em outro sistema operacional) para abrir o Visual Studio Code.

  2. No Visual Studio Code, no menu Arquivo, selecione Abrir Pasta.

  3. Na caixa de diálogo Abrir Pasta, navegue até a pasta Área de Trabalho do Windows.

    Se você mantém os projetos de código em um local de pasta diferente, use esse local. Neste treinamento, o importante é ter um local fácil de localizar e lembrar.

  4. Na caixa de diálogo Abrir Pasta, selecione Selecionar Pasta.

    Se aparecer uma caixa de diálogo de segurança perguntando se confia nos autores, selecione Sim.

  5. No Visual Studio Code, no menu Terminal, selecione Novo Terminal.

    Observe que o prompt de comando no painel Terminal exibe o caminho da pasta atual. Por exemplo:

    C:\Users\someuser\Desktop>
    

    Observação

    Se você estiver trabalhando no próprio computador em vez de em uma área restrita ou em um ambiente hospedado e tiver concluído outros módulos do Microsoft Learn desta série C#, talvez já tenha criado uma pasta de projeto para exemplos de código. Se esse for o caso, você poderá ignorar a próxima etapa, que será usada para criar o aplicativo de console na pasta TestProject.

  6. No prompt de comando Terminal, para criar o novo aplicativo de console na pasta especificada, digite dotnet new console -o ./CsharpProjects/TestProject e pressione Enter.

    Este comando da CLI do .NET usa um modelo de programa .NET para criar o novo projeto de aplicativo de console C# no local da pasta especificada. O comando cria as pastas CsharpProjects e TestProject para você e usa TestProject como o nome do seu arquivo .csproj.

  7. No painel EXPLORER, expanda a pasta CsharpProjects.

    Você deve ver a pasta TestProject e dois arquivos: o arquivo de programa do C#, denominado Program.cs, e o arquivo de projeto do C#, denominado TestProject.csproj.

  8. No painel EXPLORER, para exibir o arquivo de código no painel Editor, selecione Program.cs.

  9. Exclua as linhas de código existentes.

    Você pode usar este projeto de console do C# para criar, compilar e executar exemplos de código durante este módulo.

  10. Feche o painel do terminal.

Declarar uma nova matriz

  1. Para declarar uma nova matriz de cadeias de caracteres que possa conter três elementos, insira o seguinte código:

    string[] fraudulentOrderIDs = new string[3];
    
  2. Reserve um minuto para analisar seu código.

    O operador new cria uma instância de uma matriz na memória do computador que pode conter três valores de cadeia de caracteres. Para saber mais sobre a palavra-chave new, confira o módulo "Chamar métodos da Biblioteca de Classes .NET usando C#".

    Observe que o primeiro conjunto de colchetes [] simplesmente indica ao compilador que a variável de nome fraudulentOrderIDs é uma matriz. Já o segundo conjunto de colchetes [3] indica o número de elementos que a matriz conterá.

    Observação

    Esse exemplo demonstra como declarar uma matriz de cadeias de caracteres. No entanto, é possível criar matrizes de qualquer tipos de dados – inclusive os tipos primitivos, como int e bool, e tipos mais complexos como classes. Este exemplo usa a simplicidade das cadeias de caracteres para minimizar o número de novas ideias que você precisa entender para começar.

Atribuir valores aos elementos de uma matriz

A esta altura, você já declarou uma matriz de cadeias de caracteres, mas todos os elementos dela estão vazios. Para acessar um elemento de uma matriz, use um índice numérico baseado em zero dentro de colchetes. Você pode atribuir valores aos elementos da matriz usando =, como se fosse uma variável normal.

  1. Para atribuir valores de IDs de pedido aos elementos da sua matriz fraudulentOrderIDs, atualize o código da seguinte maneira:

    string[] fraudulentOrderIDs = new string[3];
    
    fraudulentOrderIDs[0] = "A123";
    fraudulentOrderIDs[1] = "B456";
    fraudulentOrderIDs[2] = "C789";
    
  2. Reserve um minuto para analisar seu código.

    Observe que você usa o nome da matriz para acessar os elementos dela. Cada elemento é acessado individualmente, especificando dentro dos colchetes o número do índice, que começa no zero.

    Como sua matriz é declarada como uma matriz de cadeia de caracteres, os valores atribuídos aos elementos da matriz devem ser cadeias de caracteres. Nesse cenário, você está atribuindo IDs de pedido aos elementos da matriz.

Tentar usar um índice fora dos limites da matriz

Talvez não pareça intuitivo, a princípio, mas é importante lembrar que você declara o número de elementos da matriz. No entanto, você acessa os elementos da matriz começando no zero. Portanto, para acessar o segundo item da matriz, você usa o índice 1.

É muito comum que iniciantes se esqueçam que o índice das matrizes começa no zero e acabar tentando acessar um elemento que não existe. Se você cometer esse erro, será gerada uma exceção de runtime informando que você tentou acessar um elemento que está fora dos limites da matriz.

Para "interromper" intencionalmente seu aplicativo, tente acessar o quarto elemento da matriz usando o valor de índice 3.

  1. Na parte inferior do seu arquivo de código, insira a seguinte linha:

    fraudulentOrderIDs[3] = "D000";
    
  2. Verifique se o seu código corresponde ao seguinte exemplo:

    string[] fraudulentOrderIDs = new string[3];
    
    fraudulentOrderIDs[0] = "A123";
    fraudulentOrderIDs[1] = "B456";
    fraudulentOrderIDs[2] = "C789";
    fraudulentOrderIDs[3] = "D000";
    
  3. No menu Arquivo do Visual Studio Code, selecione Salvar.

  4. No painel EXPLORER, para abrir o Terminal no local da pasta TestProject, clique com o botão direito do mouse em TestProject e selecione Abrir no Terminal Integrado.

    Um painel do Terminal deve ser aberto e deve incluir um prompt de comando mostrando que o Terminal está aberto no local da pasta TestProject.

  5. No prompt de comando do Terminal, para compilar seu código, digite dotnet build e pressione Enter.

    Você deverá ver a seguinte mensagem:

    Build succeeded.        
        0 Warning(s)        
        0 Error(s)
    
  6. No prompt de comando do Terminal, para executar seu código, digite dotnet run e pressione Enter.

    Ao executar o aplicativo, você recebe a seguinte mensagem de erro de runtime:

    Unhandled exception. System.IndexOutOfRangeException: Index was outside the bounds of the array.     
       at Program.<Main>$(String[] args) in C:\Users\someuser\Desktop\CsharpProjects\TestProject\Program.cs:line 6
    

    Observe as seguintes partes do erro:

    • Mensagem de erro: System.IndexOutOfRangeException: Index was outside the bounds of the array.
    • Local do erro: Program.cs:line 6
  7. Comente a linha que gerou o erro de runtime.

    // fraudulentOrderIDs[3] = "D000";
    

Você viu como atribuir um valor a um elemento da matriz. Agora, veja como acessar um valor que está sendo armazenado em um elemento da matriz.

Recuperar valores dos elementos de uma matriz

Acessar o valor de um elemento da matriz funciona da mesma forma que atribuir um valor a um elemento da matriz. Basta especificar o índice do elemento cujo valor você deseja recuperar.

  1. Para escrever na saída o valor de cada ID de Pedido fraudulento, atualize seu código da seguinte maneira:

    string[] fraudulentOrderIDs = new string[3];
    
    fraudulentOrderIDs[0] = "A123";
    fraudulentOrderIDs[1] = "B456";
    fraudulentOrderIDs[2] = "C789";
    // fraudulentOrderIDs[3] = "D000";
    
    Console.WriteLine($"First: {fraudulentOrderIDs[0]}");
    Console.WriteLine($"Second: {fraudulentOrderIDs[1]}");
    Console.WriteLine($"Third: {fraudulentOrderIDs[2]}");
    
  2. No menu Arquivo do Visual Studio Code, selecione Salvar.

  3. No painel EXPLORER, para abrir o Terminal no local da pasta TestProject, clique com o botão direito do mouse em TestProject e selecione Abrir no Terminal Integrado.

  4. No prompt de comando do Terminal, digite dotnet run e pressione Enter.

    Você deverá ver a seguinte mensagem:

    First: A123
    Second: B456
    Third: C789
    

Reatribuir o valor de uma matriz

Os elementos de uma matriz são como qualquer outra variável. Você pode atribuir, recuperar e reatribuir valores a cada elemento da matriz.

  1. Ao final do seu arquivo de código, para reatribuir e imprimir na saída o valor do primeiro elemento da matriz, insira o seguinte código:

    fraudulentOrderIDs[0] = "F000";
    
    Console.WriteLine($"Reassign First: {fraudulentOrderIDs[0]}");
    
  2. Verifique se o seu código corresponde ao seguinte exemplo:

    string[] fraudulentOrderIDs = new string[3];
    
    fraudulentOrderIDs[0] = "A123";
    fraudulentOrderIDs[1] = "B456";
    fraudulentOrderIDs[2] = "C789";
    // fraudulentOrderIDs[3] = "D000";
    
    Console.WriteLine($"First: {fraudulentOrderIDs[0]}");
    Console.WriteLine($"Second: {fraudulentOrderIDs[1]}");
    Console.WriteLine($"Third: {fraudulentOrderIDs[2]}");
    
    fraudulentOrderIDs[0] = "F000";
    
    Console.WriteLine($"Reassign First: {fraudulentOrderIDs[0]}");
    
  3. No menu Arquivo do Visual Studio Code, selecione Salvar.

  4. No painel EXPLORER, para abrir o Terminal no local da pasta TestProject, clique com o botão direito do mouse em TestProject e selecione Abrir no Terminal Integrado.

  5. No prompt de comando do Terminal, digite dotnet run e pressione Enter.

    Você deverá ver a seguinte mensagem:

    First: A123
    Second: B456
    Third: C789
    Reassign First: F000
    

Inicializar uma matriz

Você pode inicializar uma matriz durante a declaração, assim como faria com uma variável comum. No entanto, para inicializar os elementos da matriz, é preciso usar uma sintaxe especial com chaves.

  1. Comente as linhas em que você declara a variável fraudulentOrderIDs.

    Você pode usar um comentário de várias linhas (/* ... */) para comentar a declaração de fraudulentOrderIDs e as linhas usadas para atribuir valores aos elementos da matriz.

  2. Para declarar a matriz e inicializar os valores dela em uma só instrução, insira o seguinte código:

    string[] fraudulentOrderIDs = { "A123", "B456", "C789" };
    
  3. Verifique se o seu código corresponde ao seguinte exemplo:

    /*
    string[] fraudulentOrderIDs = new string[3];
    
    fraudulentOrderIDs[0] = "A123";
    fraudulentOrderIDs[1] = "B456";
    fraudulentOrderIDs[2] = "C789";
    // fraudulentOrderIDs[3] = "D000";
    */
    
    string[] fraudulentOrderIDs = { "A123", "B456", "C789" };
    
    Console.WriteLine($"First: {fraudulentOrderIDs[0]}");
    Console.WriteLine($"Second: {fraudulentOrderIDs[1]}");
    Console.WriteLine($"Third: {fraudulentOrderIDs[2]}");
    
    fraudulentOrderIDs[0] = "F000";
    
    Console.WriteLine($"Reassign First: {fraudulentOrderIDs[0]}");
    
  4. Reserve um minuto para analisar a instrução de declaração.

    Observe que essa sintaxe é compacta e fácil de ler. Ao executar o aplicativo, não deve haver alterações na saída.

  5. No menu Arquivo do Visual Studio Code, selecione Salvar.

  6. No painel EXPLORER, para abrir o Terminal no local da pasta TestProject, clique com o botão direito do mouse em TestProject e selecione Abrir no Terminal Integrado.

  7. No prompt de comando do Terminal, digite dotnet run e pressione Enter.

    Você deve ver a mesma mensagem que antes:

    First: A123
    Second: B456
    Third: C789
    Reassign First: F000
    

Usar a propriedade Length da matriz

Dependendo de como a matriz é criada, talvez você não saiba com antecedência quantos elementos ela contém. Para determinar o tamanho de uma matriz, você pode usar a propriedade Length.

Observação

A propriedade Length de uma matriz não começa no zero.

  1. Ao final do seu arquivo de código, para relatar o número de pedidos fraudulentos, insira o seguinte código:

    Console.WriteLine($"There are {fraudulentOrderIDs.Length} fraudulent orders to process.");
    

    Esse código usa a propriedade Length da matriz, um inteiro, para retornar o número de elementos da sua matriz fraudulentOrderIDs.

  2. Verifique se o seu código corresponde ao seguinte exemplo:

    /*
    string[] fraudulentOrderIDs = new string[3];
    
    fraudulentOrderIDs[0] = "A123";
    fraudulentOrderIDs[1] = "B456";
    fraudulentOrderIDs[2] = "C789";
    // fraudulentOrderIDs[3] = "D000";
    */
    
    string[] fraudulentOrderIDs = { "A123", "B456", "C789" };
    
    Console.WriteLine($"First: {fraudulentOrderIDs[0]}");
    Console.WriteLine($"Second: {fraudulentOrderIDs[1]}");
    Console.WriteLine($"Third: {fraudulentOrderIDs[2]}");
    
    fraudulentOrderIDs[0] = "F000";
    
    Console.WriteLine($"Reassign First: {fraudulentOrderIDs[0]}");
    
    Console.WriteLine($"There are {fraudulentOrderIDs.Length} fraudulent orders to process.");
    
  3. Salve as alterações no arquivo Program.cs e execute o aplicativo.

    Você deve ver o seguinte resultado:

    First: A123
    Second: B456
    Third: C789
    Reassign First: F000
    There are 3 fraudulent orders to process.
    

Recapitulação

Aqui estão as coisas mais importantes a serem lembradas ao trabalhar com matrizes:

  • Uma matriz é uma variável especial que contém uma sequência de elementos de dados relacionados.
  • Você deve memorizar o formato básico de uma declaração de variável de matriz.
  • Acesse cada elemento de uma matriz para definir ou obter seus valores usando um índice baseado em zero dentro de colchetes.
  • Se você tentar acessar um índice fora dos limites da matriz, será gerada uma exceção de runtime.
  • A propriedade Length é uma maneira programática de determinar o número de elementos em uma matriz.

Verificar seu conhecimento

1.

O que é uma matriz?

2.

Qual das opções a seguir é um exemplo correto de criação e inicialização de uma matriz?