Бөлісу құралы:


Руководство: Операторы и циклы C# if — условная логика

В этом руководстве описано, как писать код C#, который проверяет переменные и изменяет путь выполнения на основе этих переменных. Вы пишете код C# и видите результаты компиляции и выполнения кода. В этом руководстве содержится ряд уроков, в котором рассматриваются конструкции ветвления и циклирования в C#. Эти уроки учат вас основам языка C#.

Изучив это руководство, вы:

  • Запустите пространство кода GitHub с помощью среды разработки C#.
  • Изучите операторы if и else.
  • Используйте циклы для повторения операций.
  • Работа с вложенными циклами.
  • Объедините ветви и циклы.

Предпосылки

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

Использование инструкций if

Чтобы запустить GitHub Codespace с средой учебника, откройте окно браузера в репозитории пространства кода учебника . Нажмите зеленую кнопку "Код" и вкладку "Пространства кода ". Затем выберите + знак, чтобы создать новое пространство Codespace с помощью этой среды. Если вы выполнили другие учебники в этой серии, вы можете открыть это пространство кода вместо создания нового.

  1. При загрузке пространства кода создайте новый файл в папке учебников с именем branches-loops.cs.

  2. Откройте новый файл.

  3. Введите или скопируйте следующий код в branches-loops.cs:

    int a = 5;
    int b = 6;
    if (a + b > 10)
        Console.WriteLine("The answer is greater than 10.");
    
  4. Попробуйте этот код, введя следующую команду в интегрированном терминале:

    cd tutorials
    dotnet branches-loops.cs
    

    Вы должны увидеть сообщение «Ответ больше 10», напечатанное в вашей консоли.

  5. Измените объявление b таким образом, чтобы сумма была меньше 10:

    int b = 3;
    
  6. Введите dotnet branches-loops.cs еще раз в окне терминала.

    Так как ответ меньше 10, ничего не печатается. Условие, которое вы тестируете, ложно. У вас нет кода для выполнения, потому что вы написали только одну из возможных ветвей для оператора if: истинную ветвь.

Подсказка

При изучении C# (или любого языка программирования) при написании кода могут возникать ошибки. Компилятор находит и сообщает об ошибках. Внимательно изучите выходные данные ошибки и код, создающий ошибку. Вы также можете попросить Copilot найти различия или обнаружить какие-либо ошибки. Ошибка компилятора обычно помогает найти проблему.

В этом первом примере показаны возможности if и логических типов данных. Логическое значение — это переменная, которая может иметь одно из двух значений: true или false. C# определяет специальный тип bool для логических переменных. Инструкция if проверяет значение bool. Если значение равно true, выполняется инструкция, следующая за if. В противном случае это будет пропущено. Этот процесс проверки условий и выполнения инструкций на основе этих условий является мощным. Давайте исследуем больше.

Сделать так, чтобы if и else работали вместе.

