Апр 16

JavaScript — Организация ветвлений в программах


Всем привет. Хочу снова вернуться, к JavaScript и сегодня вспомнить , что такое Организация ветвлений в программах и как они осуществляются.Кстати, если кто-нибудь желает со скидкой купить битрикс, то на этом сайте можно это сделать.

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

При составлении программы часто необходимо выполнение различных действий в зависимости от результатов проверки некоторых условий. Для организации ветвлений можно воспользоваться условным оператором, который имеет вид:

[php]
if В {S1}
else {S2}
[/php]

где B — выражение логического типа; S1 и S2 — операторы. Выполнение условного оператора осуществляется следующим образом. Вычисляется значение выражения B. Если оно истинно, выполняются операторы S1, если ложно — операторы S2. Если последовательность операторов S1 или S2 состоит лишь из одного оператора, фигурные скобки можно опустить. Возможна сокращенная форма условного оператора:

[php]if В {S}[/php]

где B — выражение логического типа; S — последовательность операторов. Выполнение краткого условного оператора осуществляется так: вычисляется значение выражения B, если оно истинно, выполняются операторы S.
Часто в сети Интернет можно встретить Web-страницы, на которых в анкете требуется указать возраст. Обработка анкеты включает, в частности, определение и исследование возрастного состава респондентов. В качестве примера использования условного оператора напишем сценарий, который по возрасту анкетируемого определяет возрастную категорию, к которой он относится. Зададим возрастные категории следующим образом. Если возраст менее 35 лет, респондент относится к категории «молодой», все анкетируемые возраста от 35 до 60 составляют категорию «средний возраст», лица, старше 60 лет, относятся к категории «пожилые».

Создадим документ, в поле формы которого вводится возраст в годах. При выполнении сценария определяется категория, к которой относится анкетируемый.

[code lang=»js»]


Возрастной состав


Категория возрастного состава

Введите возраст в годах:





[/code]

При анализе данных можно использовать не только условный оператор, но и так называемое условное выражение. Рассмотрим оператор присваивания, правая часть которого является условным выражением S=(a<18) ? «ребенок» : «взрослый»
При построении условного выражения условие задается в круглых скобках. Если значение выражения в скобках true, то значением условного выражения является выражение, следующее за символом точка с запятой (строковый литерал «ребенок»). Если же значение выражения в скобках — false, результатом условного выражения является выражение после символа двоеточия (строковый литерал «взрослый»). В рассмотренном случае вычисленное значение условного выражения присваивается переменной S.

Оператор switch и его свойства

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

Синтаксис оператора switch следующий:
[php]
switch (В)
{ case L1: S1;
case L2: S2;
………..
case Ln: Sn;
default: S
}
[/php]

где B — выражение; L1, L2,….,Ln — литералы; S1, S2,….,Sn; S — операторы.
Выполнение переключателя происходит так: вычисляется значение выражения B. Если значение в равно L1, выполняются операторы S1, а затем все остальные операторы либо до первого оператора break, либо до конца оператора switch. Если значение в равно L2, выполняются операторы S2, а затем все остальные операторы либо до первого оператора break, либо до конца оператора switch и т. д. Если же значение B не равно ни одному из значений L1, L2,…, Ln, выполняются операторы S. Часть default:S может отсутствовать, тогда переключатель имеет вид
[php]
switch (В)
{ case L1: S1;
case L2: S2;
…………
case Ln: Sn;
}
[/php]

В этом случае, если значение выражения B не равно ни одному из значений L1, L2, …. Ln, оператор switch завершает свою работу, что эквивалентно пустому оператору. На самом деле переключатель удобно записывать в виде:
[php]
switch (В)
{ case Ll: S1; break;
case L2: S2; break;
………………
case Ln: Sn; break;
default: S
}
[/php]

