Прочитать на английском

Поделиться через


Инструкции и циклы C# if — руководство по условной логике

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

Совет

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

Выполните следующий код в интерактивном окне. Выберите Выполнить:

C#
int a = 5;
int b = 6;
if (a + b > 10)
    Console.WriteLine("The answer is greater than 10.");

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

C#
int b = 3;

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

Совет

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

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

Этот процесс проверки условий и выполнения инструкций на основе этих условий является мощным. Давайте исследуем больше.

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

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

C#
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 с логическими условиями обеспечивает всю необходимую мощь.

Важно!

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

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

C#
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");
}

Совет

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

Вы можете протестировать более сложные условия:

C#
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 для выполнения инструкции в истинной ветви. В этих примерах также показано, что в каждой условной ветви может быть несколько операторов, при условии, что они заключены в { и }.

Можно также использовать || для представления "или".

C#
if ((a + b + c > 10) || (a == b))

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

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

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

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

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

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

Важно!

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

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

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

Этот do цикл и более ранний while цикл работают одинаково.

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

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

Еще одна распространенная инструкция цикла в коде C# — это цикл for. Попробуйте использовать этот код в интерактивном окне:

C#
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 цикл продолжает выполняться до тех пор, пока значение счетчика меньше 10.
  • Окончательная часть — это итератор: counter++ указывает, как изменить переменную цикла после выполнения блока, следующего for за инструкцией. Здесь указывается, что counter увеличивается на 1 при каждом выполнении блока.

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

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

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

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

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

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

Один for цикл может создать строки:

C#
for (int row = 1; row < 11; row++)
{
    Console.WriteLine($"The row is {row}");
}

Другой цикл может создать столбцы:

C#
for (char column = 'a'; column < 'k'; column++)
{
    Console.WriteLine($"The column is {column}");
}

Вы можете вложить один цикл внутри другого, чтобы сформировать пары:

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

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

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

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

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

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

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

::code language="csharp" interactive="try-dotnet-method" source="./snippets/BranchesAndLoops/Program.cs" id="Challenge":::

Вы завершили интерактивное руководство по "ветвям и циклам". Вы можете выбрать ссылку коллекции списков , чтобы начать следующий интерактивный учебник, или посетить сайт .NET, чтобы скачать пакет SDK для .NET , создать проект на компьютере и сохранить код. В разделе "Дальнейшие шаги" вы возвращаетесь к данным руководствам.

Дополнительные сведения об этих понятиях см. в следующих статьях:


Дополнительные ресурсы