6.4. Операторы цикла - В. В. Подбельский Язык C#. Базовый курс

^ 6.4. Операторы цикла
Операторы цикла задают неоднократное выполнение операторов тела цикла. В языке C# определены четыре различных оператора цикла.

while (выражение-условие)

тело_цикла

do

тело_цикла

while (выражение-условие);

for (инициализатор_цикла;

выражение-условие; завершающее_ выражение)


тело_цикла


Цикл перебора частей массива либо коллекции:

foreach (тип идентификатор in выражение )

тело цикла


Выражение представляет коллекцию либо массив. Тип и идентификатор определяют итерационную переменную 6.4. Операторы цикла - В. В. Подбельский Язык C#. Базовый курс оператора цикла. Эта итерационная переменная локализована в границах цикла и допускает только чтение тех значений, которые она поочередно представляет, перебирая элементы коллекции. Если операторы тела цикла пробуют видоизменять итерационную переменную (к примеру 6.4. Операторы цикла - В. В. Подбельский Язык C#. Базовый курс, при помощи операции – либо ++), то появляется ошибка компиляции. Итерационная переменная поочередно воспринимает значения всех частей коллекции, представленной выражением, находящимся прямо за служебным словом in. Для каждого значения итерационной переменной 6.4. Операторы цикла - В. В. Подбельский Язык C#. Базовый курс производятся все операторы тела цикла. После перебора всех частей коллекции либо массива управление передается оператору, помещенному после тела цикла. Пример внедрения оператора к массиву:

int[] array = new int[10]; // Объявили и обусловили массив

foreach (int 6.4. Операторы цикла - В. В. Подбельский Язык C#. Базовый курс i in array) {/*:::::*/}; // Для каждого элемента


while, do, for, foreach, in – служебные слова, используемые только для сотворения циклов. Более подробноО оператор foreach подвергнется рассмотрению при исследовании массивов (глава 7). А сейчас разглядим другие циклы 6.4. Операторы цикла - В. В. Подбельский Язык C#. Базовый курс и их элементы.

while, do, for, foreach, in – служебные слова, используемые только для сотворения циклов.

Тело_цикла не может быть объявлением. Это или отдельный (в том числе пустой) оператор, который всегда заканчивается точкой 6.4. Операторы цикла - В. В. Подбельский Язык C#. Базовый курс с запятой, или блок (операторы, заключённые в фигурные скобки). Выражение-условие, применяемое в первых 3-х операторах – это во всех операторах логическое выражение, определяющее условие продолжения выполнения итераций (если его 6.4. Операторы цикла - В. В. Подбельский Язык C#. Базовый курс значение true). Прекращение выполнения цикла может быть в последующих случаях:

Последнюю из обозначенных способностей 6.4. Операторы цикла - В. В. Подбельский Язык C#. Базовый курс проиллюстрируем чуток позднее, рассматривая особенности операторов передачи управления.

Оператор while (оператор "повторять, пока поистине условие") именуется оператором цикла с предусловием. При входе в цикл рассчитывается выражение-условие. Если его значение поистине, то производится 6.4. Операторы цикла - В. В. Подбельский Язык C#. Базовый курс тело_цикла. Потом вычисление выражения-условия и выполнение операторов тела_цикла повторяются поочередно, пока значение выражения-условия остаётся настоящим и нет очевидной передачи управления за границы тела цикла.

Оператором while 6.4. Операторы цикла - В. В. Подбельский Язык C#. Базовый курс комфортно воспользоваться для просмотра последовательностей, если в конце каждой из их находится заблаговременно узнаваемый признак.

В качестве проверяемого выражения-условия в циклах нередко употребляются дела. К примеру, последующая последовательность операторов вычисляет сумму квадратов первых К 6.4. Операторы цикла - В. В. Подбельский Язык C#. Базовый курс натуральных чисел (членов натурального ряда):

int i = 0; // Cчётчик

int s = 0; // Будущая сумма

while (i ++< K) //Цикл вычисления суммы

i++;

s += i * i;

}Только при изменении операндов выражения-условия реально избежать зацикливания. Потому, иИспользуя оператор цикла 6.4. Операторы цикла - В. В. Подбельский Язык C#. Базовый курс с предусловием, нужно смотреть за тем, чтоб операторы тела_цикла повлияли на выражение-условие, или оно еще каким-то образом должно изменяться во время вычислений. К примеру, могут изменяться операнды выражения 6.4. Операторы цикла - В. В. Подбельский Язык C#. Базовый курс-условия. Нередко для этих целей употребляют унарные операции ++ и --.) Только при изменении выражения-условия реально избежать зацикливания. В качестве примера использования оператора while разглядим программку, которая предлагает юзеру ввести текстовую 6.4. Операторы цикла - В. В. Подбельский Язык C#. Базовый курс информацию (непустую строчку). Если юзер надавливает ENTER, не введя никаких данных, то предложение "Ввести данные" повторяется.

