Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
sukalova / Лабораторная работа_5.odt
Скачиваний:
4
Добавлен:
23.02.2016
Размер:
52.38 Кб
Скачать

Условная операция и условный оператор

Существует еще одна операция, позаимствованная из языка C. Но, она может показаться несколько необычной для начинающих, поэтому, сначала, я хочу напомнить, что: операция, это нечто, имеющее значение, которое, затем, можно использовать (присвоить чему нибудь или еще как). Например, сложение, это операция. Можно, например записать a=b+c. Переменная a получит значение равное значению операции сложения над операндами b и c.

Вооружившись таким определением операции, рассмотри условную операцию. Выглядит она так:

   (<логическое выражение>) ? выражение1 : выражение2

Значением этой операции будет значение выражения1, если условие истинно и значение выражения2, если условие ложно.

Например:

a = (b>c) ? b : c;     // a получит значение большего из b и c

a = ((b>c) ? b : c)+1; // a получит значение большего из b и c

                       // увеличенное на 1

a = (b % 2) ? "нечетное" : "четное";

Операторы

Оператор if

Условный оператор точно такой же как в языке C.

if (<логическое выражение>) оператор1;

[else оператор2;]

Выполняется он так: сначала вычисляется логическое выражение. Если оно истинно, то выполняется оператор1. Если же оно ложно, то вычисляется оператор2 (если таковой имеется). В качестве операторов могут использоваться любые операторы языка, в том числе и еще один if.

Здесь и далее, везде, где мы имеем право поставить один оператор, мы имеем право поставить и несколько операторов, заключенных в фигурные скобки. Такой "составной" оператор называется блоком.

Например:

if (a>b) document.write("А больше B");

else document.write("А НЕ больше B");

if (day==1) document.write("понедельник");

else if (day==2) document.write("вторник");

else if (day==3) document.write("среда");

else if (day==4) document.write("четверг");

else if (day==5) document.write("пятница");

else if (day==6) document.write("суббота");

else if (day==7) document.write("воскресенье");

else document.write("Ошибка: day="+day);

                                  

Цикл while, цикл for

Цикл while

И этот такой же как в языке C.

while (<логическое выражение>) оператор;

Сначала вычисляется логическое выражение. Если оно истинно, то выполняется оператор. Затем снова вычисляется логическое выражение. Если оно и на этот раз истинно - снова выполняется оператор и снова вычисляется логическое выражение.

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

Например:

var i = 0;

while (i<10) {

   document.write("*");

   i = i+1;

}

document.write(i);

В этом примере будет напечатано 10 звездочек, а, затем, число 10.

Еще пример:

var i = 0;

while (i>10) {

   document.write("*");

   i = i+1;

}

document.write(i);

Ни одной звездочки напечатано не будет, т.к. логическое выражение (i>10) ложно с самого начала. Просто будет напечатано число 0.

Последний пример:

var i = 0;

while (i<10) {

   document.write("*");

}

document.write(i);

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

Цикл for

Этот, довольно сложный цикл, также имеет двойника в языке C.

В принципе, без него можно и обойтись, потому, что все, что он делает, можно записать и с помощью простого цикла while, однако иногда цикл for приводит к более простым и изящным программам.

for (выражение1;выражение2;выражение3) оператор;

Выполняется он таким образом:

Вычисляется выражение1

Вычисляется выражение2

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

Вычисляется выражение3

Переход к шагу 2

Таким образом, мы можем записать полный эквивалент цикла for при помощи простого while.

выражение1;

while (выражение2) {

   оператор;

   выражение3          

}

Заметьте, что выражение1 вычисляется всегда и только один раз, в самом начале. Выражение2 всегда вычисляется хотябы один раз. И, наконец, выражение3 и оператор могут не вычисляться и ни разу в том случае, когда выражение2 изначально ложно.

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

Примеры:

// Печатаем 10 звездочек

for (var i=0; i<10; i++) document.write('*');

// Печатаем нечетные числа меньшие 100

for (var i=1; i<100; i+=2) document.write(i);

// Печатаем четные числа от 100 до 200

for (var i=100; i<=200; i+=2) document.write(i);

// Печатаем все степени числа 2 до 4096

for (var i=2; i<=4096; i*=2) document.write(i);

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