В этом случае оператор break обеспечивает завершение работы переключателя после выполнения очередного варианта.
Путешествуя по сети Интернет, можно сделать много полезных вещей, например подписаться на электронное издание. Предположим, что с помощью анкеты, размещенной на Web-странице, пользователь хочет оформить подписку. Стоимость редакционной подписки зависит от срока подписного периода. Если выбирается один месяц, то стоимость будет 60 рублей, если подписка оформляется на 3 месяца, то стоимость составит 168 рублей, если 6 месяцев — 312 рублей, а подписка на 12 месяцев — 540 рублей.

Вычисление стоимости подписки

Создадим документ, в котором пользователь вводит срок подписного периода (1, 3, 6, 12 месяцев), в зависимости от которого определяется стоимость подписки.
Решить эту задачу можно, используя, как и в предыдущем случае, условный оператор. Однако в данном случае сценарий будет нагляднее и короче, если мы воспользуется оператором switch.

[code lang=»js»]


Стоимость подписки<br /> <script LANGUAGE="JavaScript"> < ! — function def (obj) { var n=Number (obj .num.value) d= document var s="" switch (n) { case 1: s=60; break; case 3: s=168 ; break; case 6: s= 312 ; break; case 12: s=540 ; break; default: s="неверен срок подписного периода" } obj.res.value=s } //—> </script><br />

Вычисление стоимости подписки

Введите срок подписного периода:



Стоимость подписки:


/BODY>

[/code]

Процедурный тип данных и функция eval

Предположим, что требуется написать сценарий вычисления значения функции в заданной точке. Пусть функция f1 описана следующим образом:
[php]
Function f1(х)
{ return Math.pow(x,3)-l}
[/php]

Функция f 2 задается описанием:
[php]
Function f2(х)
{ return Math.pow(x-l,2)+l }
[/php]

Во многих языках программирования разрешается рассматривать функции f1 и f2 как процедурные константы, а в программе описать переменную процедурного типа, значение которой во время выполнения программы может меняться. Такие переменные связываются во время выполнения программы с разными процедурами.

Процедурные константы и переменные можно использовать в качестве фактических параметров. В применении к нашей задаче ситуация была бы следующей: в программе описана функция, которая вычисляет значение в точке, определяемой пользователем. Функция, задаваемая пользователем, передается в качестве параметра. Иногда в аналогичных случаях говорят, что процедура или функция рассматриваются как данные.

Идея единства данных и подпрограмм занимает одно из основных мест в объектно-ориентированном программировании. В языке JavaScript идея процедурных типов данных реализована с помощью функции eval. Функция eval получает в качестве параметра строку. Если строка представляет собой выражение языка JavaScript, вычисляется ее значение, которое возвращается как результат функции eval.

Значение функции, задаваемой пользователем

Напишем сценарий, который определяет значение функции, задаваемой пользователем, в некоторой заданной точке. Функция, точка и вычисленное значение задаются в текстовых полях формы.

Значение функции, задаваемой пользователем

Для того чтобы определить значение функции f1, достаточно задать функцию формулой Math.pow(x,3)-1. Если же нас интересует значение в некоторой точке функции f2, то надо ввести формулу Math.pow(x-1,2)+1.

[code lang=»js»]


Нахождение значения функции в заданной точке


Нахождение значения функции в заданной точке

Введите функцию:   
Ведите значение x:

Значение функции в заданной точке:



[/code]

Функция может быть такова, что ее нельзя описать с помощью лишь одного выражения, например, следующий фрагмент сценария определяет функцию f3:

[php]
if (Math.abs(x) &amp;amp;amp;amp;amp;amp;lt;1)
{y=Math.sqrt(1-x*x)}
else
if (x &amp;amp;amp;amp;amp;amp;lt;-1) {y=x+1}
else {y=x-1}
[/php]

Метод eval может быть использован для выполнения операторов языка JavaScript, включенных в строку параметра. Таким образом, при задании функции можно вводить не только формулу, как мы поступали ранее, но и операторы. Используя метод eval, мы получили возможность задавать в качестве исходных данных функцию, и тем самым решать целый класс однотипных задач.

FofonRed.ru

автор FofonRed \\ теги: ,


Написать ответ