// 06_01.cs - цикл с предусловием

using System;

class Program

{

static void Main()

{

string name = "";

while (name == "")

{

Console.Write("Введите 6.4. Операторы цикла - В. В. Подбельский Язык C#. Базовый курс имя: ");

name = Console.ReadLine();

}

}

}

/*

Итог выполнения программки:

Введите имя:

Введите имя:

Введите имя: Rem

*/

В данной программке предлагается ввести имя и введённая строчка, представляемая переменной name, сравнивается с пустой строчкой. Проверка правильности введённых данных в реальных 6.4. Операторы цикла - В. В. Подбельский Язык C#. Базовый курс программках может быть еще более сложной. Но общая схема внедрения оператора цикла будет применима и в этих более сложных случаях. Цикл не прекращается, пока не будут введены правильные (по смыслу задачки) данные 6.4. Операторы цикла - В. В. Подбельский Язык C#. Базовый курс.


Оператор do (оператор "повторять") именуется оператором цикла с постусловием. Он имеет последующий вид:

do

тело_цикла

while (выражение-условие);

При входе в цикл do doс постусловием тело_цикла хотя бы один 6.4. Операторы цикла - В. В. Подбельский Язык C#. Базовый курс раз тело_цикла непременно производится. Потом рассчитывается выражение-условие и, если его значение равно true, вновь производится тело_цикла. При обработке неких последовательностей применение цикла с постусловием оказывается удобнее, чем цикла с предусловием. Это 6.4. Операторы цикла - В. В. Подбельский Язык C#. Базовый курс бывает в тех случаях, когда обработку необходимо заканчивать не доперед, а после возникновения концевого признака.

К выражению-условию в цикле do требования те же, что и для цикла while – оно 6.4. Операторы цикла - В. В. Подбельский Язык C#. Базовый курс должно изменяться при итерациях или за счет операторов тела цикла, или при вычислениях значения выражения-условия.

В предшествующей программке цикл с предусловием можно поменять таким циклом с постусловием:.

do

