Урок № 9. Циклы с заранее неизвестным количеством повторений


Подробнее о циклах

Доброго времени суток! Сегодня мы рассмотрим циклы с заранее неизвестным количеством повторений.

На самом деле, это довольно условное название, но применять их логичнее всего именно в таких случаях.

И так, циклы с заранее неизвестным количеством повторений можно разделить на два типа: циклы с предусловием, и циклы с постусловием. У цикла с предусловием, сначала проверяется условие, а потом выполняется (или не выполняется, в зависимости от результата) тело цикла, а вот у цикла с постусловием, сначала выполняется тело цикла, а потом проверяется условие, и, если условие выполнилось снова повторяется тело цикла. Таким образом, блок операторов цикла с постусловием выполнится хотя бы один раз.

Сначала рассмотрим цикл с предусловием, и попутно научимся считывать информацию, введенную пользователем с клавиатуры (до этого, мы только выводили информацию в консоль).

А решать мы будем следующую задачу: программа выводит приглашение пользователю ввести строку с клавиатуры и нажать на «Enter», пользователь вводит строку, и, если он ввел любую строку кроме слова «выход», программа выводит введенную строку на консоль и снова предлагает пользователю ввести еще что-нибудь, т.е. программа выполняет однотипные действия до тех пор, пока пользователь не введет кодовое слово. Вот Вам классический пример использования цикла с заранее неизвестным количеством повторений (т.е. цикл будет повторяться, пока не произойдет какое-то событие). В коде C#, это выглядит следующим образом:

//Переменная для хранения введенной строки
string userString = "";

//Цикл с предусловием
while (userString != "выход")
{
    //Приглашение пользователю
    Console.Write("Введите любую строку и нажмите клавишу Enter: ");

    /*
    * Получение веденной с клавиатуры строки,
    * введенная строка сохраняется в переменную userString
    */

    userString = Console.ReadLine();

    //Вывод введенной строки
    Console.WriteLine("Пользователь ввел строку: " + userString);
}

Цикл с предусловием начинается с ключевого слова while, вслед за которым идет условие (как обычно) в круглых скобках, а потом – тело цикла. Если условие выполняется, то выполняется и тело цикла, потом снова проверяется условие и выполняется тело цикла (до тех пор, пока условие не перестанет выполняться). Именно по той причине, что в таком варианте цикла, тело цикла может не выполнится ни разу, если условие изначально не выполняется! Например, если бы мы при создании переменной «userString» инициализировали бы её значением «выход»…

А теперь, пора рассмотреть цикл с постусловием, решим эту же задачу! Выглядеть это будет так:

</pre>
//Переменная для хранения введенной строки
string userString = "";

//Цикл с постусловием
do
{
    //Приглашение пользователю
    Console.Write("Введите любую строку и нажмите клавишу Enter: ");

    /*
    * Получение веденной с клавиатуры строки,
    * введенная строка сохраняется в переменную userString
    */

    userString = Console.ReadLine();

    //Вывод введенной строки
    Console.WriteLine("Пользователь ввел строку: " + userString);
} while (userString != "выход");

Как Вы могли заметить, цикл с постусловием строится по схеме do тело цикла while (условие); (еще раз обратите внимание, после цикла с постусловием нужно ставить символ «;», т.е. точка с запятой). Вот так, всё довольно просто…

Да, чуть не забыл, обратите внимание на условие, которые мы использовали в круглых скобках цикла, там есть оператор «!=» в C# он означает «не равно», т.е. этот оператор обратен оператору проверки равенства (а он, в свою очередь, в C# обозначается как «==», т.е. «двойное равно»). Для более подробного знакомства с нюансами работы с циклами в C# можно почитать эту статью.

В следующем уроке, мы рассмотрим более сложный вариант оператора выбора, чем ifelse!

Перейти к следующему уроку