Switch (a)

{ case 1:out = "Единица";break;

case 2:out = "Двойка";break;

case 3:out = "Тройка";break;

default:out = "Другое число"; }

Здесь, если значение а равно единице, переменной out присваивается значение "Единица". Аналогично — для двойки и тройки. Если а имеет другое значение, отличное от единицы, двойки или тройки, исполняется блок кода секции default, и переменная out получает значение "другое число".

Секция default может отсутствовать; в таком случае для значений, не перечисленный в секциях case, не будет исполняться никакой код. Также можно (теоретически) опустить ключевое слово break, но в этом случае будет выполняться весь код от секции, где встретилось нужное значение, вплоть до конца оператора switch, что не всегда нужно. Изменим наш пример, чтобы проиллюстрировать это.

switch (a)

{ case 1:out = "Единица";

case 2:out = "Двойка";

case 3:out = "Тройка";

default:out = "Другое число";}

В этом случае для любого значения а переменная out всегда будет содержать строку "Другое число". Это произойдет потому, что будут выполнены все блоки, начиная от блока соответствующей секции до самого конца оператора switch, т. е. до секции default, которая присвоит переменной out значение "Другая строка".

Циклы

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

Цикл for

Цикл for выполняется, пока некое условие остается истинным (возвращает true). Обычно, он используется для выполнения фрагмента кода определенное количество раз. В этом случае целое число, подсчитывающее, сколько раз был выполнен этот фрагмент кода, помещается в переменную, называемую счетчиком цикла. А блок кода, который выполняется в цикле, является телом цикла.

for ([Выражение инициализации]; [Условие]; [Выражение инкремента]).{Тело цикла}

Выражение инициализации, как правило, присваивает переменной-счетчику начальное значение. Далее проверяется условие, и, если его значение истинно, тело цикла выполняется. После этого выражение инкремента изме­няет значение счетчика, снова проверяется условие, и так до тех пор, пока условие не станет ложным (false). Такие циклы со счетчиком встречаются в программах очень часто.

for (i = 1; i < 11; i++) { a += 3; b = i * 2 + 1;

Этот цикл будет выполнен 10 раз. Обратите внимание на выражение ини­циализации.и условие. Мы присваиваем счетчику i начальное значение 1 и после каждого выполнения тела цикла увеличиваем его на единицу. Цикл перестанет выполняться, когда значение счетчика увеличится до 11, и усло­вие станет ложным.

Заметьте также, что мы использовали счетчик цикла в одном из выражений тела цикла — это вполне допустимо. Счетчик i будет содержать последова­тельно возрастающие значения от 1 до 10, которые можно использовать в вычислениях. (Как и происходит в рассмотренном примере.)

Значение счетчика цикла совсем не обязательно именно инкрементировать. Можно декрементировать его или вообще изменять на значения, отличные от единицы. Чтобы сделать это, просто впишите соответствующее выражение в оператор цикла. В двух следующих примерах это проиллюстрировано:

for (i = 10; i > 0; i—) { a += 3; b = i * 2 + 1; }

for (i = 2; i < 21; i.+ =2) b = i * 2 + 1;

В первом примере значение счетчика декрементируется. Начальное его значение равно 10. Цикл выполнится 10 раз и завершится, когда счетчик будет содержать 0; при этом значения последнего будут последовательно уменьшаться от 10 до 1.

Во втором примере начальное значение счетчика равно 2, а конечное - 21; цикл выполнится опять же 10 раз. А все потому, что значение счетчика увеличивается на 2 и последовательно принимает значения 2, 4, 6,..., 20.

В особом вырожденном случае цикл for может даже не содержать тела. В этом случае "полезную нагрузку" цикла несет на себе выражение инкремента.

Оператор, (запятая)

Запятая (,) используется, в основном, в выражениях инкремента циклов for. Он позволяет выполнять то одно, то другое выражение инкремента последовательно. Его формат таков:

{"Нечетное выражение"}, {"Четное выражение"}

При первом прохождении цикла выполняется "нечетное" выражение, при втором - "четное", при третьем - снова "нечетное" и т. д.

for (i = 0; j < 11; i++, j++) {a = i * 2 + 1; b = j /2-3; }

Оператор, (запятая) имеет самый низкий приоритет из всех операторов.

Цикл do-while

Цикл do-while во многом похож на цикл for, но в нем не используется счетчик. Цикл do-while выполняется до тех пор, пока остается истинным условие. Причем условие проверяется не до, а после выполнения тела цик­ла, так что цикл do-whiie выполнится хотя бы один раз, даже если условие с самого начала ложно.

do

... Тело цикла while ({Условие});

Вы можете использовать цикл do-while различными способами.

do {

а = а * i + 2;

i = ++i; } while (a < 100);

В рассмотренном выше примере проверяется наступление отвлеченного ус­ловия.

var а = 0, i = 1;

do {

а = а * i + 2;

i = ++i; }

while (i < 20);

А здесь мы уже используем счетчик, чье конечное значение ограничено. Конечно, в таких случаях удобнее использовать цикл for.

Цикл while

Цикл while напоминает своего родственника do-while, но условие проверя­ется перед выполнением тела цикла. Так что, если оно изначально ложно, цикл не выполнится ни разу.

while (Условие) {Тело цикла. }.

пример, аналогичный уже рассмотренному выше в связи с циклом do-while:

While (a < 100)

{

а =а * i + 2;

i =++i;

}

Операторы break и continue

Иногда бывает нужно прервать выполнение цикла. Для этого JavaScript пре­доставляет программистам операторы break и continue.

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

while (a < 100) { а = а * i + 2; if (a > 50) break; i = ++i; }

В этом примере мы прерываем выполнение цикла (но не программы), если значение переменной а превысит 50.

Оператор continue позволяет перезапустить цикл, т. е. оставить невыпол­ненными все последующие команды, входящие в тело цикла, и вернуться к его началу. Будет протестировано условие (цикл for, кроме того, выпол­нит выражение инкремента), и, если условие истинно, тело цикла начнет выполняться с начала.

while (a < 100) { i = ++i;

if (i > 9 && i < 11) continue; a = a * i + 2; }

Здесь мы пропускаем выражение вычисления а для всех значений i от, 10 до 20.

Полный формат операторов break и continue выглядит так.

break I continue [(Метка}]

Здесь метка помечает цикл, к которому применяется данный оператор break или continue. Формат метки таков.

{Имя метки}:... Выражение

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

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

Outer:

for (i = 0; i < 5; i++) { Inner:

for (j = 0; j < 5; j++) (if (j == 2)

continue Outer; else

a[i,j] = j + 1; } }

Здесь при равенстве значения переменной j двум в условном выражении, расположенном в теле внутреннего цикла, мы перезапускаем внешний цикл, помеченный как Outer. Если бы мы опустили имя метки в операторе continue, то перезапустился бы внутренний цикл inner.

Поддержка меток появилась в Internet Explorer и Navigator только с версий 4.0. В предыдущих версиях этих программ операторы break и continue использо­вались без указания метки.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: