Конструкции повторения. Синтаксис C#
В 1969 году Эдсгер Дейкстра доказал, что для решения любой логической задачи необходимо три алгоритмических структуры: следование, ветвление и повторение.
Следование и ветвление вам уже известны. Переходим к рассмотрению алгоритмической структуры — повторение.
Алгоритмическая структура повторение, применяется для многократного повторения одной и той же операции, называемой циклом. Цикл состоит из итераций. Итерация однократное выполнение операции цикла.
При выполнении операций повторения используются управляющие конструкции с операторами — while, do…while и for.
Основой алгоритма цикла является проверка некоторого условия, представляющего собой логическое выражение. Алгоритм цикла схож м алгоритмом операции ветвления.
Если результатом вычисления логического выражения является значение true, выполняется итерация цикла, если false, цикл завершается. Таким образом, выходом из цикла, является изменение, с true на false, результата вычисления логического выражения в операторе цикла
Конструкция повторения состоит из
Оператор цикла, с логическим выражением выполнения условия итераций
Тело цикла
Счетчик количества итераций или оператор — break.
Счетчик итераций применяется, когда количество итераций известно, оператор break, в случаях, когда количество итераций неизвестно.
Счетчик итераций имеет обязательные параметры.
Начальное значение. Целое число.
Операция изменения начального значения. Выбор, с определенным шагом, значения из числового ряда в диапазоне ограниченным начальным и конечным значением.
Конечное значение. Логическая операция. В основном, операция отношения с числом или переменной с примитивным типом данных.
Для операции изменения начального значения с шагом в единицу, в конструкциях ветвления, применяются унарные операторы.
Унарная операция — операция с одним операндом, имеет конструкцию вида « х++ » и заменяет запись « х = х + 1». Приращение на единицу называется операцией инкремент — « х++ » , уменьшение« х-- » — декремент. Унарные операции делятся на префиксную и постфиксную.
Префиксная запись: ++x — сначала значение переменной x увеличивается на 1, а потом ее значение возвращается в качестве результата операции.
Постфиксная запись: x++ — сначала значение переменной x возвращается в качестве результата операции, а затем к нему прибавляется 1.
Отличие результатов применения префиксной и постфиксной записи инкремента.
static void Main(string[] args)
{
int x = 3;
Console.WriteLine(x); // Результат: 3
Console.WriteLine(x++); // Результат: 3
Console.WriteLine(x); // Результат: 4
Console.WriteLine();
int y = 3;
Console.WriteLine(y); // Результат: 3
Console.WriteLine(++y); // Результат: 4
Console.WriteLine(y); // Результат: 4
}
Вернемся к операциям повторения и рассмотрим конструкцию с оператором — for, вида:
static void Main(string[] args)
{
for (int variable = 0; variable < 3; variable++)
{
Console.WriteLine("Итерация ");
}
}
Где, for (int variable = 0; variable < 3; variable++) — конструкция с оператором «for » с счетчиком.
Выражение int variable = 0 — начальное значение счетчика
Выражение variable < 3 — логическое выражение. В случае истинности выполняется итерация цикла, результат — false, заканчивает цикл.
Унарная операция variable++ — операция по изменению счетчика.
Здесь, каждую итерацию, значение переменной variable изменяется на единицу, в диапазоне от нуля до трех.
При достижении числа три, логической выражение вернет в программный код результат «false», итерация не будет выполнена и цикл будет завершен. Начальным значением может быть любое число, но диапазон чисел должен соответствовать необходимому количеству итераций. К примеру, 1 <= 3 или 5 < 8
Эту же задачу можно решить с помощью конструкции повторения с операторам « while »
static void Main(string[] args)
{
int i = 0;
while(i<3)
{
Console.WriteLine("Итерация ");
i++;
}
}
Отличие конструкции с операторам « while » от конструкции с оператором « for » в расположении элементов счетчика. Начальное значение инициализируется перед циклом, а операция по изменению начального значения происходит каждую итерацию в теле цикла.
Счетчик может как приращиваться, так и уменьшаться.
Выведем числа от десяти до нуля в одну строку через запятую. Изменяя начальное или логическое выражение на экран, можно выводить любой числовой ряд. Выражение в виде Console.WriteLine(i); часто используют для вывода нумерации строк.
static void Main(string[] args)
{
int i = 10;
while (i > 0)
{
Console.Write(i + ", ");
i--;
}
}
При написании цикла необходимо внимательно отнестись к параметрам счетчика, так если не указать изменение счетчика или неверно составить логическое выражение, параметр в круглых скобках оператора никогда не изменит значения с true на false и цикл никогда не завершится, т.е. станет бесконечным.
Как это не парадоксально звучит, но и бесконечный цикл нашел большое применение в операциях повторения и применяется в случаях, когда необходимо ввести неизвестное количество значений.
Для этого, оператору while в качестве параметра передается значение true, а для выхода из цикла применяется операция ветвления, которая может принять либо true либо false. Один из блоков операции ветвления содержит оператор — break.
Напишем программу проверки ввода логина. Логин — строчное значение 123.
static void Main(string[] args)
{
Console.WriteLine("Введите логин. Для отказа нажмите пробел");
while (true)
{
string value = Console.ReadLine();
if(value == " ")
{
break;
}
if (value != "123")
{
Console.WriteLine("Неверно. Введите логин");
}
else
{
Console.WriteLine("Логин принят");
Console.ReadKey();
break;
}
}
Заключение.
Алгоритмическая структура повторение используется при решении задач с неоднократно повторяющимися операциями вычисления. Наиболее известными конструкциями структуры повторения являются конструкции с операторами while и for. Циклы делятся на две группы. Циклы с известным количеством итераций, для которых предпочтительно использовать конструкцию с оператором for, и с неизвестным количеством итераций, в том числе и бесконечные циклы, для которых лучше подходит конструкция с оператором while.
На этом занятие закончено.
Вы можете самостоятельно найти задачи для закрепления теоретического материала или для получения задач с ответами отправьте письмо на basicprog@mail.ru
Удачи в выполнении практических заданий!