Exercício – Adicionar uma pesquisa de cães

Concluído

Neste exercício, você adicionará o recurso "Exibir todos os cães com uma característica especificada" (item de menu nº 2) ao aplicativo. O exercício usa o projeto de solução do exercício anterior que adicionou suggestedDonation dados.

Observação

Este projeto é um recurso de "produto mínimo viável" (MVP). Os recursos de MVP destinam-se a ser um protótipo de trabalho básico de um recurso que permite entrega rápida e fácil. Um MVP geralmente não é um produto final, sua finalidade é ajudá-lo a trabalhar em uma ideia, testá-la e reunir mais requisitos.

O recurso de pesquisa solicita ao usuário um único termo de entrada de pesquisa (ou frase) que descreve uma característica desejada em um animal de estimação para adotar. Em seguida, as descrições para cães adotáveis são pesquisadas para correspondências exatas da entrada do usuário. As informações sobre os cães correspondentes são exibidas no console. Se nenhuma correspondência for identificada, uma mensagem "Nenhum dos nossos cães é uma correspondência" será exibida junto com o termo de pesquisa usado.

As tarefas que você concluir durante este exercício são:

  1. Reunir a entrada do usuário para o termo de pesquisa de característica do animal de estimação
  2. Percorra o array de animais e identifique "cães"
  3. Pesquisar uma correspondência de termo na descrição de cada cachorro
  4. Exibir os cães com uma correspondência de termo

No Visual Studio Code, abra o arquivo de Project.cs concluído do exercício anterior que adicionou as informações de doação para começar.

  1. Revise a instrução switch do menu após o comentário nº 5 no código de Project.cs. Você descobre o código que exibe a mensagem "UNDER CONSTRUCTION ".

  2. Exclua o código Console.WriteLine("\nUNDER CONSTRUCTION - please check back next month to see progress."); entre case "2": e a Console.WriteLine("Press the Enter key to continue."); instrução para que o código corresponda ao seguinte exemplo:

    case "2":
        // Display all dogs with a specified characteristic
        Console.WriteLine("Press the Enter key to continue.");
        readResult = Console.ReadLine();
        break; 
    
  3. Adicione código para coletar a entrada do usuário para a dogCharacteristic cadeia de caracteres. Para coletar o dado, é necessário um while loop que continue solicitando ao usuário até que ele envie o dado. O loop instrui o usuário a Enter one desired dog characteristic to search for. Inserir uma cadeia de caracteres vazia repete o loop. Coloque o seguinte código a seguir case "2: pouco antes da break; instrução, conforme mostrado:

    case "2":
        // Display all dogs with a specified characteristic
        string dogCharacteristic = "";
    
        while (dogCharacteristic == "")
        {
            // have the user enter physical characteristics to search for
            Console.WriteLine($"\nEnter one desired dog characteristics to search for");
            readResult = Console.ReadLine();
            if (readResult != null)
            {
                dogCharacteristic = readResult.ToLower().Trim();
            }
        } 
        Console.WriteLine("Press the Enter key to continue.");
        readResult = Console.ReadLine();
        break;
    

    Examine o código adicionado. Os principais recursos do case "2": código incluem:

    • O código começa com uma declaração string dogCharacteristic = ""; de cadeia de caracteres que tem como escopo case "2":. Você não pode utilizar dogCharacteristic em nenhum lugar fora do código da declaração de caso.
    • Depois que Console.ReadLine() reúne a entrada do usuário como dogCharacteristic, ele garante que o valor não seja nulo, define a cadeia de caracteres para usar minúsculas e corta os espaços ao redor.
    • Se dogCharacteristic tiver um valor nulo, o loop repetirá a coleta de entrada.
  4. Salve seu código e, em seguida, compile usando dotnet build o TERMINAL (você pode consultar as etapas no exercício anterior) e corrija os erros.

  5. Execute o código usando dotnet run.

  6. Para testar a funcionalidade de entrada do termo de pesquisa do aplicativo, insira 2, selecionando a opção Menu 2, para pesquisar.

  7. Pressione "Enter" sem inserir dados no prompt "Inserir uma característica de cão desejada para pesquisar ". O programa deve retornar ao Enter one desired dog characteristics to search for prompt.

  8. O programa deve retornar ao prompt até que os caracteres sejam inseridos.

  9. Na solicitação, teste a entrada do termo de pesquisa, com golden como sua entrada. O programa deve retornar ao menu sem erros.

  10. No menu, digite "Sair" para sair do programa.

Identificar quais animais são cães

Agora você adicionará um recurso para pesquisar usando a entrada do usuário dogCharacteristic nas descrições de cães seguindo o código anterior em case "2". Mas primeiro você precisa identificar os cães.

  1. No final do case "2" código, logo antes do código Console.WriteLine("\n\rPress the Enter key to continue");, que é anterior ao break;, adicione o seguinte código:

    // #6 loop through the ourAnimals array to search for matching animals
    for (int i = 0; i < maxPets; i++)
    {
        if (ourAnimals[i, 1].Contains("dog"))
        {
            // #7 Search combined descriptions and report results
        }
    }
    
  2. Reserve um minuto para examinar o loop adicionado ao final do case "2": código.

    O código filtra "cães" usando ourAnimals[i,1], onde os dados animalSpecies são armazenados. Se animalSpecies armazenar "cachorro" como valor, então o código se moverá para as chaves da instrução if, onde a busca nas descrições combinadas pode ocorrer.

  3. Compile seu código usando dotnet build e corrija erros.

