Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Оператор условного перехода - инструкция if



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

Оператор условного перехода if имеет следующий синтаксис:

if (условие)

{ инструкции, выполняемые, если условие истинно}

[else

{ инструкции, выполняемые, если условие ложно}]

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

If (условие)

{ инструкции, выполняемые, если условие истинно }

Конструкции операторов условного перехода допускают вложение операторов условного переходадруг в друга.

Пример.

if (аgе< 18) {аlеrt('Вам рекомендован другой сайт" )}

else

{аlеrt (" Добро пожаловать! " )}

Если вкладывать в оператор условного перехода другие операторы if, получим более сложную конструкцию:

if (первое_условие) {

инструкции, выполняемые, если первое_условие истинно }

else { if (второе_условие){

инструкции, выполняемые, если второе_условие истинно}

else{инструкции, выполняемые, если второе_условие ложно }}

Условием в условном операторе if обычно бывает логическое выражение, но им может быть и строка, и числовое выражение.

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

Если в качестве условия используется числовое выражение, условие является истинным, если его значением является не ноль.

Пример.

Проверка правильности ввода:

if (! х) {

alert(" Вы не ввели никакого значения" )}

В данном примере фигурные скобки можно опустить, так как оператор содержит лишь одно выражение.

Ту же задачу решить по-другому:

if (x == null) // Проверка, равна ли переменная x null или undefined

alert(" Вы не ввели никакого значения " )

Если использовать сложные условия, инструкция if может выглядеть примерно так:

if ((аddrеss == null) || (аddrеss == " " )) {

аddrеss = " undеfinеd";

alert(" Укажите Ваш адрес." ); }

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

Условный оператор if позволяет создать ветвление в последовательности выполнения кода программы. Если ветвление сложное, множественное, то его можно осуществить путем использования вложенных друг в друга инструкций if, как это было показано в предыдущем разделе.

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

Разные места блока кода начинаются с ключевого слова case, после которого пишется значение двоеточие. При старте выполнения инструкция switch вычисляет значение выражения, затем ищет ту метку case, в которой имеется значение, соответствующее вычисленному. Если такая метка существует и найдена, выполняется блок кода, следующий за данной меткой case. Если такая метка не найдена, выполняется блок кода, следующий за необязательной меткой default: Если же и метка default: не указана, ни один блок кода не выполняется.

Пример.

switch(num) {

Case 10: alert (num); //Если num равно 10, выполняется этот блок кода

Break; // Передаем управление на конец оператора switch

Case 20: alert (num); // Если num равно 20, выполняется этот блок кода

Break; // Передаем управление на конец оператора switch

Case 30: alert (num); // Если num равно 30, выполняется этот блок кода

Break; // Передаем управление на конец оператора switch

Default: alert (num); // Код выполнится, если ни одна ветка не сработала

Break; // Передаем управление на конец оператора switch

}

В конце каждого из блоков case в приведенном примере прописано слово break. Данная инструкция служит для передачи управление в конец текущего переключателя switch или оператора цикла.

Дело в том, что ветвления case в операторе switch определяют точку входа в исполняемый код, но не опеределяют точку останова. Если ключевого слова breakв конце веткиcase не будет, switch продолжит исполнение всего встреченного кода на всех оставшихся ветвях, пока не достигнет завершающей фигурной скобки, или пока не дойдет до инструкции break. Иногда такое свойство выполнения переключателя бывает полезным при написании кода, переходящего от одной метки case к последующей, но гораздо чаще следует не забыть завершить каждый из блоков case ключевым словом break.

switch (language) {

case " Англия" : window. ореn (" english.htm" ); brеаk;

case " Франция": window. ореn (" france. htm" ); brеаk;

case " Германия": window. ореn (" germany. htm" ); brеаk;

default: alеrt(" y нас нет документа на таком языке" )

}

Если использовать переключатель switch в теле функции, то можно вместо break использовать ключевое слово return. Каждая из этих инструкций приведет к завершению работы переключателя switch и запрета перехода на обработку следующей ветви case.

Порядок работы инструкции switch следующий: вначале вычисляется значение выражения, стоящего сразу после ключевого слова switch, затем вычисляются выражения, расположенные после ключевых слов case в порядке их указания. Производится сравнение вычисленных выражений, пока не найдется совпадение значений. Причем совпадение определяется не с помощью оператора равенства ==, а с помощью оператора идентичности ===, поэтому выражения должны совпасть без каких-либо преобразований типов.

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

Метка default: обычно указывается в конце тела switch после всех case-меток, но может быть расположена в произвольном месте инструкции switch.

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

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

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

Инструкция while

Оператор цикла while является базовой инструкцией, позволяющей в JavaScript исполнять повторяющиеся фрагменты кода. Синтаксис инструкции while следующий:

while (выражение) {инструкции тела цикла}

Работа инструкции начинается с вычисления выражения, стоящего в скобках после ключевого слова while. Если его значением будет false, то интерпретатор JavaScript пропускает тело цикла и передает управление на инструкцию, следующую после оператора цикла. Если же значение будет равно true, то выполняются инструкции тела цикла, после чего выражение вычисляется заново.

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

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

Если тело цикла состоит из единственной инструкции, то фигурные скобки можно опустить.

При использовании цикла while программист должен заботиться об условиях выхода из цикла. Обычно при выполнении каждой итерации цикла одна переменная (или несколько) меняют свои значения, благодаря чему результат действий, выполняемых в теле цикла, могут отличаться при каждом новом проходе тела цикла. А если изменяемая переменная или переменные присутствуют в выражении, то и результат его вычисления может изменяться на каждой итерации, и измененное значение может быть использовано для выхода из цикла.

Примеры.

В столбик в окно документа будут выведены числа от 1 до 9.

var num_int = 1;

while (num_int < 10) { //цикл выполняется, пока условие истинно

document.write(num_int + " < br> " );

num_int ++; // на каждой итерации значение переменной меняется

}

Перед циклом присваивается значение 1 переменной num_int, затем ее значение увеличивается каждый раз при выполнении тела цикла. После того, как цикл выполнится 9 раз, значением выражени станет false (ложь, переменная num_intбудет не меньше 10) и цикл завершит работу.

Напишем код для вычисления n!

var factorial = 1;

if (n > 1) { j = 2; // переменная j служит для подсчета итераций

while ( j < = n ) {

factorial = factorial*j; // в factorial хранятся результаты вычислений

} // конец цикла

} // конец условного оператора

document.write(“Факториал числа ”+n+ ” равен ”+ factorial); //печать результата вычислений

В теле оператора while управления ходом вычислительного процесса можно использовать операторы break (прерывания) и continue (продолжения).

Инструкция do while

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

do { инструкции тела цикла}

while (выражение);

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

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

Примеры.

Вычислим результат возведения числа х в степень n.

var result = х;

j = 2; // переменная служит для промежуточных значений степеней

do{ result = result*x;

j++;

}

while (j < = n)

document.write(x+“ в степени ”+n+ ” равно ”+ result); //печать результата вычислений

Напишем код для вычисления n!

var factorial = 1;

if (n > 1) {j = 2;

do {

factorial = factorial *i; // factorial хранит результат

j++; }

while ( j< = n ) // конец цикла

} // конец условного оператора

Инструкция for

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

Преимущество и удобство инструкции for большей частьюзаключаются в том, что три основных операции, выполняемые над переменной-счетчиком в цикле - инициализация, проверка значения и обновление – являются неотъемлемой частью синтаксиса данного оператора цикла:

for ( [инициализация переменной-счетчика]; [условие]; [выражение обновления] )

{ инструкции тела цикла }

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

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

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

Проверочное выражение во время работы цикла for выполняется перед каждой итерацией, по результатам определяется, будет выполнено тело цикла или нет. Только в том случае, если выражение дает true, тело цикла выполняется, если значение – false, то управление передается на следующий после цикла оператор.

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

Пример. В окно документа в столбик будут выведены числа от 1 до 9.

for (var num = 1; num < 10; num ++)

document.write(num + " < br> " );

В операторе for можно использовать в заголовке цикла не одну переменную. В этом случае применяется символ «запятая» для объединения нескольких выражений в одно. Заметьте, что переменная-счетчик цикла может как возрастать, так и убывать.

Пример.

for(i = 0, j = 100; i < j; i++, j--)

{result+= i * j; }

Чтобы покинуть тело цикла по условию, а принудительно, используется оператор break. Когда во время вычислительного процесса в теле оператора цикла встречается данный оператор прерывания, цикл сразу же завершает свою работу. На практике оператор break используется по результатам проверки некоего условия, выполнение которого потребует завершения работы цикла. Конструкция цикла с использованием break может выглядеть следующим образом:

for ([инициализация переменной-счетчика]; [условие_1]; [выражение обновления] )

{ инструкции тела функции;

if (условие_2){ инструкции условного оператора;

break; }

инструкции тела функции;

}// конец оператора for

Кроме оператора break в теле оператора цикла может использоваться оператор continue. Он, так же, как и break, может применяться в теле оператора цикла в сочетании с оператором условного перехода по похожему сценарию. Но, в отличие от break, оператор continue прерывает исполнение итерации, выполняет обновление переменной-счетчика и передает управление вычислительным процессом в начало оператора цикла, где снова выполняется проверка условия, и цикл продолжается по обычному сценарию.

Объекты

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

Объекты, встроенные JavaScript обладают фиксированными названиями и свойствами. Свойства объектов бывают двух типов: обычные свойства и методы. Каждое свойство имеет имя и значение, по аналогии с обычной переменной. Бывают свойства, которые доступны как для чтения, так и для записи, а бывают доступные только для чтения: их значения нельзя изменить с помощью оператора присваивания.

Чтобы обратиться к свойству объекта, следует указывать имя самого объекта и через символ точки - имя свойства: имя_объекта.свойство.

Чтобы применить к объекту присущий ему метод, используют следующую форму записи: имя_объекта.метод(параметры). У объекта может и не иметься никаких методов.

Если обобщить вышеизложенное, объект можно воспринимать в качестве некоторого контейнера – черного ящика - содержащего свойства (переменные) и методы (функции). Содержимое контейнера скрыто от пользователя. Пользователь может управлять объектом только при помощи его свойств и методов.

В JavaScript определены такие важные для разработчиков веб-сайтов объекты, как Array (массивы), String (строки), Date (даты), Math (математика), с помощью которых можно реализовывать сложную обработку дат и строк, математические вычисления, работу с одномерными и многомерными массивами.

Для того, чтобы воспользоваться свойствами и методами какого-либо статического объекта, необходимо создать экземпляр (копию) этого объекта, присвоив ему собственное имя. Такие экземпляры статических объектов наследуют от родительских объектов все принадлежащие им свойства и методы. Так, скажем, статический объект Math используется для вычислений в математических формулах, экземпляры статического объекта Array создаются в случае массивов данных, к которым можно применить любые из доступных для статического объекта Array методов и свойств, и так далее.

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

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

Самым простым способом создания объекта является указание в программе литерала объекта – заключенного в фигурные скобки списка свойств объекта в виде пар имен и значений, разделенных запятыми. Именем свойства может являться идентификатор или строка, а значением любого из свойств может быть выражение JavaScript или константа.

Пример.

var box= {}; // создан объект, у которого нетни одного свойства

var place = { х: 10, y: 100 };

var disk = { х: disk.x, y: disk.y+20, rаdius: 15 };

var Potter = {" nаmе": " Garry Potter", " аgе": 17, " оссuраtiоn": " magic ореrаtоr", 'email': " potter@hogwarts.com" };

Другой способ создания объекта – использование оператора new, после которого указывается имя функции-конструктора, выполняющей инициализацию свойств создаваемого объекта.

Пример.

vаr my_array = nаw Array(); // cоздание пустого массива

vаr my_date = nаw Dаtе(); // создание объекта текущего времени и даты

Объект String

Объект String используется для обработки строк, например, для определения точного места вхождения одной строки в другую, извлечения подстроки из заданной строки, разбиения строки на отдельные элементы и преобразования их в массив и так далее.

Для того, чтобы создать строковый объект, можно воспользоваться оператором new, как и для создания объекта любого другого типа, записав, например, следующее выражение:

имя_строковой_переменной = new String(" значение строки" );

Чаще всего, однако, строковый объект создается при помощи обычного оператора присваивания:

имя_строковой_переменной = " значение строки";

var имя_строковой_переменной = " значение строки";

При этом интерпретатор в любом случае создаст экземпляр объекта строки, и из программного кода будут доступны его свойства и методы.

Чтобы обратиться в свойству или методу строкового объекта, используются следующие выражения:

строка.свойство;

строка. метод([аргументы]);

Строка в данных выражениях может представлять собой ссылку на строковый объект String, строковую переменную, выражение, возвращающее строку, или просто строковое значение, заключенное в кавычки.

В том случае, когда в качестве имени объекта указывается имя строкового объекта String, имеется в виду, что вызываются общие и методы свойства статических строковых объектов, вообще говоря, не связанных с каким-то конкретным строковым объектом.


Поделиться:



Популярное:

Последнее изменение этой страницы: 2017-03-09; Просмотров: 893; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.075 с.)
Главная | Случайная страница | Обратная связь