Exercício – Examinar o código inicial

Concluído

Nesta primeira etapa do processo de desenvolvimento, você revisa o código fornecido na pasta do projeto Starter.

Examinar o conteúdo do arquivo Program.cs

O arquivo Program.cs contém uma versão preliminar do aplicativo no qual você está trabalhando. O código inclui recursos para gerar e exibir os dados de exemplo para o aplicativo e exibe uma lista de opções de menu que definem os principais recursos do aplicativo.

  1. Verifique se você tem a pasta "GuidedProject" (Guided-project-Work-with-variable-data-in-CSharp-main) aberta no Visual Studio Code.

    A unidade "Preparar" (a unidade anterior neste módulo) inclui uma seção De instalação que descreve o processo para baixar o ponto de partida inicial do projeto guiado e abrir a pasta Visual Studio Code. Se necessário, volte e siga as instruções de preparação.

  2. No modo de exibição "EXPLORER", expanda a pasta "Starter" e selecione "Program.cs".

    Quando você seleciona o arquivo Program.cs, o conteúdo do arquivo é aberto na área principal do Editor à direita do EXPLORER.

    Se o modo de exibição EXPLORER não estiver aberto, você poderá selecionar/abrir o modo de exibição EXPLORER na Barra de Atividades no lado esquerdo do Visual Studio Code. EXPLORER é o ícone mais alto na Barra de Atividades.

  3. Leve alguns minutos para examinar as declarações de variável iniciais na parte superior do arquivo Program.cs.

    // #1 the ourAnimals array will store the following: 
    string animalSpecies = "";
    string animalID = "";
    string animalAge = "";
    string animalPhysicalDescription = "";
    string animalPersonalityDescription = "";
    string animalNickname = "";
    
    // #2 variables that support data entry
    int maxPets = 8;
    string? readResult;
    string menuSelection = "";
    
    // #3 array used to store runtime data, there is no persisted data
    string[,] ourAnimals = new string[maxPets, 6];
    

    Primeiro, você verá um comentário (comentário nº 1) seguido de uma lista de variáveis. Essas variáveis, animalSpecies por meio animalNickname, são usadas para manter os valores das características do animal de estimação dentro de uma matriz de cadeia de caracteres multidimensional chamada ourAnimalse inicializadas para conter uma cadeia de caracteres de comprimento ""zero. A ourAnimals declaração de matriz está um pouco mais abaixo no código.

    O próximo grupo de variáveis (sob o comentário nº 2) é uma combinação de string e int variáveis usadas para ajudar a gerar dados amostra, ler a entrada do usuário e estabelecer critérios de saída para o loop principal do programa. Observe a linha string? readResult;de código. Você usa o caractere ? para transformar um tipo de variável normalmente não anulável (int, string, bool, ...) com suporte para o tipo que permite valor nulo.

    Observação

    Ao ler valores inseridos pelo usuário com o Console.ReadLine() método, é melhor habilitar uma cadeia de caracteres de tipo anulável usando string? para evitar que o compilador de código gere um aviso ao compilar o projeto.

    A variável final (em comentário nº 3) é a matriz de cadeia de caracteres bidimensional chamada ourAnimals. Você inicializou o número de linhas, definido por maxPets, como 8. O número de características que você está armazenando inicialmente é seis. As seis características correspondem ao número de variáveis de cadeia de caracteres que você examinou no código de exemplo, mas o número de características precisa ser expandido para adicionar um campo.suggestedDonation

  4. Role para baixo o arquivo Program.cs a fim de examinar o loop for que contém um constructo de seleção switch dentro do bloco de código dele.

    O exemplo de código é uma versão abreviada para economizar espaço.

    // #4 create sample data ourAnimals array entries
    for (int i = 0; i < maxPets; i++)
    {
        switch (i)
        {
            case 0:
                animalSpecies = "dog";
                animalID = "d1";
                animalAge = "2";
                animalPhysicalDescription = "medium sized cream colored female golden retriever weighing about 45 pounds. housebroken.";
                animalPersonalityDescription = "loves to have her belly rubbed and likes to chase her tail. gives lots of kisses.";
                animalNickname = "lola";
                break;
    
            case 1:
                animalSpecies = "dog";
                animalID = "d2";
                animalAge = "9";
                animalPhysicalDescription = "large reddish-brown male golden retriever weighing about 85 pounds. housebroken.";
                animalPersonalityDescription = "loves to have his ears rubbed when he greets you at the door, or at any time! loves to lean-in and give doggy hugs.";
                animalNickname = "gus";
                break;
    
            // case 2: deleted for brevity
            // case 3: deleted for brevity
    
            default:
                animalSpecies = "";
                animalID = "";
                animalAge = "";
                animalPhysicalDescription = "";
                animalPersonalityDescription = "";
                animalNickname = "";
                break;
        }
        ourAnimals[i, 0] = "ID #: " + animalID;
        ourAnimals[i, 1] = "Species: " + animalSpecies;
        ourAnimals[i, 2] = "Age: " + animalAge;
        ourAnimals[i, 3] = "Nickname: " + animalNickname;
        ourAnimals[i, 4] = "Physical description: " + animalPhysicalDescription;
        ourAnimals[i, 5] = "Personality: " + animalPersonalityDescription;
    }
    
  5. Observe que o for loop usa a maxPets variável para estabelecer um limite superior no número de iterações após o comentário nº 4.

  6. Observe também que o constructo switch ramifica seletivamente o código para que você possa definir diferentes características de animais de estimação para os animais do conjunto de dados de exemplo.

    Use uma switch instrução para definir valores diferentes para as quatro primeiras iterações do for loop. Após o processamento de dados de exemplo, todas as características serão cadeias de caracteres vazias (ou de comprimento zero).

    Os valores das variáveis de característica animal são atribuídos à matriz ourAnimals na parte inferior do for loop.

  7. Role até a parte inferior do arquivo de código no Visual Studio Code. Examine o código usado para exibir as opções de menu e capturar a entrada da seleção do usuário.

    Você deve observar o seguinte código:

    // #5 display the top-level menu options
    do
    {
        // NOTE: the Console.Clear method is throwing an exception in debug sessions
        Console.Clear();
    
        Console.WriteLine("Welcome to the Contoso PetFriends app. Your main menu options are:");
        Console.WriteLine(" 1. List all of our current pet information");
        Console.WriteLine(" 2. Display all dogs with a specified characteristic");
        Console.WriteLine();
        Console.WriteLine("Enter your selection number (or type Exit to exit the program)");
    
        readResult = Console.ReadLine();
        if (readResult != null)
        {
            menuSelection = readResult.ToLower();
        }
    
        // use switch-case to process the selected menu option
        switch (menuSelection)
        {
            case "1":
                // list all pet info
                for (int i = 0; i < maxPets; i++)
                {
                    if (ourAnimals[i, 0] != "ID #: ")
                    {
                        Console.WriteLine();
                        for (int j = 0; j < 6; j++)
                        {
                            Console.WriteLine(ourAnimals[i, j]);
                        }
                    }
                }
                Console.WriteLine("\n\rPress the Enter key to continue");
                readResult = Console.ReadLine();
                break;
    
            case "2":
                // Display all dogs with a specified characteristic");
                Console.WriteLine("\nUNDER CONSTRUCTION - please check back next month to see progress.");
                Console.WriteLine("Press the Enter key to continue.");
                readResult = Console.ReadLine();
                break;
    
            default:
                break;
        }
    
    } while (menuSelection != "exit");
    
  8. Reserve um minuto para analisar as duas instruções case.

    Há apenas duas opções de menu trabalhando com uma versão limitada do aplicativo. O aplicativo inicial fornece apenas as funcionalidades necessárias para executar e testar o protótipo de funcionalidades.

  9. Observe que a linha de código é readResult = Console.ReadLine(); seguida por uma verificação de um valor nulo.

    O código que utiliza o método Console.ReadLine() tem o valor definido como a string anulável readResult para evitar que o compilador gere um aviso ao compilar o projeto.

