Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
38
Добавлен:
29.02.2016
Размер:
5 Mб
Скачать

Цикл с постусловием do while

Оператор цикла dowhileтакже организует выполнение одного оператора (простого или составного) неизвестное заранее число раз. Однако в отличие от циклаwhileусловие завершения цикла проверяется после выполнения тела цикла. Это значит, что цикл do-while всегда выполняется хотя бы один раз.

Формат цикла do while:

do S while (B);

где В– выражение, истинность которого проверяется (условие завершения цикла);S– тело цикла - оператор (простой или блок).

Сначала выполняется оператор S, а затем анализируется значение выраженияВ: если оно истинно, то управление передается операторуS, если ложно - цикл завершается, и управление передается на оператор, следующий за условиемB. Так как условиеВпроверяется после выполнения тела цикла, то в любом случае тело цикла выполнится хотя бы один раз.

Другая запись

Do

{

<код который выполняется в цикле>

}

While <условие>;

В результате вычисления <условия> получается логическое значение.

Обычно его используют, когда проверку нужно выполнить после того, как прошла хотя бы одна итерация.

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

Он относится к тому типу циклов, которые выполняются заранее заданное количество раз и сами отвечают за организацию счетчика цикла. Для организации цикла for требуется следующая информация:

  • Начальное значение для инициализации переменной цикла

  • Условие для продолжения выполнения цикла, зависящее от переменной цикла

  • Операция, которая будет выполняться над переменной цикла по завершении очередного прохода цикла

Например, если необходимо организовать цикл с переменной цикла, изменяющейся от 1 до 10 с шагом, равным единице, то в этом случае начальное значение равно 1, условием для продолжения цикла будет "переменная цикла меньше или равна 10, а операцией, выполняющейся по окончание каждого прохода цикла, будет прибавление значению переменной цикла единицы. Эта информация должна быть размещена в структуре цикла for следующим образом:

for (<итщиализация>; <условие>; <операция>)

{

<код, выполняющийся в цикле>

}

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

static void Main()

{

Console.Write("N= ");

int n=int.Parse(Console.ReadLine());

for (int i=1; i<=n;) //блок модификации пустой

Console.Write(" " + i++);

}

Операторы безусловного перехода

В С# есть несколько операторов, изменяющих естественный порядок выполнения команд: оператор безусловного перехода goto, оператор выходаbreak, оператор перехода к следующей итерации циклаcontinue, оператор возврата из методаreturn и оператор генерации исключенияthrow.

Иногда возникают ситуации, когда требуется более тонкий контроль за выполнением кода в цикле. В С# для этих целей предусмотрено четыре команды.

• break — приводит к немедленному завершению цикла.

• continue — приводит к немедленному завершению текущего прохода цикла (вычисления продолжаются со следующего прохода).

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

• return — выводит из цикла и из функции, в которой он находится

Команда break позволяет просто выйти из цикла, при этом управление передается на первую строку кода после цикла. Например:

int i = 1;

while (i <= 10)

{

if (i == 6 )

break;

Console.WriteLine("{0}",i++) ;

Этот код выведет числа от 1 до 5, поскольку когда значение переменной i достигнет 6, команда break приведет к выходу из цикла.

Команда continue прекращает выполнение текущего прохода цикла, а не всего цикла. Например:

int i ;

for (i = 1; i <= 10; i++)

{

if ( ( i % 2) == 0)

continue;

Console.WriteLine(i) ;

}

Третий способ предполагает использование оператора goto, с которым вы познакомились ранее. Например:

int i =1 ;

while (i <= 10)

{

if (i == 6)

goto exitPoint;

Console.WriteLine("{О}", i++)

Console.WriteLine("Этот код никогда не будет выполняться! ");

exitPoint;

Console.WriteLine("Этот код будет выполнен после того, как произойдет выход из цикла посредством goto. ");

Обратите внимание на то, что выход из цикла посредством команды goto допустим (разве что несколько неряшлив), а вот использование goto для входа в цикл извне запрещено.

Оператор безусловного перехода goto

Оператор безусловного перехода gotoимеет формат:

goto<метка>;

В теле той же функции должна присутствовать ровно одна конструкция вида:

<метка>: <оператор>;

Оператор gotoпередает управление на помеченный меткой оператор. Рассмотрим пример использования оператораgoto:

staticvoidMain()

{

floatx;

metka:Console.WriteLine("x="); //оператор,помеченныйметкой

x = float.Parse(Console.ReadLine());

if (x!=0) Console.WriteLine("y({0})={1}", x, 1 / x );

else

{

Console.WriteLine("функция не определена");

goto metka;// передача управление метке

}

}

Следует учитывать, что использование оператора gotoзатрудняет чтение больших по объему программ, поэтому использовать метки нужно только в крайних случаях, например, в оператореswitch.

Оператор выхода break

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

Мы уже применяли оператор breakдля выхода из оператораswitch, аналогичным образом он может применяться для выхода из других операторов.

Оператор перехода к следующей итерации цикла continue

Оператор перехода к следующей итерации цикла continueпропускает все операторы, оставшиеся до конца тела цикла, и передает управление на начало следующей итерации (повторение тела цикла). Рассмотрим операторcontinueна примере.

staticvoidMain()

{

Console.WriteLine("n=");

int n = int.Parse(Console.ReadLine());

for (int i = 1; i <= n; i++)

{

if (i % 2 == 0) continue;

Console.Write(" " + i);

}

}

Соседние файлы в папке НПП_6_з_2013