Упражнение. Просмотр начального кода

Завершено

На этом первом шаге процесса разработки просмотрите код, предоставленный в папке проекта Starter.

Просмотр содержимого файла Program.cs

Файл Program.cs содержит предварительную версию приложения, над которым вы работаете. Код содержит функции для создания и отображения примеров данных для приложения, а также отображается список параметров меню, определяющих основные функции приложения.

  1. Убедитесь, что у вас есть папка "GuidedProject" (Guided-project-Work-with-variable-data-CSharp-main) в Visual Studio Code.

    Модуль "Подготовка" (предыдущий модуль в этом модуле) содержит раздел установки, описывающий процесс скачивания начальной точки для интерактивного проекта и открытия папки Visual Studio Code. При необходимости вернитесь и следуйте инструкциям по настройке.

  2. В представлении "ОБОЗРЕВАТЕЛЬ" разверните папку Starter, а затем выберите "Program.cs".

    При выборе файла Program.cs содержимое файла открывается в главной области редактора справа от обозревателя.

    Если представление обозревателя не открыто, вы можете выбрать или открыть представление EXPLORER в строке действий в левой части Visual Studio Code. Обозреватель — это самый верхний значок на панели действий.

  3. Уделите несколько минут, чтобы просмотреть начальные объявления переменных в верхней части файла 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];
    

    Во-первых, вы увидите комментарий (комментарий #1), за которым следует список переменных. Эти переменные, от animalSpecies до animalNickname, используются для хранения значений характеристик домашних животных в многомерном строковом массиве с именем ourAnimals, который инициализирован для содержимого строки нулевой длины "". Объявление ourAnimals массива немного ниже в коде.

    Следующая группа переменных (под комментарием #2) — это сочетание string переменных, int используемых для создания примеров данных, чтения входных данных пользователей и установления условий выхода для основного цикла программы. Обратите внимание на строку string? readResult;кода. Вы используете символ ? для преобразования обычно ненулевого типа переменной (int, string, bool и прочих) в тип с поддержкой значения NULL.

    Замечание

    При чтении введенных пользователем значений с Console.ReadLine() помощью метода рекомендуется включить строку типа NULL, чтобы string? избежать создания предупреждения компилятора кода при сборке проекта.

    Последняя переменная (под комментарием #3) — это двухмерный строковый массив с именем ourAnimals. Вы инициализировали количество строк, определяемое maxPets, равное 8. Число характеристик, которые вы храните изначально, составляет шесть. Шесть характеристик соответствуют количеству строковых переменных, которые вы изучили в примере кода, но количество характеристик должно быть увеличено, чтобы добавить поле для suggestedDonation.

  4. Прокрутите вниз файл Program.cs, чтобы проверить for цикл, содержащий switch конструкцию выбора в блоке кода.

    Пример кода — это сокращенная версия для экономии места.

    // #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. Обратите внимание, что for цикл использует maxPets переменную для установления верхней границы числа итераций после комментария 4.

  6. Кроме того, заметьте, что конструкция switch выборочно ветвляет код, чтобы можно было определить различные характеристики для домашних животных из примера набора данных.

    Вы используете оператор switch для определения различных значений на первых четырех итерациях цикла for. После обработки выборки данных все характеристики пустые или имеют нулевую длину.

    Значения переменных характеристик животных назначаются массиву ourAnimals в конце for цикла.

  7. Прокрутите страницу до нижней части файла кода в Visual Studio Code. Проверьте код, используемый для отображения параметров меню и записи входных данных выбора пользователя.

    Обратите внимание на следующий код:

    // #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. Потратьте минуту, чтобы просмотреть два case утверждения.

    Существует только два параметра меню, работающих с ограниченной версией приложения. Начальное приложение предоставляет только возможности, необходимые для запуска и тестирования прототипа функций.

  9. Обратите внимание, что за строкой кода readResult = Console.ReadLine(); следует проверка значения NULL.

    Код, использующий метод Console.ReadLine(), устанавливает значение nullable строки readResult, чтобы избежать предупреждения компилятора при сборке проекта.

Проверь свою работу

  1. Проверьте консольное приложение начального кода в терминале и выполните сборку и запуск кода проекта одной командой, введя: dotnet run.

    Замечание

    Запрос терминала должен быть открыт в начальной папке, и терминал должен выглядеть так же, как ..\ArrayGuidedProject\starter>

    При запуске кода отображаются два элемента меню.

    • Ввод: 1для проверки выходных данных "Список всех наших текущих сведений о домашних животных"
    • Введите: 2, чтобы проверить сообщение заполнителя "на стадии разработки"
  2. Введите: 1 и нажмите клавишу ВВОД, чтобы отобразить все домашние животные.

  3. Убедитесь, что отображаются все сведения о домашних животных.

    При наблюдении за данными обо всех домашних животных последний отображаемый домашний питомец должен соответствовать следующим выходным данным:

    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. Нажмите клавишу ВВОД, чтобы продолжить и вернуться в меню.

  5. В командной строке меню введите 2 и нажмите клавишу ВВОД.

    Этот выбор служит заполнителем для функции "Отображение всех собак с указанной характеристикой".

  6. Убедитесь, что сообщение UNDER CONSTRUCTION отображается для выбора Display all dogs with a specified characteristic.

    Вы должны наблюдать следующие выходные данные:

    UNDER CONSTRUCTION - please check back next month to see progress.
    Press the Enter key to continue.
    
  7. Введите exitв меню приложения, чтобы завершить программу, а затем закройте панель терминала.

    Программа должна завершить работу.

Теперь вы готовы приступить к разработке новых функций.