Чтобы выполнить другой код в истинных и ложных ветвях, создайте else ветвь, которая выполняется при условии false. Попробуйте ветку else.

  1. Добавьте последние две строки в следующем фрагменте кода (у вас уже должно быть первые четыре):

    int a = 5;
    int b = 3;
    if (a + b > 10)
        Console.WriteLine("The answer is greater than 10");
    else
        Console.WriteLine("The answer is not greater than 10");
    

    Инструкция, следующая за ключевым словом else, выполняется только в том случае, если тестируемое false условие. Объединение if и else с булевыми условиями дает все необходимые возможности для обработки как true, так и false условий.

    Это важно

    Отступ под инструкциями if и else предназначен для человеческого восприятия. Язык C# не обрабатывает отступы или пробелы как значительные. Инструкция, следующая за ключевым словом if , else выполняется на основе условия. Все примеры в этом руководстве следуют обычной практике отступов строк в зависимости от потока выполнения операторов.

    Так как отступ не является значительным, необходимо использовать { и }, чтобы указать, когда требуется, чтобы несколько операторов были частью блока условного выполнения. Программисты C# обычно используют эти фигурные скобки для всех if предложений и else предложений.

  2. Следующий пример совпадает с тем, что вы создали в предыдущем примере, с добавлением { и }. Измените код, чтобы он соответствовал следующему коду:

    int a = 5;
    int b = 3;
    if (a + b > 10)
    {
        Console.WriteLine("The answer is greater than 10");
    }
    else
    {
        Console.WriteLine("The answer is not greater than 10");
    }
    

    Подсказка

    В остальной части этого руководства все примеры кода включают фигурные скобки, следуя общепринятым практикам.

  3. Вы можете протестировать более сложные условия. Добавьте следующий код после кода, который вы написали до сих пор.

    int a = 5;
    int b = 3;
    int c = 4;
    if ((a + b + c > 10) && (a == b))
    {
        Console.WriteLine("The answer is greater than 10");
        Console.WriteLine("And the first number is equal to the second");
    }
    else
    {
        Console.WriteLine("The answer is not greater than 10");
        Console.WriteLine("Or the first number is not equal to the second");
    }
    

    Символ == проверяет равенство. Использование == отличает проверку на равенство от присваивания, которое вы видели ранее в a = 5.

    Элемент && представляет «и». Это означает, что оба условия должны быть true для выполнения инструкции в истинной ветви. В этих примерах также показано, что в каждой условной ветви может быть несколько операторов, при условии, что они заключены в { и }.

  4. Можно также использовать || для представления "или". Добавьте следующий код после того, что вы написали на данный момент.

    if ((a + b + c > 10) || (a == b))
    
  5. Измените значения a, b, и c, и переключитесь между && и ||, чтобы исследовать. Вы получите больше понимания того, как операторы && и || работают.

  6. Вы завершили первый шаг. Перед началом следующего раздела давайте переместим текущий код в отдельный метод. Это упрощает работу с новым примером. Поместите существующий код в метод с именем ExploreIf(). Вызовите его из верхней части программы. После завершения этих изменений код должен выглядеть следующим образом:

    ExploreIf();
    
    void ExploreIf()
    {
        int a = 5;
        int b = 3;
        if (a + b > 10)
        {
            Console.WriteLine("The answer is greater than 10");
        }
        else
        {
            Console.WriteLine("The answer is not greater than 10");
        }
    
        int c = 4;
        if ((a + b + c > 10) && (a > b))
        {
            Console.WriteLine("The answer is greater than 10");
            Console.WriteLine("And the first number is greater than the second");
        }
        else
        {
            Console.WriteLine("The answer is not greater than 10");
            Console.WriteLine("Or the first number is not greater than the second");
        }
    
        if ((a + b + c > 10) || (a > b))
        {
            Console.WriteLine("The answer is greater than 10");
            Console.WriteLine("Or the first number is greater than the second");
        }
        else
        {
            Console.WriteLine("The answer is not greater than 10");
            Console.WriteLine("And the first number is not greater than the second");
        }
    }
    
  7. Закомментируйте вызов ExploreIf(). Это делает выходные данные менее загромождными при работе в этом разделе:

    //ExploreIf();
    

Элемент // начинает комментарий в C#. Примечания — это любой текст, который вы хотите сохранить в исходном коде, но не выполнять как код. Компилятор не создает исполняемый код из комментариев.

Использование циклов для повторения операций

Еще одной важной концепцией создания больших программ является циклы. Используйте циклы для повторения инструкций, которые требуется выполнить несколько раз.

  1. Добавьте этот код после вызова ExploreIf:

    int counter = 0;
    while (counter < 10)
    {
        Console.WriteLine($"Hello World! The counter is {counter}");
        counter++;
    }
    

    Оператор while проверяет условие и выполняет оператор, следующий за while. Он повторяет проверку условия и выполняет эти инструкции до тех пор, пока условие не станет ложным.

    В этом примере есть еще один новый оператор. После ++ переменной counter идет оператор инкремента. Он добавляет 1 к значению counter и сохраняет это значение в переменной counter .

    Это важно

    Убедитесь, что условие цикла while становится ложным при выполнении кода. В противном случае создается бесконечный цикл , в котором программа никогда не заканчивается. Это поведение не демонстрируется в этом примере, так как необходимо принудительно выйти из программы с помощью клавиш CTRL-C или других средств.

    Цикл while проверяет условие перед выполнением кода после while.

  2. Цикл do ... while сначала выполняет код, а затем проверяет условие. Цикл do while показан в следующем коде:

    int counter = 0;
    do
    {
        Console.WriteLine($"Hello World! The counter is {counter}");
        counter++;
    } while (counter < 10);
    

    Этот do цикл и предыдущий while цикл создают одни и те же выходные данные.