Pesquisar as informações de descrição combinadas de cães

O código anterior garante que você pesquise apenas descrições de cachorro. Agora é necessário pesquisar as descrições do cachorro e obter informações sobre correspondências.

Ao pensar nas descrições, você percebe que há duas descrições animalPhysicalDescription e animalPersonalityDescription;. A equipe discute a funcionalidade e decide que uma descrição combinada é apropriada para a pesquisa.

Observação

Alguns desenvolvedores se referem à adição de requisitos durante o desenvolvimento como "aumento do escopo". Embora combinar as descrições não seja muito trabalho, isso ainda adiciona tempo e complexidade. Por esse motivo, você deve informar a equipe que os requisitos adicionados geralmente atrasam a conclusão do projeto.

Você precisa declarar uma cadeia de caracteres, dogDescription para manter os dados combinados provenientes de animalPhysicalDescription e animalPersonalityDescription;.

  1. Declare dogDescription antes do comentário nº 6 com o seguinte código:

    string dogDescription = "";
    

    Agora, use a cadeia de caracteres declarada dogDescription anteriormente e preencha-a com as descrições físicas e de personalidade de cada animal

  2. Preencha a dogDescription variável com os valores para animalPhysicalDescription e animalPersonalityDescription;.

    Adicione o seguinte código após o comentário 7:

    dogDescription = ourAnimals[i, 4] + "\n" + ourAnimals[i, 5];
    

Pesquisar as descrições combinadas dos cães e exibir

Agora você adiciona a pesquisa de dogCharacteristic nos dados combinados de dogDescription. É necessário adicionar uma instrução if para determinar se há uma correspondência para a pesquisa de cada cachorro.

  1. Atualize o código após o comentário nº 7, depois dogDescription = ourAnimals[i, 4] + "\n" + ourAnimals[i, 5]; com o código:

    if (dogDescription.Contains(dogCharacteristic))
    {
        Console.WriteLine($"\nOur dog {ourAnimals[i, 3]} is a match!");
        Console.WriteLine(dogDescription);
    }
    

    Examine o exemplo de código anterior; quando a instrução if encontrar uma correspondência para dogCharacteristic em dogDescription, uma mensagem sobre a correspondência de cachorro e a descrição será exibida no console. Ainda é necessário levar em conta a mensagem "nenhuma correspondência encontrada".

  2. Adicione o código noMatchesDog = true:

    Adicione o seguinte código pouco antes do comentário nº 6:

    bool noMatchesDog = true;
    

    Agora você pode acompanhar quando nenhuma correspondência é encontrada com essa variável de acompanhamento. Quando o padrão é definido como true isso significa "é verdade que nenhum cachorro corresponde à pesquisa". Agora, quando um cão é encontrado você pode "virar" o noMatchesDog de true para false

  3. Nos colchetes da if (dogDescription.Contains(dogCharacteristic)) instrução, adicione o seguinte código:

    noMatchesDog = false;
    
  4. Revise se o código dentro dos colchetes de if (dogDescription.Contains(dogCharacteristic)) foi inserido corretamente.

    Você deve ter o seguinte código:

        if (dogDescription.Contains(dogCharacteristic))
        {
            Console.WriteLine($"\nOur dog {ourAnimals[i, 3]} is a match!");
            Console.WriteLine(dogDescription);
    
            noMatchesDog = false;
        }
    

    Por fim, é necessário criar um código que decida se a mensagem "nenhuma correspondência encontrada" deverá ser gravada no console.

  5. No final do case "2" código, logo antes do código Console.WriteLine("\n\rPress the Enter key to continue");, que é anterior ao break;, adicione o seguinte código:

    if (noMatchesDog)
    {
        Console.WriteLine("None of our dogs are a match found for: " + dogCharacteristic);
    }
    
    

    Este exemplo de código é o código final deste exercício!

  6. Salve suas alterações.

Verifique seu trabalho

  1. No prompt de comando TERMINAL, para criar o código do projeto, insira o seguinte comando: dotnet build.

    Se houver erros, você precisará ler as mensagens de erro, diagnosticar problemas e fazer correções ou revisar o código da solução na pasta "Final".

  2. Execute o código do projeto no terminal com dotnet run.

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

  1. No menu, insira "2" e pressione "Enter" para testar repetidamente a pesquisa de cachorro.

     - Enter nothing as input to test the null entry behavior
     - Enter "scuba" as input to test the "match not found"
     - Enter "golden" to get two matches
     - Enter "medium" to get one match
    

    Se tudo funcionou conforme o esperado em ambas as etapas, parabéns! Caso contrário, procure os erros revisando as etapas do exercício. Se necessário, comece de novo ou verifique o código na pasta Final para encontrar a solução para este exercício.

  2. Digite exit, no menu do aplicativo, para encerrar o programa e feche o painel “Terminal”.