Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Desktop_1 / 2010_150 Акчурин - Программирование на языке C#.doc
Скачиваний:
171
Добавлен:
10.06.2015
Размер:
4.82 Mб
Скачать
    1. Команда goto и метки

Команда gotoв первых языках программирования была основой для реализации циклов и многократных переходов, вследствие чего возникла запутанность кода программы. Известный программист Дейкстра своим ученикам за использованиеgotoставил неуды. Поэтому опытные программисты стараются ее не использовать, но для того чтобы узнать все возможности языка, рассмотрим и ее.

Инструкция goto используется следующим образом:

  • В коде программы создается метка с именем (например, M).

  • Организуется переход на эту метку инструкцией goto M.

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

Пример. Программа использует цикл (метка M - начало), в котором в консоль выводится последовательность чисел.

using System;

public class Labels

{

public static int Main()

{

int i = 0;

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

i = i + 1;

if (i < 10) goto M;

}

}

    1. Цикл for

Это цикл с заданным числом повторений. В нем изменение индекса цикла заложено в инструкцию. Задаются - начальное значение индекса, условие выполнения, правило изменения индекса после итерации. Разделители для параметров инструкции for – точка с запятой (;)/

Синтаксис инструкции:

for (индекс цикла = начало; условие выполнения; изменение индекса)

{

Инструкции тела цикла;

}

Пример. Программа использует цикл, в котором в консоль выводится последовательность чисел от 0 до 9.

using System;

public class Labels

{

public static int Main()

{

for (int i = 0; i < 10; i++)

{

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

}

}

}

    1. Цикл while

Это цикл с неизвестным числом повторений с предусловием. Тело цикла повторяется, пока выполняется условие. Тело цикла первый раз выполняется с проверкой условия. Ее синтаксис выглядит следующим образом:

while (Условие)

{

Инструкции тела цикла;

}

Пример. Программа использует цикл, в котором в консоль выводится последовательность чисел от 0 до 9.

using System;

public class CycleWhile

{

public static int Main()

{

int i = 0;

while (i < 10)

{

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

i = i + 1;

}

}

}

    1. Цикл do- while

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

Эта циклическая инструкция работает по принципу: «Пока выполняется условие — повторить». Ее синтаксис выглядит следующим образом:

do

{

Инструкции тела цикла;

}

while (Условие)

Пример. Программа использует цикл, в котором в консоль выводится последовательность чисел.

using System;

public class DoWhile

{

public static int Main()

{

int i = 0;

do

{

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

i = i + 1;

}

while (i < 10)

}

}

    1. Безусловные переходы

Бывают ситуации, когда необходимо прекратить выполнение цикла досрочно (до того как перестанет выполняться условие), не прерывая при этом цикла. Для таких случаев удобно использовать команды break и continue.

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

Программа выполняет поиск не простых чисел (которые имеют делитель без остатка) в интервале от 2 до 11. В программе используется два цикла for.

Первый цикл перебирает все числа делимого от 11 до 2. Переменная i инициализируется значением 11 и затем уменьшается на 1 с каждой итерацией. Второй цикл перебирает все числа делителя от ( j= i -1 ) до 2.

В теле внутреннего цикла проверяется условие: делится ли число i на число j без остатка. Если условие выполняется, то число i нельзя отнести к разряду простых чисел, и флаг, определяющий число как простое, устанавливается в false. Дальнейший поиск не имеет смысла. Цикл завершается командой break.

using System;

namespaceBreak

{

classProgram

{

staticvoidMain()

{

bool IsPrimeNumber = true; // устанавливаем флаг простого числа

for(inti = 11; i > 1; i--)

{

for(intj = i - 1; j > 1; j--)

{

IsPrimeNumber = true;

// если есть делитель с нулевым остатком, сбрасываем флаг

if (i % j == 0)

{

IsPrimeNumber = false; // дальнейшая проверка бессмысленна

Console.WriteLine("{0} — не простое число", i);

Console.WriteLine("Нажмите любую клавишу");

Console.ReadKey();

}

if(IsPrimeNumber ==false)break;

}

}

}

}

}

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

Пример. В нем в консоль выводятся нечетные числа в заданном диапазоне. Поверка осуществляется проверкой остатка от деления на 2, для нечетных чисел он не равен 0. В цикле перебираются все числа от 1 до 100. Если очередное число четное, то итерация завершается командой continue с пропуском последующих инструкций тела цикла и переходом к следующей итерации.

using System; class PoiskNechet

{

static void Main()

{

for ( int i = 100; i > 0; i--)

{

if ( i%2 ==0 ) continue;

Console.WriteLine("{0} - нечетное число", i);

Console.WriteLine("Нажмите любую клавишу");

Console.ReadKey();

}

} }

Соседние файлы в папке Desktop_1