{ Console.Write ("Введите имя:");

name 6.4. Операторы цикла - В. В. Подбельский Язык C#. Базовый курс = Console.ReadLine();}

while (name=="");


Оператор

Оператор параметрического ц цикла for либо цикл вида имеет формат:

for ( инициализатор_цикла;

выражение_условие;

завершающее_выражение)

тело_цикла

ИнициализаторИнициализатор_цикла – выражение либо определение объектов 1-го типа 6.4. Операторы цикла - В. В. Подбельский Язык C#. Базовый курс. Обычно тут определяются и инициализируются некоторые характеристики цикла. Обратим внимание, что эти характеристики должны быть только 1-го типа. Если в качестве инициализатора_цикла употребляется не определение, а выражение, то в большинстве случаев его операнды 6.4. Операторы цикла - В. В. Подбельский Язык C#. Базовый курс разбиты запятыми. Все выражения, входящие в инициализатор цикла, рассчитываются только один раз при входе в цикл. Инициализатор_цикла в цикле for всегда заканчивается точкой с запятой, т.е. отделяется этим разделителем от следующего 6.4. Операторы цикла - В. В. Подбельский Язык C#. Базовый курс выражения-условия, которое также заканчивается точкой с запятой. Даже при отсутствии for в цикле for в цикле инициализатора_цикла, выражения-условия и завершающего_выражения разделяющие их знаки "точка с запятой 6.4. Операторы цикла - В. В. Подбельский Язык C#. Базовый курс" всегда находятся. Другими словами в заголовке цикла for всегда имеются три два знака ';'.

Выражение-условие такое же, как и в циклах while и do. Если оно равно false, то выполнение цикла 6.4. Операторы цикла - В. В. Подбельский Язык C#. Базовый курс прекращается. В случае отсутствия выражения-условия последующий за ним разделитель "точка с запятой" сохраняется, и подразумевается, что значение выражения_условия всегда поистине.

Завершающее_выражение (в цикле for) – довольно нередко представляет собой последовательность скалярных выражений, разбитых 6.4. Операторы цикла - В. В. Подбельский Язык C#. Базовый курс запятыми. Эти выражения рассчитываются на каждой итерации после выполнения операторов тела цикла, другими словами перед последующей проверкой выражения-условия.

Тело_цикла, как уже сказано, может быть блоком, отдельным оператором и пустым 6.4. Операторы цикла - В. В. Подбельский Язык C#. Базовый курс оператором. Определенные в инициализаторе цикла объекты есть исключительно в заголовке и в теле цикла. Если результаты выполнения цикла необходимы после его окончания, то их необходимо сохранять во наружных относительно цикла объектах.

В последующей 6.4. Операторы цикла - В. В. Подбельский Язык C#. Базовый курс программке применены три формы оператора for. В каждом из циклов решается одна и та же задачка суммирования квадратов первых k членов натурального ряда:

// 06_02.cs - параметрический цикл (цикл вида).

using System;

class 6.4. Операторы цикла - В. В. Подбельский Язык C#. Базовый курс Program

{

static void Main()

{

int k = 3, s = 0, i = 1;

for (; i <= k; i++)

s += i * i;

Console.WriteLine("Сумма = " + s);

s = 0; k = 4; // Исходные значения s, k.

for (int j = 0; j < k; )

s 6.4. Операторы цикла - В. В. Подбельский Язык C#. Базовый курс += ++j * j;

Console.WriteLine("Сумма = " + s);

for (i = 0, s = 0, k = 5; i <= k; s += i * i, i++);

Console.WriteLine("Сумма = " + s);

}

}

Итог выполнения программки:

Сумма = 14

Сумма = 30

Сумма = 55

Все переменные в первом цикле наружные 6.4. Операторы цикла - В. В. Подбельский Язык C#. Базовый курс, отсутствует инициализатор цикла, в оканчивающем выражении заголовка меняется параметр цикла i. После выполнения цикла итог сохраняется в переменной s и выводится. Перед вторым циклом s обнуляется, а переменной k присваивается значение 4. Инициализатор 6.4. Операторы цикла - В. В. Подбельский Язык C#. Базовый курс второго цикла определяет локализованную в цикле переменную j. В заголовке отсутствует оканчивающее выражение, а параметр цикла j меняется в его теле (вне заголовка). Инициализатор третьего цикла – выражение, операнды которого разбиты запятыми. В этом выражении подготавливается 6.4. Операторы цикла - В. В. Подбельский Язык C#. Базовый курс выполнение цикла – обнуляются значения i и s, и присваивается значение 5 переменной k. Остальное, надеюсьдолжно быть, понятно.

Итак, снова проследим последовательность выполнения цикла for. Определяются и инициируются объекты, другими словами либо 6.4. Операторы цикла - В. В. Подбельский Язык C#. Базовый курс рассчитывается выражение инициализатора_цикла. Рассчитывается значение выражения-условия. Если оно равно true, производятся операторы тела_цикла. Потом рассчитывается оканчивающее выражение, вновь рассчитывается выражение-условие, и проверяется его значение. Дальше цепочка действий повторяется. Оператору for 6.4. Операторы цикла - В. В. Подбельский Язык C#. Базовый курс может быть поставлен в соответствие последующий блок:

{

инициализатор_цикла;

while (выражение-условие) {

операторы_тела_цикла

завершающее_выражение;

}

}

При выполнении цикла for выражение-условие может изменяться или при вычислении его значений, или 6.4. Операторы цикла - В. В. Подбельский Язык C#. Базовый курс под действием операторов тела цикла, или под действием оканчивающего выражения. Если выражение-условие не меняется или отсутствует, то цикл нескончаем. Последующий оператор обеспечивает нескончаемое выполнение пустого оператора:

for( ; ;); // Нескончаемый цикл

Разрешено и обширно употребляется вложение 6.4. Операторы цикла - В. В. Подбельский Язык C#. Базовый курс всех циклов в любые циклы.

Разрешено и обширно употребляется вложение всех циклов в любые циклы.

Чтоб проиллюстрировать способности циклов и показать ещё несколько примеров приёмов программирования на C# , разглядим задачку об 6.4. Операторы цикла - В. В. Подбельский Язык C#. Базовый курс оценке машинного нуля относительно данного числового значения.

В предшествующей главе, посвящённой связи типов языка с классами .NET Framework, мы узнали, что для классов вещественных чисел введено постоянное статическое поле Epsilon, значение которого – меньшее 6.4. Операторы цикла - В. В. Подбельский Язык C#. Базовый курс хорошее от нуля значение, которое может принимать переменная данного вещественного типа. При решении вычислительных задач время от времени требуется использовать не мало допустимые значения вещественных чисел, а число, которое пренебрежимо не достаточно 6.4. Операторы цикла - В. В. Подбельский Язык C#. Базовый курс относительно другого числа, принятого за базисное. Время от времени это маленькое число именуют машинным нулём, относительно базисной величины.

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

/ 06_03.cs - циклы и машинный нуль.

using System;

class Program

{

static void Main()

real <= 0);

for (estimate = 0, zero = real; estimate != real; zero /= 2.0)

estimate = real + zero;

Console.WriteLine("Машинный нуль: " + zero);



}