Verifique seu trabalho

  1. Teste o aplicativo de console de código inicial no build do prompt de comando TERMINAL e execute o código do seu projeto com um único comando inserindo: dotnet run.

    Observação

    O prompt terminal deve ser aberto na pasta inicial e o TERMINAL deve ser semelhante a ..\ArrayGuidedProject\starter>

    Quando o código é executado, dois itens de menu são exibidos.

    • Insira: 1, para testar a saída "Listar todas as informações atuais dos nossos animais de estimação"
    • Insira "2" para testar a mensagem de espaço reservado "em construção"
  2. Insira: 1, seguido por pressionar a tecla "Enter" para "exibir todos os animais de estimação".

  3. Verifique se todas as informações de animais de estimação são exibidas.

    Ao observar os dados sobre todos os animais de estimação, o último animal de estimação exibido deve corresponder à seguinte saída:

    ID #: c4
    Species: cat
    Age: 3
    Nickname: Lion
    Physical description: Medium sized, long hair, yellow, female, about 10 pounds. Uses litter box.
    Personality: A people loving cat that likes to sit on your lap.
    
    Press the Enter key to continue
    
  4. Pressione a tecla Enter para continuar e retornar ao menu.

  5. No prompt de menu, insira 2 e pressione a tecla "Enter".

    Essa opção é um espaço reservado para a funcionalidade "Exibir todos os cães com uma característica especificada".

  6. Verifique se a mensagem UNDER CONSTRUCTION é exibida na seleção Display all dogs with a specified characteristic.

    A seguinte saída deve ser exibida:

    UNDER CONSTRUCTION - please check back next month to see progress.
    Press the Enter key to continue.
    
  7. Digite exit, no menu do aplicativo, para encerrar o programa e feche o painel “Terminal”.

    O programa deve ser encerrado.

Agora você está pronto para começar a desenvolver os novos recursos.