Давайте перейдем к одному последнему оператору цикла.

Работа с циклом for

Еще одна распространенная инструкция цикла в коде C# — это цикл for.

  1. Попробуйте использовать следующий код:

    for (int counter = 0; counter < 10; counter++)
    {
        Console.WriteLine($"Hello World! The counter is {counter}");
    }
    

    Предыдущий for цикл выполняет ту же работу, что и while цикл и do цикл, которые вы уже использовали. В for инструкции есть три части, которые управляют тем, как она работает:

    • Первая часть — это инициализатор для: int counter = 0; объявляет, что counter — это переменная цикла и задает для нее начальное значение 0.
    • Средняя часть является условием:counter < 10 объявляет, что этот for цикл продолжает выполняться до тех пор, пока значение counter меньше 10.
    • Окончательная часть — это итератор: counter++ указывает, как изменить переменную цикла после выполнения блока, следующего for за инструкцией. Здесь указывается, что counter увеличивается на 1 при каждом выполнении блока.
  2. Поэкспериментируйте с этими условиями самостоятельно. Попробуйте выполнить каждое из следующих изменений:

    • Измените инициализатор, чтобы начать с другого значения.
    • Измените условие, чтобы остановиться на другом значении.

Когда вы закончите, перейдите к следующему разделу, чтобы написать код самостоятельно и использовать то, что вы узнали.

Существует еще один оператор цикла, который не рассматривается в этом руководстве: оператор foreach. Оператор foreach повторяет свою инструкцию для каждого элемента в последовательности элементов. Чаще всего он используется с коллекциями. Это описано в следующем руководстве.

Создание вложенных циклов

Можно вложить цикл while, do или for внутрь другого цикла, чтобы создать матрицу, объединив каждый элемент во внешнем цикле с каждым элементом во внутреннем цикле. Давайте создадим набор буквенно-цифровых пар для представления строк и столбцов.

  1. Добавьте следующий for цикл, создающий строки:

    for (int row = 1; row < 11; row++)
    {
        Console.WriteLine($"The row is {row}");
    }
    
  2. Добавьте еще один цикл для создания столбцов:

    for (char column = 'a'; column < 'k'; column++)
    {
        Console.WriteLine($"The column is {column}");
    }
    
  3. Наконец, вложите цикл столбцов в цикл строк, чтобы сформировать пары.

    for (int row = 1; row < 11; row++)
    {
        for (char column = 'a'; column < 'k'; column++)
        {
            Console.WriteLine($"The cell is ({row}, {column})");
        }
    }
    

    Внешний цикл увеличивается один раз для каждого полного запуска внутреннего цикла. Поменяйте местами вложенные строки и столбцы и посмотрите изменения. По завершении поместите код из этого раздела в метод с именем ExploreLoops().

Объединение ветвей и циклов

Теперь, когда вы использовали инструкцию if и конструкции циклического цикла на языке C#, узнайте, можно ли написать код C#, чтобы найти сумму всех целых чисел 1–20, которые являются делимыми на 3. Ниже приведены несколько подсказок:

  • Оператор % дает остаток от операции деления.
  • Оператор if определяет условие для проверки, должно ли число быть включено в сумму.
  • Цикл for может помочь повторить ряд шагов для всех чисел 1–20.

Попробуйте самостоятельно. Затем проверьте, как вы сделали. В качестве подсказки, правильный ответ должен быть 63.

Ты придумала что-то вроде этого?

int sum = 0;
for (int number = 1; number < 21; number++)
{
    if (number % 3 == 0)
    {
        sum = sum + number;
    }
}
Console.WriteLine($"The sum is {sum}");

Вы завершили урок "Ветви и циклы". Дополнительные сведения об этих понятиях см. в следующих статьях:

Очистка ресурсов

GitHub автоматически удаляет пространство Codespace через 30 дней бездействия. Если вы планируете изучать дополнительные руководства в этой серии, вы можете оставить Codespace в активном состоянии. Если вы готовы посетить сайт .NET , чтобы скачать пакет SDK для .NET, можно удалить пространство Codespace. Чтобы удалить ваш Codespace, откройте окно браузера и перейдите к вашим Codespace. В текущем окне появится список ваших codespaces (пространств кода). Выберите три точки (...) в записи для пространства кода учебника для обучения и выберите удалить.

Следующий шаг