Итог выполнения 6.4. Операторы цикла - В. В. Подбельский Язык C#. Базовый курс программки:

Введите положительное число: -16

Введите положительное число: 20

Введите положительное число: 23

Машинный нуль: 6,38378239159465E-16

В программке два цикла. Цикл с постусловием служит для "наблюдения" за корректностью ввода начального числового значения. От юзера требуется, чтоб он 6.4. Операторы цикла - В. В. Подбельский Язык C#. Базовый курс ввел положительное число. Способ TryParse() класса double анализирует вводимую юзером строчку знаков. Если она корректно представляет вещественное число, то способ TryParse() возвращает значение true и присваивает значение введенного числа аргументу real 6.4. Операторы цикла - В. В. Подбельский Язык C#. Базовый курс. Выражение_условие цикла do (размещённое в скобках после while), поистине, если способ TryParse() вернёт значение false либо значение переменной real не положительное. В данном случае цикл повторяется и юзер повторно лицезреет приглашение «Введите положительное 6.4. Операторы цикла - В. В. Подбельский Язык C#. Базовый курс число».

Как юзер введет положительное значение переменной real, начинает производиться 2-ой цикл. В конце каждой итерации в два раза миниатюризируется значение переменной zero. Цикл производится до того времени, пока сумма значения real 6.4. Операторы цикла - В. В. Подбельский Язык C#. Базовый курс с zero не равна значению real. Равенство достигается в этом случае, когда значение zero становится пренебрежимо малой величиной относительно real. Таким макаром, допустимое достигнутое значение zero можно считать машинным нулём относительно real 6.4. Операторы цикла - В. В. Подбельский Язык C#. Базовый курс.

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


63-rrrrrrryos-r-rrrr-ssrssryos-rrssrrsssrr-ryorryo-rsrryosryorrrsrrrr-rrsrrrrrrryos-r-sssrrrrr-srrrrrsrrr-rrrryosrrr-rrrrrr-srrrr-srryosrrsr-rrrryosryoryo-srrsryorrsrrrr-rsrrr-rrrrsrr-rrsryoryo.html
63-slovar-bazovih-termini-i-opredelenij-uchebno-metodicheskij-kompleks-disciplini-dogovornoe-pravo-specialnost.html
63-sovmestnaya-deyatelnost-obrazovatelnogo-uchrezhdeniya-semi-po-duhovno-nravstvennomu-razvitiyu-i-vospitaniyu-obuchayushihsya.html