Условные выражения си шарп

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

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

Чтобы вставить фрагмент кода в режим фокусировки , используйте сочетание клавиш ( CTRL + v или cmd + v ).

Предварительные требования

Для работы с руководством вам потребуется компьютер, настроенный для разработки в локальной среде. Инструкции по установке и общие сведения о разработке приложений в .NET см. в статье Настройка локальной среды .

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

Принятие решений с помощью оператора if

Создайте каталог с именем branches-tutorial. Сделайте его текущим, выполнив следующую команду:

dotnet new console -n BranchesAndLoops -o . 

В шаблонах C# для .NET 6 используются операторы верхнего уровня. Приложение может не соответствовать коду, приведенному в этой статье, если вы уже выполнили обновление до .NET 6. Дополнительные сведения см. в статье Новые шаблоны C# для создания инструкций верхнего уровня.

Пакет SDK для .NET 6 также добавляет набор неявных global using директив для проектов, использующих следующие пакеты SDK:

Эти неявные директивы global using включают наиболее распространенные пространства имен для соответствующего типа проектов.

Читайте также:  Php пример ссылок href

Эта команда создает консольное приложение .NET в текущем каталоге. Откройте файл Program.cs в любом редакторе и замените содержимое следующим кодом:

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

Чтобы выполнить этот код, введите dotnet run в окне консоли. На консоли должно появиться сообщение «Ответ больше 10». Измените объявление b , чтобы сумма была меньше 10:

Введите dotnet run еще раз. Так как ответ меньше 10, никакие данные не выводятся. Проверяемое условие имеет значение false. У вас еще нет кода для выполнения, так как вы написали только одну из возможных ветвей для оператора if — ветвь true.

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

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

Объединение операторов if и else

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

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 . Следующий пример аналогичен тому, который вы создали. Измените код выше, чтобы он соответствовал следующему коду:

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

Все примеры кода в следующих разделах руководства содержат фигурные скобки в соответствии с принятой практикой.

Можно проверить более сложные условия. Добавьте следующий код после написанного кода:

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

Символ == позволяет проверить равенство. С помощью == обозначается отличие проверки равенства от назначения, которое показано в a = 5 .

&& представляет оператор and. То есть для выполнения оператора в ветви true оба условия должны иметь значение true. В этих примерах также показано, что в каждой условной ветви можно задать несколько операторов. Нужно лишь заключить их в скобки < и >. Вы также можете использовать для || представления «или». Добавьте следующий фрагмент после написанного кода:

if ((a + b + c > 10) || (a == b)) < Console.WriteLine("The answer is greater than 10"); Console.WriteLine("Or the first number is equal to the second"); >else

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

Вы завершили первый этап. Прежде чем перейти к следующему разделу, переместим текущий код в отдельный метод. Это упростит начало работы с новым примером. Поместите существующий код в метод 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"); >> 

Закомментируйте вызов ExploreIf() . Это поможет упорядочить выходные данные в этом разделе.

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

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

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

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

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

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

Напишите такой код, при выполнении которого значение условия цикла while изменится на false. В противном случае будет создан бесконечный цикл, в котором выполнение программы никогда не закончится. Это не показано в примере, так как нужно принудительно закрыть программу, нажав клавиши CTRL+C, или другим способом.

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

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

Этот цикл do и цикл while , приведенный выше, выводят одинаковый результат.

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

Цикл for широко используется в C#. Выполните этот код:

Этот цикл работает так же, как циклы while и do , которые вы использовали ранее. Оператор for состоит из трех частей, которые отвечают за его работу.

Первая часть — для инициализатора: int index = 0; объявляет index переменной цикла и задает для ее начальное значение 0 .

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

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

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

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

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

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

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

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

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

for (char column = 'a'; column < 'k'; column++) < Console.WriteLine($"The column is "); > 

Можно вложить один цикл внутрь другого для формирования пар:

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

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

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

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

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

Вы ознакомились с руководством по ветвям и циклам.

Теперь вы можете перейти к ознакомлению с руководством Массивы и коллекции в своей среде разработки.

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

Источник

Оцените статью