Опубликован: 05.08.2010 | Доступ: свободный | Студентов: 2850 / 381 | Оценка: 4.12 / 4.02 | Длительность: 10:07:00
Лекция 7:

Синтаксические основы JavaScript

< Лекция 6 || Лекция 7: 12 || Лекция 8 >

Условные операторы

Условные операторы изменяют ход выполнения программы в зависимости от некоего условия. Существуют конструкции if…then, условная операция ( ?) и переключатель switch. При разработке программ, использующих условные операторы, нужно учитывать, что как и в С++, при проверке равенства двух величин нужно писать a==b, а не a=b, т.к. выражение a=b в условном операторе будет расценено как оператор присваивания. Второе. При разработке составных условий выражение a>3 && b<5 обозначает операцию конъюнкции, т.е. должны выполняться оба условия. Выражение a>3 || b<5 обозначает дизъюнкцию, т.е. для истинности выражения достаточно выполнение хотя бы одного условия.

Оператор if..then

Синтаксис оператора if…then следующий:

If (Условие) {Действие 1} else {Действие 2}

В случае истинности условия выполняется первое действие, в противном случае - второе действие.

В предлагаемом примере сравниваются два числа, и находится наименьшее.

var a, b, c, str;
a = 1;
b = 300;
if (a < b) { c = a; }
else { c = b; }
str = "Минимальное значение из двух чисел равно " + c;
document.write(str);

Рис. 8.10.

Условная операция (оператор ?)

Оператор ? является сокращенной формой оператора if..then. Синтаксис его следующий:

Условие ? действие 1 : действие 2.

В случае истинности условия выполняется первое действие, в противном случае - второе.

var a, b, c, str;
 a = 80;
 b = 300;
//Оператор ? является сокращенной формой условного оператора if.. else
 a > b ? c = a : c = b;
 str = "Максимальное из двух чисел: " + c;
 document.write(str);

Рис. 8.11.

Переключатель switch

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

switch (выражение) {
	case вариант 1:
		код
		[break]
	case вариант 2:
		код
		[break]
…
[default:
	код]
}

В квадратные скобки заключены необязательные выражения. Сначала вычисляется выражение, указанное в круглых скобках сразу за ключевым словом switch. Полученное значение сравнивается с тем, которое указано в первом варианте. Если они не совпадают, то код этого варианта не выполняется и происходит переход к следующему варианту. Если же значения совпали, то выполняется код, соответствующий этому варианту. При этом если не указан оператор break, то выполняются коды и остальных вариантов, пока не встретится оператор break. Это же правило действует и для остальных вариантов.

В предлагаемом ниже примере в зависимости от выбранного номера дня недели на экран выводится его шуточный комментарий.

var DayNumber, str;
DayNumber = 5;

switch (DayNumber) {
    case 1:
        str = "Отдых от рабочего дня";
        break
    case 2:
        str = "Поготовка к рабочему дню";
        break
    case 3:
        str = "Рабочий день";
        break
    case 4:
        str = "Отдых от рабочего дня";
        break
    case 5:
        str = "Подготовка к выходному дню";
        break
    case 6:
        str = "Первый выходной день";
        break
    case 7:
        str = "Второй выходной день";
        break
}
document.write(str);

Рис. 8.12.

Операторы цикла

Операторы цикла выполняют некоторую последовательность действий до тех пор, пока истинно (ложно) некое условие. Помимо условия операторы цикла содержат также итерационную переменную, которая на каждом шаге работы цикла претерпевает определенные изменения. В JavaScript предусмотрены три оператора цикла: for, while и do-while. В операторе цикла for заранее известно количество итераций. Его удобно использовать при работе с массивами. Допускаются вложенные операторы цикла for. В циклах while и do-while мы заранее не знаем количество итераций. Их удобно использовать в задачах математического моделирования и при сканировании различного рода последовательностей.

Оператор for

Синтаксис оператора for следующий:

for ([начальное_выражение] ; [условие] ; [выражение обновления])
{
код
}

В предлагаемом примере мы найдем сумму чисел от нуля до десяти. Как видно из листинга, вначале переменной sum присваивается значение 0, затем на каждом шаге цикла прибавляется по единице.

var i,n, sum,str;
sum = 0;
n = 10;

for (i = 1; i <= n; i++) {
    sum += i;
}
str = "Сумма первых " + n + " членов ряда = " + sum;
alert(str);

Рис. 8.13.

Оператор while

Синтаксис этого оператора следующий:

while (условие) {
код
}

При выполнении этого оператора сначала проверяется условие, указанное в заголовке, т. е. в круглых скобках справа от ключевого слова while. Если оно истинно, то выполняется код в теле оператора цикла, заключенный в фигурные скобки. В противном случае код не выполняется. При выполнении кода (завершении первой итерации) вычислительный процесс возвращается к заголовку, где снова проверяется условие, и т. д.

В предлагаемом примере решается предыдущая задача. Цикл while работает до тех пор, пока итерационная переменная i не станет равна десяти.

var i,n, sum,str;
  sum = 0;
  n = 10;
  i = 1;
        
while(i<=n)
{
    sum += i;
    i++;
}
str = "Сумма первых " + n + " членов ряда = " + sum;
document.write(str);

Рис. 8.14.

Оператор do-while

Оператор do-while (делай до тех пор, пока) представляет собой конструкцию из двух операторов, работающих совместно. Синтаксис этой конструкции следующий:

do {
код
}
while (условие)

В отличие от while в операторе do-while код выполняется хотя бы один раз, независимо от условия, которое проверяется после выполнения кода. Если оно истинно, то снова выполняется код в теле оператора do. В противном случае работа оператора do-while завершается.

В приведенном ниже примере показано использование цикла do … while для нахождения факториала.

var n, i, z, str;
n = 5;
z = 1;
if (n > 1) {
    i = 2;
    do {
        z *= i;
        i++;
    }
    while (i <= n);
}
str = "Факториал " + n + " = " + z;
document.write(str);

Рис. 8.15.

Краткие итоги

JavaScript имеет Си-подобный синтаксис, что особенно заметно проявляется на примере комментариев, операторов присваивания, в циклах и условных операторах. Вместе с тем, ввод-вывод заметно отличается от такового в Си и больше напоминает Visual Basic.Net (оператор alert похож на MsgBox ). Еще одним существенным отличием от Си является слабая типизация и автоматическое преобразование типов.

Набор для практики

Вопросы:

  1. Почему в условных операторах JavaScript нельзя использовать знак равенства?
  2. Что такое конкатенация?
  3. Что такое модальное окно?

Упражнения:

  1. Разработайте программу, находящую минимальное значение из пяти чисел
  2. Разработайте программу, в которой в зависимости от значения числа (от 1 до 10) выводилась бы одна из 10 заповедей.
  3. Разработайте программу, находящую сумму квадратов первых десяти чисел (от 1 до 10).
< Лекция 6 || Лекция 7: 12 || Лекция 8 >