Российский Государственный Технологический Университет им. К.Э. Циолковского
Опубликован: 02.03.2007 | Доступ: свободный | Студентов: 5636 / 790 | Оценка: 3.96 / 3.45 | Длительность: 27:04:00
ISBN: 978-5-9556-0086-4
Лекция 3:

Управляющие операторы и методы

< Лекция 2 || Лекция 3: 123456 || Лекция 4 >

do ... while

ОператорDOWHILE ::= do Оператор while (УсловиеПродолжения)
УсловиеПродолжения ::= БулевоВыражение
Оператор ::= Оператор
::= БлокОператоров

Разница с ранее рассмотренным оператором цикла состоит в том, что здесь сначала выполняется оператор (блок операторов), а затем проверяется условие продолжения оператора.

for

ОператорFOR ::=
for ([ВыраженияИнициализации];[УсловиеПродолжения];[ВыраженияШага]) Оператор 
ВыраженияИнициализации ::= СписокВыражений
СписокВыражений ::= [СписокВыражений ,] Выражение
УсловиеПродолжения ::= БулевоВыражение
ВыраженияШага ::= [СписокВыражений ,] Выражение

Здесь

Оператор ::= Оператор
::= БлокОператоров

ВыраженияИнициализации, УсловиеПродолжения, ВыраженияШага в заголовке оператора цикла for могут быть пустыми. Однако наличие пары символов ' ; ' в заголовке цикла for обязательно.

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

Следует иметь в виду, что оператор объявления также строится на основе списка выражений (выражений объявления), состоящих из спецификаторов типа, имен и, возможно, инициализаторов. Этот список завершается точкой с запятой, что позволяет рассматривать список выражений инициализации как самостоятельный оператор в составе оператора цикла for. При этом область видимости имен переменных, определяемых этим оператором, распространяется только на операторы, относящиеся к данному оператору цикла. Это значит, что переменные, объявленные в операторе инициализации данного оператора цикла, НЕ МОГУТ быть использованы непосредственно после оператора до конца блока, содержащего этот оператор. А следующие друг за другом в рамках общего блока операторы МОГУТ содержать в заголовках одни и те же выражения инициализации.

операторFOR также невозможно построить на основе одиночного оператора объявления.

foreach

ОператорFOREACH ::=
foreach (ОбъявлениеИтератора in ВыражениеIN) Оператор
ОбъявлениеИтератора ::= ИмяТипа Идентификатор
ВыражениеIN ::= Выражение 
Оператор ::= Оператор
::= БлокОператоров

ИмяТипа – обозначает тип итератора.

identifier – обозначает переменную, которая представляет элемент коллекции.

ВыражениеIN – объект, представляющий массив или коллекцию.

Этим оператором обеспечивается повторение множества операторов, составляющих тело цикла, для каждого элемента массива или коллекции. После перебора ВСЕХ элементов массива или коллекции и применения множества операторов для каждого элемента массива или коллекции, управление передается следующему за Оператором FOREACH оператору (разумеется, если таковые имеются).

Область видимости имен переменных, определяемых этим оператором, распространяется только на операторы, относящиеся к данному оператору цикла:

int[] array = new int[10]; // Объявили и определили массив
foreach (int i in array) {/*:::::*/}; // Для каждого элемента массива надо сделать...

Специализированный оператор, приспособленный для работы с массивами и коллекциями. Обеспечивает повторение множества (единичного оператора или блока операторов) операторов для КАЖДОГО элемента массива или коллекции. Конструкция экзотическая и негибкая. Предполагает выполнение примитивных последовательностей действий над массивами и коллекциями (начальная инициализация или просмотр ФИКСИРОВАННОГО количества элементов). Действия, связанные с изменениями размеров и содержимого коллекций, в рамках этого оператора могут привести к непредсказуемым результатам.

goto, break, continue

goto в операторе switch уже обсуждалось.

Второй вариант использования этого оператора — непосредственно тело метода.

Объявляется метка (правильнее "оператор с меткой"). Оператор может быть пустым. Метка-идентификатор отделяется от оператора двоеточием. В качестве дополнительного разделителя могут быть использованы пробелы, символы табуляции и перехода на новую строку. Метка, как и любое другое имя, подчиняется правилам областей видимости. Она видна в теле метода только в одном направлении: из внутренних (вложенных) блоков. Поэтому оператор перехода

goto ИмяПомеченногоОператора;

позволяет ВЫХОДИТЬ из блоков, но не входить в них.

Обычно об этом операторе говорится много нехороших слов как о главном разрушителе структурированного программного кода, и его описание сопровождается рекомендациями к его НЕИСПОЛЬЗОВАНИЮ.

Операторы

break;

и

continue;

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

< Лекция 2 || Лекция 3: 123456 || Лекция 4 >
kewezok kewezok
kewezok kewezok
Елена Шляхт
Елена Шляхт
Объясните плиз в чем отличие а++ от ++а
Почему результат разный?
int a=0, b=0;
Console.WriteLine(a++); //0
Console.WriteLine(++b); //1
a++;
++b;
Console.WriteLine(a); //2
Console.WriteLine(b); //2