Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Руководство: Операторы и циклы C#
В этом руководстве описано, как писать код C#, который проверяет переменные и изменяет путь выполнения на основе этих переменных. Вы пишете код C# и видите результаты компиляции и выполнения кода. В этом руководстве содержится ряд уроков, в котором рассматриваются конструкции ветвления и циклирования в C#. Эти уроки учат вас основам языка C#.
Изучив это руководство, вы:
- Запустите пространство кода GitHub с помощью среды разработки C#.
- Изучите операторы
ifиelse. - Используйте циклы для повторения операций.
- Работа с вложенными циклами.
- Объедините ветви и циклы.
Предпосылки
У вас должен быть один из следующих вариантов:
- Учетная запись GitHub для использования GitHub Codespaces. Если у вас еще нет учетной записи, вы можете создать бесплатную учетную запись на GitHub.com.
- Компьютер со следующими инструментами:
Использование инструкций if
Чтобы запустить GitHub Codespace с средой учебника, откройте окно браузера в репозитории пространства кода учебника . Нажмите зеленую кнопку "Код" и вкладку "Пространства кода ". Затем выберите + знак, чтобы создать новое пространство Codespace с помощью этой среды. Если вы выполнили другие учебники в этой серии, вы можете открыть это пространство кода вместо создания нового.
При загрузке пространства кода создайте новый файл в папке учебников с именем branches-loops.cs.
Откройте новый файл.
Введите или скопируйте следующий код в branches-loops.cs:
int a = 5; int b = 6; if (a + b > 10) Console.WriteLine("The answer is greater than 10.");Попробуйте этот код, введя следующую команду в интегрированном терминале:
cd tutorials dotnet branches-loops.csВы должны увидеть сообщение «Ответ больше 10», напечатанное в вашей консоли.
Измените объявление
bтаким образом, чтобы сумма была меньше 10:int b = 3;Введите
dotnet branches-loops.csеще раз в окне терминала.Так как ответ меньше 10, ничего не печатается. Условие, которое вы тестируете, ложно. У вас нет кода для выполнения, потому что вы написали только одну из возможных ветвей для оператора
if: истинную ветвь.
Подсказка
При изучении C# (или любого языка программирования) при написании кода могут возникать ошибки. Компилятор находит и сообщает об ошибках. Внимательно изучите выходные данные ошибки и код, создающий ошибку. Вы также можете попросить Copilot найти различия или обнаружить какие-либо ошибки. Ошибка компилятора обычно помогает найти проблему.
В этом первом примере показаны возможности if и логических типов данных.
Логическое значение — это переменная, которая может иметь одно из двух значений: true или false. C# определяет специальный тип bool для логических переменных. Инструкция if проверяет значение bool. Если значение равно true, выполняется инструкция, следующая за if. В противном случае это будет пропущено. Этот процесс проверки условий и выполнения инструкций на основе этих условий является мощным. Давайте исследуем больше.
Сделать так, чтобы if и else работали вместе.
Чтобы выполнить другой код в истинных и ложных ветвях, создайте 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 { Console.WriteLine("The answer is not greater than 10"); }Подсказка
В остальной части этого руководства все примеры кода включают фигурные скобки, следуя общепринятым практикам.
Вы можете протестировать более сложные условия. Добавьте следующий код после кода, который вы написали до сих пор.
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 для выполнения инструкции в истинной ветви. В этих примерах также показано, что в каждой условной ветви может быть несколько операторов, при условии, что они заключены в{и}.Можно также использовать
||для представления "или". Добавьте следующий код после того, что вы написали на данный момент.if ((a + b + c > 10) || (a == b))Измените значения
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(). Это делает выходные данные менее загромождными при работе в этом разделе://ExploreIf();
Элемент // начинает комментарий в C#. Примечания — это любой текст, который вы хотите сохранить в исходном коде, но не выполнять как код. Компилятор не создает исполняемый код из комментариев.
Использование циклов для повторения операций
Еще одной важной концепцией создания больших программ является циклы. Используйте циклы для повторения инструкций, которые требуется выполнить несколько раз.
Добавьте этот код после вызова
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.Цикл
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.
Попробуйте использовать следующий код:
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 при каждом выполнении блока.
- Первая часть — это инициализатор для:
Поэкспериментируйте с этими условиями самостоятельно. Попробуйте выполнить каждое из следующих изменений:
- Измените инициализатор, чтобы начать с другого значения.
- Измените условие, чтобы остановиться на другом значении.
Когда вы закончите, перейдите к следующему разделу, чтобы написать код самостоятельно и использовать то, что вы узнали.
Существует еще один оператор цикла, который не рассматривается в этом руководстве: оператор foreach. Оператор foreach повторяет свою инструкцию для каждого элемента в последовательности элементов. Чаще всего он используется с коллекциями. Это описано в следующем руководстве.
Создание вложенных циклов
Можно вложить цикл while, do или for внутрь другого цикла, чтобы создать матрицу, объединив каждый элемент во внешнем цикле с каждым элементом во внутреннем цикле. Давайте создадим набор буквенно-цифровых пар для представления строк и столбцов.
Добавьте следующий
forцикл, создающий строки:for (int row = 1; row < 11; row++) { Console.WriteLine($"The row is {row}"); }Добавьте еще один цикл для создания столбцов:
for (char column = 'a'; column < 'k'; column++) { Console.WriteLine($"The column is {column}"); }Наконец, вложите цикл столбцов в цикл строк, чтобы сформировать пары.
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 (пространств кода). Выберите три точки (...) в записи для пространства кода учебника для обучения и выберите удалить.