HTML, XHTML и CSS на сто процентов.
Условные операторы. В процессе создания сценариев обычно требуется изменить порядок выполнения кода. В этом разделе рассматриваются механизмы ветвления, позволяющие выбирать одно из альтернативных действий в зависимости от условия. Оператор if. Оператор if управляет последовательностью выполнения команд. Синтаксис этого оператора: If (логическое выражение). { Операторы. } Сначала вычисляется логическое выражение, затем, если оно равно true, выполняются операторы, если же оно равно false, то операторы пропускаются и продолжается выполнение сценария. Рассмотрим пример. Допустим, функция f(x) определяется следующим образом: HTML, XHTML и CSS на сто процентов. Для нахождения значения этой функции на определенной точке можно воспользоваться кодом, приведенным в листинге 11.11. Листинг 11.11. Пример работы оператора if. <html> <head> <titlе>Пример работы оператора if</title> <script> Var x, y; //Запрашиваем значение x. X=prompt ("Введите значение x","0"); //Преобразуем введенную строку в число. X=+x; //Определяем значение функции. If (x<0){ Y=x+10; } If ((x>=0)&&(x<=5)){ Y=x*x+4; } If (x>5){ Y=5/x; } Alert("Функция f("+x+")="+y); </script> </head> <body> </body> </html> С помощью этого кода можно легко найти значение данной функции в любой точке (рис. 11.12). HTML, XHTML и CSS на сто процентов. Рис. 11.12. Определение значения функции с помощью оператора if. Оператор if..else. Часто удобно использовать полную форму условного оператора if..else. С его помощью можно задать действия, которые необходимо выполнить, если логическое выражение равно false: If (логическое выражение). { Операторы1. } Else. { Операторы2. } Более того, можно совместить else с другим оператором if. В этом случае можно рассмотреть несколько альтернативных вариантов и выполнить соответствующие операторы: If (логическое выражение1). { Операторы1. } Else if (логическое выражение2). { Операторы2. } Else. { Операторы3. } Теперь перепишем предыдущий сценарий для определения функции с помощью оператора if..else (листинг 11.12). Листинг 11.12. Пример работы оператора if..else. <html> <head> <titlе>Пример работы оператора if..else</title> <script> Var x, y; //Запрашиваем значение x. X=prompt ("Введите значение x","0"); //Преобразуем введенную строку в число. X=+x; //Определяем значение функции. If (x<0) y=x+10; //при x<0. Else if (x>5) y=5/x; //при x>5. Else y=x*x+4; //при 0<=x<=5. Alert("Функция f("+x+")="+y); </script> </head> <body> </body> </html> Как видно из данного кода, фигурные скобки необязательны, если выполняется только один оператор. Однако рекомендуется всегда использовать их для облегчения чтения кода. Обратите внимание, что в целях оптимизации второй проверкой проверяется условие x>5. Оператор switch. Оператор switch позволяет сравнить значение с множеством других. Этого же эффекта можно достичь с помощью нескольких операторов if, но оператор switch позволяет создавать наглядный и краткий код. Этот оператор дает возможность предусмотреть операторы по умолчанию, которые выполняются, если не найдено ни одно соответствие: Switch (выражение). { Case значение1: Операторы. Case значение2: Операторы. .. Default: Операторы. } Допустим, необходимо, чтобы сценарий переводил названия животных с английского языка на русский (листинг 11.13). Листинг 11.13. Пример работы оператора switch. <html> <head> <titlе>Пример работы оператора switch</title> <script> Var trans; //Запрашиваем название животного. Var beast=prompt ("Введите название животного","dog"); //Находим соответствующее название на русском языке. Switch (beast). { Case "dog": Trans="собака"; Break; Case "cat": Trans="кошка"; Break; Case "cow": Trans="корова"; Break; Default: Trans="неизвестное животное". } Alert(beast+" – "+trans); </script> </head> <body> </body> </html> Этот код позволяет получить перевод названия одного из трех животных (рис. 11.13). HTML, XHTML и CSS на сто процентов. Рис. 11.13. Пример работы оператора switch. Обратите внимание на оператор break, который позволяет закончить работу оператора switch, так как иначе будет выполняться оставшийся код в операторе switch.