Хотите получать новые статьи блога
прямо себе на почту?
Укажите свой e-mail:


WorldSkills Russia
Яндекс.Метрика Интернет-издание Профобразование

Операторы циклов

0

Лекция №8

Тема: Операторы циклов

План:

  1. Цикл с предусловием while и цикл с постусловием do … while
  2. Цикл с параметром for
  3. Вложенные циклы
  4. Цикл перебора foreach и его использование при обработке массивов

Операторы цикла используются для организации многократного повторяющихся вычислений..

К операторам цикла относятся:

  • Цикл с предусловием while
  • Цикл с постусловием do … while
  • Цикл с параметром for
  • Цикл перебора foreach

1. Цикл с предусловием while и цикл с постусловием do … while

Оператор while используется в том случае, когда количество итераций (повторений) заранее неизвестно.

Существует две формы оператора:

  • префиксная (цикл с предусловием)
  • постфиксная (цикл с постусловием)

Синтаксис цикла с предусловием:

[c-sharp]
while (<Условие>) <Тело цикла>;
[/c-sharp]

Здесь:

  • while — зарезервированное слово;
  • <Условие> — выражение типа bool;
  • <Тело цикла> — произвольный оператор или блок операторов.

Перед каждым выполнением тела цикла анализируется значение условия; если оно истинно, то выполняется тело цикла, и управление передаётся на повторную проверку условия; если значение условия ложно — цикл завершается.

Если результат выражения окажется ложным при первой проверке, то тело цикла не выполнится ни разу.

Синтаксис оператора с постусловием:

[c-sharp]
do <Тело цикла> while (<Условие>);
[/c-sharp]

Здесь:

  • do … while — зарезервированное слово;
  • <Тело цикла> — произвольный оператор или блок операторов;
  • <Условие> — выражение типа bool.

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

Сначала выполняется тело цикла, а затем анализируется значение условия: если оно ложно, то тело цикла повторяется, если истинно — цикл завершается.

Так как условие проверяется после выполнения тела цикла, то в любом случае тело цикла выполняется хотя бы один раз.

Очевидно, что в операторах while и do … while проверяемое условие должно изменяться в теле цикла, в противном случае цикл никогда не завершится естественным образом, и программа «зациклится». Поэтому внутри тела цикла должны находиться операторы, приводящие к изменению значения выражения так, чтобы цикл мог корректно завершиться.

Пример:

Рассмотрим программу вывода на экран целых чисел из интервала от 1 до n.

Листинг 1. Цикл с предусловием

[c-sharp]
static void Main(string[] args)
{
Console.Write("n=");
int n = int.Parse(Console.ReadLine());
int i = 1;
while (i <= n) //пока i меньше или равно n
//выводим i на экран, затем увеличиваем его на 1
Console.Write(" " + i++);
Console.ReadLine();
}
[/c-sharp]

Листинг 2. Цикл с постусловием

[c-sharp]
static void Main(string[] args)
{
Console.Write("n=");
int n = int.Parse(Console.ReadLine());
int i = 1;
do
//выводим i на экран, затем увеличиваем его на 1
Console.Write(" " + i++);
while(i<=n); //пока i меньше или равно n
Console.ReadLine();
}
[/c-sharp]

Циклы в языке программирования C#
Рис. 1. Результат работы программы в обоих случаях (Листинг 1 и Листинг 2)

2. Цикл с параметром for

Оператор счётного цикла for представляет собой удобную конструкцию, позволяющую выполнять некоторое действие заданное n-e количество раз.

Его синтаксис:

[c-sharp]
for (<Инициализация>; <Выражение>; <Модификация>) <Оператор>;
[/c-sharp]

Инициализация используется для объявления и/или присвоения начальных значений величинам, используемым в цикле в качестве параметров (счётчиков). В этой части можно записать несколько операторов, разделённых запятой. Областью действия переменных, объявленных в части инициализации цикла, является цикл и вложенные блоки. Инициализация выполняется один раз в начале исполнения цикла.

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

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

Оператор (простой или составной) представляет собой тело цикла.

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

Листинг 3. Цикл с параметром

[c-sharp]
static void Main(string[] args)
{
Console.Write("n=");
int n = int.Parse(Console.ReadLine());
for (int i = 1; i <= n; ) // блок модификации пустой
Console.Write(" " + i++);
Console.ReadLine();
}
[/c-sharp]

Циклы в языке программирования C#
Рис. 2. Результат работы программы в обоих случаях (Листинг 3)

3. Вложенные циклы

Циклы могут быть простые или вложенные (кратные, цикл в цикле). Вложенными могут быть циклы любых типов: while, do … while, for. Каждый внутренний цикл должен быть полностью вложен во все внешние циклы . «Пересечения» циклов не допускается.

Пример:

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

2 2 2 2 2
2 2 2 2 2
2 2 2 2 2
2 2 2 2 2
2 2 2 2 2

Листинг 4. Пример программы с вложенным циклом

[c-sharp]
static void Main(string[] args)
{
for (int i = 1; i <= 4; ++i, Console.WriteLine())
for (int j = 1; j <= 5; ++j)
Console.Write(" " + 2);
Console.ReadLine();
}
[/c-sharp]

Вложенные циклы в языке программирования C#
Рис. 3. Результат работы программы (Листинг 4)

В 3-ей cтроке кода в блоке модификации содержится два оператора ++i и Console.WriteLine(). В данном случае после каждого увеличенного параметра i на 1 курсор будет переводиться на новую строку.

4. Цикл перебора foreach
и его использование при обработке массивов

Данный цикл будет рассмотрен позже.