Программирование на языке JavaScript
Работа добавлена: 2015-11-29





 25 -

Лабораторная работа 2-06

Программирование на языке JavaScript 

1. Цель работы

Целью работы является приобретение навыков использования свойств и методов встроенных объектов в документах HTML при создании интерактивных Web-страниц с использованием языка сценариев JavaScript.

2. Состав рабочего места

2.1. Оборудование: IBM-совместимый   персональный компьютер (ПК).

2.2. Программное обеспечение: операционная система Windows, Web-браузер (Internet Explorer версии 7.0 и выше или Firefox).

3. Краткие теоретические сведения

3.1. Синтаксис языка JavaScript

Текст программы на языке JavaScript представляет собой последовательность символов в кодировке ASCII или Unicode. Вводимые символы и последовательности символов могут быть следующих типов: пробельные символы, комментарии и элементы программы (tokens).

Пробельные символы и комментарии являются разделителями между элементами программы. Элементы программы могут отделяться друг от друга одним или несколькими разделителями.

Пробельными символами, помимо пробела (код 20) являются: символ горизонтальной табуляции (код 09), символ вертикальной табуляции (код 0B), новая страница (код 0C). Символы перехода на новую строку (код 0A) и символ возврата каретки (код 0D) также считаются пробельными символами и одновременно указанием для редактора или программы просмотра о выводе следующих символов программы на новой строке.

Комментарии в языке JavaScript можно оформлять одним из следующих двух способов:

1. /* текст */

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

2. // текст

Весь текст, следующий после символов "//" до конца строки, игнорируется.

В комментариях можно использовать любые символы ASCII или Unicode (в том числе и буквы кириллицы). При выполнении программы интерпретатор игнорирует комментарии.

Элементами программы являются: зарезервированные слова, идентификаторы, операторы и константы (литералы).

Зарезервированными словами являются следующие ключевые слова:

break

default

finally

return

var

case

delete

for

super

void

catch

do

function

switch

while

class

else

if

this

with

const

enum

import

throw

continue

export

in

try

debugger

extends

new

typeof

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

Идентификаторы могут иметь любую длину и не должны совпадать зарезервированными словами. Идентификаторы формируются из латинских букв (строчных и прописных), цифр, а также символов "_" (подчеркивания) и "$" (знак доллара). Первым символом идентификатора не должна быть цифра. Большие (прописные) и маленькие (строчные) буквы в идентификаторах, считаются разными символами.  

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

Литералы представляют числовые, строковые, булевские значения (истина или ложе), а также специальное, нулевое, значение (null).      

Из пробельных символов и элементов формируются предложения (statements), последовательно обрабатываемых интерпретатором  JavaScript.

Можно располагать и несколько предложений в строке. В этом случае они должны быть отделены друг от друга символом ";". В случае записи предложения на отдельной строке символ ";" в конце предложения в JavaScript задавать не обязательно (в отличие от языков C/C++ и Java).

Строковый литерал обязательно должен располагаться на одной строке. Если необходимо задать его в нескольких строках, то следует разбить его на более мелкие строковые литералы и использовать операцию конкатенации (сцепления)  строк "+", рассматриваемую далее, для соединения полученных мелких строк в одну длинную. В этом случае каждый литерал можно располагать на отдельной строке.

3.2. Переменные и литералы языка JavaScript

Как и любой другой язык программирования, JavaScript использует переменные для хранения данных определенного типа (числа, строки, булевой переменной и т.п.). Реализация JavaScript является примером языка свободного использования типов. В нем не обязательно задавать тип переменной. Ее тип зависит от типа хранимых в ней данных, причем при изменении типа данных меняется и тип переменной.

JavaScript поддерживает четыре простых типа данных:

Для присваивания переменным значений основных типов применяются литералы –  непосредственные значения данных соответствующих типов.

Целые литералы являются последовательностью цифр и представляют обычные целые числа со знаком или без знака.

Помимо десятичных целых чисел, в JavaScript можно задавать восьмеричные и шестнадцатеричные целые числа.

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

Шестнадцатеричные числа могут содержать цифры 0-9 и буквы a-f (или A-F). Признаком того, что число шестнадцатеричное, является префикс "0X" или "0x" перед числом, например, 0xAC16.

Для задания вещественных литералов используется синтаксис чисел с десятичной точкой, отделяющей дробную часть числа от целой, или запись вещественных чисел в научной нотации с указанием после символа "е" или "Е" порядка числа, например, 3.5E-7.

Строковый литерал – последовательность алфавитно-цифровых символов, заключенная в одинарные "'" или двойные кавычки """, например: "Анна", 'АННА'.

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

"It's a string"      //Значение строки равно It's a string

Булевские литералы имеют два значения: true и false, и используются для обработки ситуаций да/нет в операциях сравнения.

Литерал null определяет некоторое значение,  не равное ни одному из допустимых значений числовых, строковых или булевских литералов.

Определить переменную можно двумя способами:

Выражение var используется как для задания, так и для инициализации переменной и имеет синтаксис:

var имя-переменной [= начальное-значение];

Необязательная операция присваивания задает данные, которые содержит  переменная. Их тип определяет и тип переменной.

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

Эту операцию можно использовать в любом месте программы, меняя тем самым тип переменной.  

Это обстоятельство отличает язык JavaScript от строго типизированных языков программирования (например, Java или C++), в которых тип переменной (целый, строковый и т.п.) должен быть определен до ее использования и не может изменять в программе.

3.3. Функции в языке JavaScript

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

function имя-функции(параметр-1, параметр-2, ..., параметр-n) 

{

[предложения JavaScript]

[return значение]

}

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

Вызов функции в предложении JavaScript имеет следующий вид:

имя-функции (аргумент-1, аргумент-2,..., аргумент-n)

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

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

Определение необходимых функций следует осуществлять в элементе <head>, так как все определенные в нем операторы сценария интерпретируются до отображения страницы, и, таким образом, будут известны в процессе отображения всей страницы.

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

Встроенные функции JavaScript будут подробно рассматриваться дальше. Однако три встроенные функции –  alert, prompt и confirm, будут введены уже сейчас, поскольку они являются одним из средств, обеспечивающих обмен данными между документом HTML и пользователем, и без них невозможно ни ввести данные, ни получить результат работы сценария JavaScript. Хотя в JavaScript есть и другие средства обмена данными (с помощью форм), именно эти три функции будут пока использоваться в примерах и заданиях по языку JavaScript.

Характеристики указанных функций приведены в табл. 6.1.

Таблица 6.1. Характеристики функций alert, prompt и confirm

Вызов функции

Выполняемые действия

Возвращаемое значение

alert(сообщение)

Отображение диалогового окна Alert с заданным сообщением и кнопкой ОК.

нет

confirm(сообщение)

Отображение диалогового окна Confirm с заданным сообщением, а также кнопками ОК и Cancel.

В случае, если нажата кнопка OK, функция возвращает true, если Cancel – возвращает false.

prompt(сообщение, начальная-строка)

Отображение диалогового окна Prompt с заданным сообщением и полем ввода. Если значение начальной-строки не равно "", в поле ввода выводится значение, заданное в начальной-строке.

Функция возвращает значение введенной в поле ввода строки.

 

3.4. Размещение операторов языка JavaScript на Web-странице

Встроить сценарий JavaScript в Web-страницу можно несколькими способами:

Элементы вставки сценариев <script> и <noscript> определены в XHTML в модуле Scripting.

Для внедрения в Web-страницу сценария JavaScript в спецификацию языка HTML был введен контейнер <script>...</script>, внутри которого могут располагаться операторы языка JavaScript. Для элемента <script>, помимо общих атрибутов class, id, dir, lang, style и title, можно задавать атрибуты, приведенные в табл. 6.2.

Таблица 6.2. Атрибуты элемента <script>

Имя атрибута

Что определяет

Значение по умолчанию

charset

Набор символов, используемый в сценарии.

нет

event

Имя события, обрабатываемого сценарием.

нет

src

Адрес внешнего сценария.

нет

type

MIME-тип сценария.

text/javascript

Язык, используемый для написания сценариев по умолчанию, можно определить также в элементе <meta> в заголовке документа HTML, например:

<meta http-equiv="Content-Script-Type"

content="text/javascript">.

Следует отметить, что хотя в спецификации HTML 4.01 не определено значение языка сценариев по умолчанию, большинство Web-браузеров в случае отсутствия атрибута type предполагает, что сценарий написан на языке JavaScript.

Обычно Web-браузеры, не поддерживающие какие-нибудь элементы HTML, просто их игнорируют, анализируя, однако, содержимое пропускаемых элементов будет выводиться, что может приводить к ошибкам при отображении Web-страницы. Во избежание подобной ситуации следует помещать операторы языка JavaScript в контейнер комментария <!-- ... -->, как показано ниже

<script type="text/javascript">

<!--

операторы JavaScript

//-->

</script>

Символы "//" перед закрывающим элементом комментария "-->" являются оператором комментария JavaScript. Он необходим для правильной работы интерпретатора.

Документ может содержать несколько элементов <script>, расположенных в любом месте документа. Все они последовательно обрабатываются интерпретатором JavaScript по мере отображения частей документа в окне Web-браузера. В связи с этим ссылка на переменную, определенную в сценарии, размещенном в конце документа, может привести к генерации ошибки интерпретатора при обращении к такой переменной из сценария в начале документа. Поэтому рекомендуется размещать сценарии с глобальными функциями и переменными в контейнере <head>…</head> документа. В этом случае все определения обрабатываются интерпретатором в начале загрузки документа и хранятся в памяти с первых моментов отображения документа в окне Web-браузера.

Для тех Web-браузеров, которые не поддерживают JavaScript, в контейнере <noscript> …</noscript> можно задать сообщение, например:

<noscript>

Извините, но используемый вами Web-браузер не поддерживает сценарии JavaScript, либо поддержка сценариев выключена.

</noscript>

Элемент <script> имеет атрибут src, позволяющий связать встраиваемый сценарий с внешним файлом, содержащим программный код на языке JavaScript. В качестве значения параметра задается полный или относительный URL-адрес ресурса. Задание закрывающего элемента </script> обязательно, независимо от того, заданы или нет операторы внутри элемента. Следующий фрагмент кода связывает Web-страницу с файлом-источником, содержащим некоторый набор функций:

<script src="files/0/http://home.bhv.com/functions/jsfuncs.js">

[предложения JavaScript]

</script>

Следует иметь в виду, что связываемый внешний файл не должен содержать элементов HTML и должен иметь расширение .js.

Для вставки сценария в атрибут вместо значения атрибута подставляется имя языка сценариев, а затем (после символа ":") предложения сценария. Для языка JavaScript это будет выглядеть следующим образом:

javascript: предложения-JavaScript,

например

<a href="javascript:alert('Гиперссылка не включена')">

Вызов ссылки

</a>.

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

3.5. Выражения и операторы языка JavaScript

Выражение –  это комбинация переменных, литералов и операторов, в результате вычисления которой получается одно единственное значение, которое может быть числовым (целым или вещественным), строковым или булевым.

Переменные в выражениях должны быть инициализированы либо в операторе var, либо с помощью операции присваивания. Если при вычислении выражения встречается неинициализированная переменная, то интерпретатор генерирует ошибку "undefined variable" ("переменная не определена"), указывая ее местоположение на Web-страниц.

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

3.5.1. Оператор присваивания и арифметические операторы

Оператор присваивания рассматривается как выражение присваивания, которое вычисляется равным выражению правой части, и в то же время она присваивает вычисленное значение выражения переменной, заданной в левой части операции.

Кроме выражения присваивания, в JavaScript существует три типа выражений:

Для построения выражений применяются операторы, соответствующие типу выражения.

Арифметические выражения создаются арифметическими операторами, приведенными в табл. 6.3.

Таблица 6.3. Арифметические операторы языка JavaScript

Оператор

Действие

+

Сложение.

-

Вычитание.

*

Умножение.

/

Деление.

%

Определение остатка от деления целых чисел.

++

Увеличение значения переменной на единицу.

--

Уменьшение значения переменной на единицу.

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

Операция вычисления остатка от деления (оператор "%") возвращает остаток от деления первого числа на второе, причем результат будет иметь тот же знак, что и делимое, например, результат операции 5%3 будет равен 2, а результат операции

(-7)%(-4)

будет равен -3.

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

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

3.5.2. Операторы отношения и логические операторы

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

Операторы сравнения аналогичны соответствующим операторам языка C и приведены в табл. 6.4.

Таблица 6.4.  Операторы сравнения языка JavaScript

Оператор

Действие

==

Равно

!=

Не равно

>=

Больше или равно

<=

Меньше или равно

>

Строго больше

<

Строго меньше

Результатом операции сравнения являются логические значение true или false.

Логические операции представлены в табл. 6.5. В примерах предполагается, что переменная var1 = 'Кит', var2 = 'Кот', var3 = false.

Таблица 6.5. Логические операции языка JavaScript

Оператор

Синтаксис

Действие

Пример

&& (логическое И)

выражение-1 && выражение-2

Возвращает выражение-1, если оно преобразуется или равно false, иначе выражение-2

var1 && var2

(равно 'Кот')

var2 && var3 (равно false)

|| (логическое ИЛИ)

выражение-1 || 

 выражение-2

Возвращает выражение-1, если оно преобразуется или равно true, иначе выражение-1

var1 || var2 (равно 'Кит')

var3 || var1(равно 'Кит')

var3 || false (равно false)

!

(логическое НЕ)

! выражение

Если выражение равно true, возвращает false; если выражение равно false, возвращает true

!var1 (равно false)

!var3 (равно true)

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

3.5.3. Оператор конкатенации

Строковые операторы используются для создания строковых выражений. В JavaScript существует только один строковый оператор – оператор конкатенации (соединения) строк "+". Этот оператор присоединяет к строковому значению первого операнда строковое значение второго, получая результат, равный соединению строк.

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

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

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

(условие) ? значение-1 : значение2;

Если операнд условие имеет значение true, то результатом выполнения условной операции будет значение-1, в противном случае – значение-2.

3.5.5. Составные операторы присваивания

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

3.5.6. Старшинство операций в JavaScript  

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

Первыми выполняются операторы, расположенные в начале таблицы старшинства.

Таблица 6.6. Старшинство операций языка JavaScript

Операторы

Описание

. [] ()

Доступ к полю, индексирование в массиве, вызов функции.

++ -- - ~ !

Операции, выполняемые над одним операндом.

* / %

Умножение, деление, вычисление остатка от деления.

+ - +

Сложение, вычитание, слияние текстовых строк.

<< >> >>>

Битовые сдвиги.

< <= > >=

Меньше, меньше или равно, больше, больше или равно.

== !=

Равенство, неравенство.

&

Поразрядная операция И.

^

Поразрядная операция ИСКЛЮЧАЮЩЕЕ ИЛИ.

|

Поразрядная операция ИЛИ.

&&

Логическая операция И.

||

Логическая операция ИЛИ.

? :

Условная операция.

=  +=  -=  *=  /=  %= >>=

>>>=  <<=  |=  &= ^=

Присваивание.

,

Многократное вычисление.

3.6. Предложения управления в JavaScript

Весь набор предложений управления языка JavaScript можно разбить на три группы:

3.6.1. Предложения выбора

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

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

if(условие)

{

предложения-1

}

[else 

{

предложения-2

} ]

Первая группа предложений –  предложения-1 выполняется при условии истинности выражения условие. Необязательный блок else задает группу предложений предложения-2, которая будет выполнена в случае ложности условия, заданного в if.

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

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

В предложении switch можно задать несколько условий и для каждого из условий – соответствующие действия. Синтаксис этого предложения следующий:

switch (выражение)

{

case значение-1:

[предложения-1]

break;

case значение-2:

[предложения-2]

break;

default:

[предложения-n]

}

Сначала вычисляется значение выражения, заданного в switch. Затем это значение последовательно сравнивается со значением-1, значением-2 и т.д.   

Если значение выражения в блоке switch равно значению-1, то выполняется группа предложений предложения-1, если равно значению-2, то выполняется группа операторов предложения-2 и т. д.  

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

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

3.6.2. Предложения цикла

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

3.6.2.1. Предложение цикла for

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

for([инициализирующее-выражение];[условие];[изменяющее-выражение]) 

{

[операторы]

}

Параметром инициализирующее-выражение задается и инициализируется переменная цикла. Это выражение вычисляется один раз в начале выполнения цикла. После этого проверяется истинность выражения условие. Если оно истинно, то выполняется тело цикла; затем вычисляется изменяющее-выражение, и снова проверяется истинность выражения условие. Если оно истинно, то повторяется цикл вычислений, если нет, то предложение цикла for завершает свое выполнение.

Инициализирующее-выражение, изменяющее-выражение и условие окончания цикла не являются обязательными, и любое из них может быть опущено. Однако следует оставлять разделитель ";" для правильной интерпретации оставшихся выражений.

В параметрах цикла for можно использовать оператор запятая – ",". Этот оператор имеет следующий синтаксис:

выражение-1,выражение-2  

Сначала вычисляется выражение-1, а затем выражение-2.

3.6.2.2. Предложение цикла while

Цикл while выполняется, пока истинно выражение, задающее условие выполнения цикла. Его синтаксис следующий:

while(условие) 

тело-цикла

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

3.6.2.3. Предложение цикла dowhile

Цикл dowhile имеет следующий синтаксис:

do

 тело-цикла

while(условие)

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

3.6.3. Предложения перехода

Иногда необходимо завершить цикл не по условию, задаваемому в заголовке цикла, а в результате вычисления некоторого условия в теле цикла. Для этой цели в JavaScript в предложениях for, while и dowhile можно использовать предложения  break и continue.

3.6.3.1. Предложение break

Предложение break завершает выполнение цикла и передает управление оператору, непосредственно следующим за оператором цикла. Синтаксис предложения:

break метка

где метка является идентификатором JavaScript. В этом случае перед предложением цикла,  за пределы которого передается управление, должен стоять идентификатор метки,   за которым следует символ ":". Если метка в предложении break опущена, управление передается за пределы цикла, внутри которого находится предложение break.

3.6.3.2. Предложение continue

Предложение continue прекращает выполнение текущей итерации и начинает выполнение следующей, т. е. в цикле while он передает управление на проверку выражения условие цикла, а в цикле for – на   вычисление выражения изменяющее-выражение. Так же, как в предложении break, в continue также можно указать метку цикла, в котором будет прекращаться текущая итерация (если метка не указана, прекращается выполнение итерации в цикле, в котором находится данное предложение continue).

3.7. Реализация объектно-ориентированного программирования в JavaScript

Язык JavaScript является объектно-ориентированным языком программирования, в котором реализован подход к созданию объектов с определением для новых объектов набора свойств и методов, а также клонированием существующих объектов из их прототипов. В связи с этим в нем не определены такие понятия объектно-ориентированных программирования, как класс, перегрузка методов,  механизмы наследования, полиморфизм и другие. Термин «функция» в JavaScript эквивалентен термину «метод» в других объектно-ориентированных языках. 

3.7.1. Объекты JavaScript

В языке JavaScript определены следующие группы объектов:

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

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

При интерпретации Web-страницы браузером создаются объекты Web-браузера. К свойствам и методам этих объектов можно обращаться так же, как и для встроенных объектов, но состав этих объектов зависит от Web-браузера.

3.7.2. Создание новых объектов в JavaScript

Для создания нового объекта из существующего объекта в JavaScript используется ключевое слово new.

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

var переменная = new имя-объекта-прототипа([параметры]) 

Этот оператор создает (с именем переменная) новый экземпляр объекта того же типа, что и объект-прототип.

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

Объекту может быть присвоено специальное  значение null. Объект, который еще не инициализирован, также имеет значение null.

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

имя-объекта.имя-свойства

имя-объекта.имя-функции(аргументы)

Для ссылки на текущий объект используется ключевое слово this.

3.8. Встроенные объекты JavaScript

В JavaScript имеются следующие встроенные объекты, свойства и методы которых доступны в сценариях без предварительного определения этих объектов. Эти типы представлены в табл. 6.7.

Таблица 6.7. Встроенные объекты языка JavaScript 

Объектные типы

Описание

Math

Математические константы и функции

Array

Массив

Global

Глобальные методы

Number

Числа

String

Строки

Boolean

Логические данные

Date

Даты и время

Function

Функция

Object

Объект

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

3.8.1. Объект Math

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

Свойства объекта Math приведены в табл. 6.8.

Таблица 6.8. Свойства объекта Math

Свойство

Значение

E

Значение константы Эйлера (2,718).

PI

Значение числа π (3,141592653589793).

LN2

Значение натурального логарифма 2 (0,693).

LN10

Значение натурального логарифма 10 (2,302).

LOG2E

Значение двоичного логарифма e (1,442).

LOG10E

Значение десятичного логарифма e (0,434).

SQRT1_2

Значение квадратного корня 0,5 (0,707).

SQRT2

Значение квадратного корня 2 (1,414).

Методы объекта Math включают процедуры вычисления тригонометрических, экспоненциальных, логарифмических и других математических функций. Эти методы представлены в табл. 6.9. (каждый из них возвращает значение соответствующей функции от заданного аргумента или аргументов):

Таблица 6.9. Методы объекта Math

Метод

Описание

abs(x)

Абсолютное значение аргумента |x|.

sin(x), cos(x), tan(x)

Стандартные тригонометрические функции sin(x), cos(x) и tg(x); аргумент задается в радианах.

acos(x), asin(x), atan(x)

Обратные тригонометрические функции arcsin(x), arccos(x) и arctg(x).

atan2(x,y)

Возвращает угол (в радианах) от оси X до точки с координатами (x, y).

exp(x)

Экспоненциальная функция ex.

log(x)

Натуральный логарифм ln(x).

ceil(x)

Наименьшее целое, большее или равное значению аргумента x.

floor(x)

Наибольшее целое, меньшее или равное значению аргумента x.

min(x1,x2,…, xn)

Наименьшее значение среди аргументов x1,x2,…xn.

max(x1,x2,…, xn)

Наибольшее значение среди аргументов x1,x2,…xn.

pow(x,y)

Показательная функция: xy.

round(x)

Округление аргумента x до ближайшего целого.

sqrt(x)

Квадратный корень аргумента x.

random()

Возвращает случайное число, равномерно распределенное между 0 и 1.

3.8.2. Объект  Array

В JavaScript нет типа данных массив, но с помощью объекта Array можно создавать массивы в приложениях и манипулировать ими. Методы этого объекта позволяют сортировать, объединять, записывать в обратном порядке содержимое массивов и выполнять многие другие действия.

Массив – это упорядоченный   набор однородных данных, к элементам которого можно обращаться по имени и индексу. Массив создается с помощью ключевого слова new и конструктора массива – системной функции Array, инициализирующей элементы массива. Создать массив можно одной из следующих конструкций:

var имя-массива = new Array();

var имя-массива = new Array(элемент-0, элемент-1, . . ., элемент-n);

var имя-массива = new Array(длина-массива);

В первом случае переменная с именем имя-массива просто объявляется как массив. Элементы самого массива не заданы, и поэтому к ним нельзя обратиться, пока в сценарии им явно не будут присвоены значения. Во втором случае конструктору массива в качестве параметров передаются значения элементов массива, а в третьем случае задается длина массива. Если конструктору передается только одно нечисловое значение, то создается массив из одного элемента с заданным в аргументе значением.

Следует отметить, что  JavaScript, так же как в C, C++ и Java,  нумерация элементов массивов начинается с нуля.

Для получения значения элемента массива необходимо в квадратных скобках рядом с именем массива указать порядковый номер элемента. Элемент массива можно использовать в выражениях и в левой части оператора присваивания.

Массив обладает свойством length, хранящим текущее значение количества элементов в массиве и методами, которые перечислены в табл. 6.10.

Таблица 6.10. Методы объекта Array

Метод

Действие

concat(массив1,...)

Объединяет несколько массивов в один массив.

join(разделитель)

Соединяет все элементы массива в одну строку. Элементы в строке отделяются друг от друга символом-разделителем. Если разделитель не задан, элементы массива отделяются друг от друга запятыми.   

pop()

Удаляет последний элемент из массива и возвращает его. значение

push(элемент-1,...)

Добавляет один или несколько элементов в конец массива и возвращает последний добавленный элемент.

reverse()

Переставляет элементы массива в обратном порядке: первый элемент становится последним, а последний первым.

shift()

Удаляет первый элемент массива и возвращает его значение.

slice(индекс-1, индекс-2)

Создает сечение массива, начиная с индекс-1 и заканчивая (индекс-2) - 1, в виде нового массива

splice(индекс, n, 

элемент-1,...)

Изменяет и/или удаляет элементы из массива. Индекс указывает, с какого индекса начинается изменение элементов, n – количество изменяемых элементов, элемент-1,... – заменяемые элементы. Если элемент-1,...  опущены, то n элементов, начиная с индекса индекс, удаляются из массива.

sort(функция-сравнения)

Сортирует элементы массива в соответствии с правилами, заданными в функции-сравнения. Функция-сравнения должна возвращать отрицательное значение, если значение первого аргумента меньше чем второго; 0, если  значения аргументов равны; положительное значение, если значение первого аргумента больше чем второго. Если параметр опущен, сортировка производится в лексикографическом порядке.

unshift(элемент-1,...)

Добавляет один или более элементов в начало массива и возвращает новую длину массива.

Для задания массивов нескольких размерностей следует значениям элементов массивов присваивать массивы.

3.8.3. Объект Global

Объект Global содержит так называемые высокоуровневые свойства и методы. Это единственный встроенный тип JavaScript, не имеющий конструктора, поэтому нельзя создавать экземпляры объектов типа Global.  Свойства и методы Global доступны сразу же после начала работы интерпретатора (при обращении к ним не надо указывать имя объекта Global, а только наименование свойства или функции).

Для объекта Global определены свойства, приведенные в табл. 6.11.

Таблица 6.11. Свойства объекта Global

Свойство

Значение

infinity

Числовое значение, представляющее бесконечность.

NaN

Значение, представляющее не число.

Методы объекта Global приведены в табл. 6.12.

Таблица 6.12. Методы объекта Global

Метод

Действие

escape(строка)

Возвращает шестнадцатеричное значение кода аргумента по следующему алгоритму: если код символа 127, то если символ – буква или цифра, возвращается значение символа, иначе – код символа в виде %nn, где nn – шестнадцатеричный код символа; если код символа  > 127, то возвращается код символа в виде %unnnn, где nnnn  – шестнадцатеричный код символа в кодировке Unicode.

eval(строка) 

Вычисляет строку кода JavaScript.  

isFinite(число)

Определяет, является ли аргумент конечным числом.

isNaN(число) 

Определяет, является ли аргумент не-числом.

parseFloat(строка)  

Анализирует строку и возвращает число с плавающей точкой. Если начало строки – число, возвращается это число (символы после последней цифры игнорируются). Если строка начинается не со знака "+" или "-" и не с цифры – возвращается NaN.

parseInt(строка)  

Анализирует строку и возвращает целое число. Если начало строки – число, возвращается это число (символы после последней цифры игнорируются). Если строка начинается не со знака "+" или "-" и не с цифры – возвращается NaN.   

unescape(строка)  

Восстанавливает строку, закодированную с помощью метода escape().

3.8.4. Объект Number

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

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

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

var имя-переменной = new Number(значение);

где имя-переменнной – имя переменной типа Number, а значение – числовое значение, присваиваемое этой объектной переменной.  

Для объекта Number определены свойства, приведенные в табл. 6.13.

Таблица 6.13. Свойства объекта Number

Свойство

Значение

MAX_VALUE

Максимальное число (1,79E+308).

MIN_VALUE

Минимальное число (5,00E-324).

NaN

Специальное нечисловое значение (NaN).

NEGATIVE_INFINITY

Значение, меньшее MIN_VALUE, которое трактуется как отрицательная бесконечность.

POSITIVE_INFINITY

Значение, большее MAX_VALUE, которое трактуется как положительная бесконечность.

Если при создании объекта типа Number аргумент метода-конструктора нельзя преобразовать в числовую форму, создаваемому объекту присваивается значение NaN.

Собственных методов объект Number не имеет.  

3.8.5. Объект String

Когда переменной присваивается строковый литерал, она становится, как  указывалось выше, строковой переменной. На самом деле JavaScript не поддерживает строковых типов, а создает объект типа String. Таким образом, любая строковая переменная или строковый литерал является объектом String, к которому могут быть применены соответствующие методы этого объекта.

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

var имя-переменной = new String(значение);

Параметром конструктора является любая допустимая строка.

Объект String имеет единственное свойство length, хранящее длину строки, содержащейся  в строковом  объекте.  Индексирование символов в строке, так же, как и элементов в массиве, в JavaScript начинается с 0.

Методы операций над строкой объекта String представлены в табл. 6.14.

Таблица 6.14. Методы объекта String

Метод

Действие

charAt(индекс) 

Возвращает символ, с заданной в индексе позицией символа в строке.

charCodeAt(индекс)

Возвращает код символа, с заданной в индексе позицией символа в строке.

fromCharCode(код-1, код-2, ..., код-n)

Возвращает строку по заданным в параметрах код-1, код-2, ..., код-n кодам Unicode для символов строки.

indexOf(строка, индекс) 

Возвращает позицию первого вхождения строки в исходной строке. Если задан аргумент индекс, то поиск ведется с заданной позиции, иначе – с начала строки.

lastIndexOf(строка, индекс)

Возвращает позицию последнего вхождения строки в исходной строке. Если задан аргумент индекс, то поиск ведется с заданной позиции, иначе – с конца строки.

concat(строка1,...)

Конкатенация строк.

split(разделитель, предел)

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

slice(индекс1, индекс2)

Возвращает подстроку, начиная с индекса1 и заканчивая позицией в строке, на единицу меньшей, чем индекс2. Если индекс2 опущен, выделение производится до конца строки. Если индекс1 и/или индекс2 являются отрицательными, значения индекс1 и индекс2 получаются вычитанием заданных значений из длины.  

substring(индекс1, индекс2) 

Действует аналогично методу slice().

substr(индекс, длина)

Возвращает подстроку, начиная с индекса заданной длины. Если длина не задана, возвращается подстрока, начиная с индекса до конца строки. Если длина нулевая или отрицательная, возвращается пустая строка.

toLowerCase()

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

toUpperCase()

Возвращает строку, все символы букв в которой переведены в верхний регистр.

3.8.6. Объект Date 

Для представления дат в программе JavaScript используется объект Date. Синтаксис предложений создания объекта типа Date следующий:

var имя-переменной = new Date();

var имя-переменной = new Date(числовая-дата);

var имя-переменной = new Date(год, месяц, число, час, минута, секунда, миллисекунда);

Первое предложение присваивает переменной значение текущей даты. Второе предложение присваивает переменной значение даты, заданное в параметре в виде числа миллисекунд, прошедших с 1 января 1970 года. Третье предложение присваивает переменной значение с заданными параметрами даты и времени. Значение года задается в полном виде (например, 2002), значение месяца задается в виде его номера (в диапазоне от 0 – январь, до 11 – декабрь), число – в виде целого числа в диапазоне от 1 до 31, час – в виде целого числа в диапазоне от 0 до 23, минута и секунда – в виде целых чисел в диапазоне от 0 до 59, миллисекунда – в виде целого числа в диапазоне от 0 до 999.  Параметры конструктора, начиная с параметра час, являются необязательными и их можно опустить.

Объект Date не имеет собственных свойств, однако для него определено большое количество методов, основные из которых представлены в табл. 6.15.

Таблица 6.15. Методы объекта Date

Метод

Действие

getYear()

setYear(год)

Соответственно получает и задает значение года. Если значение года, получаемое в getYear(), лежит в диапазоне от 1900 до 1999, возвращаемое значение содержит две последние цифры года, иначе – полное значение года. Параметр год должен быть двузначным числом  в диапазоне от 0 до 99 и задает дату от 1900 до 1999 года.

getFullYear()

setFullYear(год, номер-месяца, 

число-месяца)

Соответственно получает и задает значение года. Получаемое и задаваемое значение является полным значением года. Номер месяца лежит в диапазоне от 0 (январь) до 11 (декабрь), а число месяца – в диапазоне от 1 до 31. Все параметры, кроме первого, являются необязательными.

getMonth()

setMonth(номер-месяца, 

число-месяца)

Соответственно получает и задает значение номера месяца. Номер месяца лежит в диапазоне от 0 (январь) до 11 (декабрь), а число месяца – в диапазоне от 1 до 31. Параметр число-месяца не является обязательным.

getDate()

setDate(число-месяца)

Соответственно получает и задает значение числа месяца. Получаемое и задаваемое значение лежат в диапазоне от 1 до 31.

getDay()

setDay(день-недели)

Соответственно получает и задает значение номера дня недели месяца. Получаемое и задаваемое значение лежат в диапазоне от 0 (воскресенье) до 6 (суббота).

getHours()

setHours(часы, минуты, секунды, миллисекунды)

Соответственно получает и задает значение времени дня.  Получаемое и задаваемое значение часа лежит в диапазоне от 0 до 23, минуты и секунды – в диапазоне от 0 до 59, миллисекунды – в диапазоне от 0 до 999. Все параметры, кроме  первого, являются необязательными.  

getMinutes()

setMinutes(минуты, секунды, миллисекунды)

Соответственно получает и задает значение времени дня, начиная с минут.  Получаемое и задаваемое значение минуты и секунды лежит  в диапазоне от 0 до 59, , миллисекунды – в диапазоне от 0 до 999. Все параметры, кроме  первого, являются необязательными.  

getSeconds()

setSeconds(секунды, миллисекунды)

Соответственно получает и задает значение времени дня, начиная с секунд.  Получаемое и задаваемое значение секунды лежит  в диапазоне от 0 до 59, , миллисекунды – в диапазоне от 0 до 999. Параметр миллисекунда, кроме  является необязательным.  

getMilliSeconds()

setMilliSeconds (миллисекунды)

Соответственно получает и задает значение миллисекунд.  Получаемое и задаваемое значение лежат в диапазоне от 0 до 999.

getTime()

setTime(миллисекунды)

Соответственно получает и задает значение миллисекунд, прошедших с 1 января 1970 года.   

getTimezoneOffset()

Возвращает разницу в минутах между временем текущей временной зоны и универсальным согласованным временем (UTCUniversal Coordinated Time) (бывшее время по Гринвичу).

4. Порядок выполнения работы

Создайте интерактивную Web-страницу с использованием языка JavaScript по одному из приведенных ниже вариантов.

Вариант 6-01

Создайте Web-страницу, выполняющую математические операции над введенным значением x. С помощью диалогового окна prompt  сначала задается значение x, а затем математическое выражение, выполняемое над переменной (например, Math.sin(x)).  Результат выводится пользователю с помощью метода alert. Указание: для вычисления выражений используйте метод eval() встроенного объекта Global.

Вариант 6-02

Создайте Web-страницу, в которой с помощью метода prompt вводятся числа и запоминаются в массиве. После окончания ввода (при вводе пустой строки) из массива удаляются одинаковые элементы. Получившийся  массив выводится с помощью метода alert.

Вариант 6-03

Создайте Web-страницу, в которой с помощью метода prompt вводятся числа и запоминаются в массиве. Признаком окончания ввода массива является пустая строка. После этого проверяется, является ли массив симметричным (массив называется симметричным, если его значение его первого элемента совпадает со значением второго элемента, значение второго элемента совпадает со значением предпоследнего элемента и т.д.). Результат проверки выводится  с помощью метода alert.

Вариант 6-04

Создайте Web-страницу, в которой с помощью метода prompt вводятся числа и запоминаются в массиве. Признаком окончания ввода массива является пустая строка. После этого проверяется, элементы массива переставляются следующим образом: сначала идут отрицательные элементы массива, отсортированные по возрастанию значений, а затем положительные элементы, отсортированные по убыванию значений. Получившийся  массив выводится с помощью метода alert.

Вариант 6-05

Создайте Web-страницу, в которой с помощью метода prompt вводятся числа и запоминаются в массиве. Признаком окончания ввода массива является пустая строка. После этого вводятся нижняя и верхняя граница для значений элементов массива. Затем из массива удаляются элементы, значения которых меньше нижней границы или больше верхней границы. Получившийся  массив выводится с помощью метода alert.

Вариант 6-06

Создайте Web-страницу, в которой с помощью метода prompt вводятся числа и запоминаются в массиве. Признаком окончания ввода массива является пустая строка. Затем определяется, все ли элементы массива различны. Результат определения выводится с помощью метода alert (если среди элементов массива есть одинаковые элементы, выводятся их значения и индексы).

Вариант 6-07

Создайте Web-страницу, в которой с помощью метода prompt вводятся числа и запоминаются в двух массивах. Признаком окончания ввода каждого массива является пустая строка. Затем оба массива объединяются таким образом, что в результирующем массиве остается только по одному значению каждого из элементов массива (в массивах может быть несколько элементов с одинаковыми значениями). Получившийся  массив выводится с помощью метода alert.

Вариант 6-08

Создайте Web-страницу, в которой с помощью метода prompt вводятся числа и запоминаются в двух массивах. Признаком окончания ввода каждого массива является пустая строка. Затем строится массив, являющийся пересечением двух введенных массивов (в массиве-пересечении содержатся только те элементы, которые есть и в первом, и во втором массивах).  Получившийся  массив выводится с помощью метода alert.

Вариант 6-09

Создайте Web-страницу, в которой с помощью метода prompt вводятся числа и запоминаются в двух массивах. Признаком окончания ввода каждого массива является пустая строка. Сформируйте два массива, элементами которых являются те элементы исходных двух массивов, которые встречаются соответственно только  в первом или только во втором  массиве. Получившиеся  массивы выводятся с помощью метода alert.

Вариант 6-10

Создайте Web-страницу, в которой с помощью метода prompt вводятся числа и запоминаются в массиве. Признаком окончания ввода массива является пустая строка. Определите и выведите с помощью метода alert значения и индексы локальных минимумов массива (локальным минимумом массива называется элемент, значение которого меньше значений соседних элементов).

Вариант 6-11

Создайте Web-страницу, в которой определяется интеграл функции f(x) на заданном интервале с заданной точностью. Для этого с помощью метода prompt вводятся: функция  f(x) (например, Math.pow(x,2)), левая a и правая b границы интервала по оси x, а также точность вычислений. Для определения интеграла используется метод трапеций, в котором интервал  [a,b] делится на n равных промежутков, а затем интеграл вычисляется по формуле:

Затем количество промежутков увеличивается в два раза и снова вычисляется интеграл. Процесс повторяется до тех пор, пока не будет получено значение интеграла с заданной точностью. Результат выводится с помощью метода alert. Указание: для вычисления значений введенной функции используйте метод eval() встроенного объекта Global.

Вариант 6-12

Создайте Web-страницу, в которой определяется корень функции f(x) на заданном интервале с заданной точностью. Для этого с помощью метода prompt вводятся: функция  f(x) (например, Math.pow(x,3) + 4), левая и правая границы интервала по оси x, а также точность вычислений. Для определения корня используется метод деления отрезка пополам и определения, в каком из двух отрезков находится корень (если корень находится на данном отрезке, то на его концах функция имеет значения разного знака). Затем процесс деления  отрезка повторяется, пока значение корня не будет определено с заданной точностью.   Результат выводится с помощью метода alert. Указание: для вычисления значений введенной функции используйте метод eval() встроенного объекта Global.

Вариант 6-13

Создайте Web-страницу, в которой определяется таблица значений функции f(x) на заданном интервале. Для этого с помощью метода prompt вводятся: функция  f(x) (например, Math.exp(x)), левая и правая границы интервала по оси x, а также выводимое количество значений аргумента и функции в таблице.  Таблица выводится с помощью метода alert. Указание: для вычисления значений введенной функции используйте метод eval() встроенного объекта Global.

Вариант 6-14

Создайте Web-страницу, в которой определяется, является ли функция f(x) монотонно убывающей или монотонно возрастающей на заданном интервале. Для этого с помощью метода prompt вводятся: функция  f(x) (например, Math.exp(x)), левая и правая границы интервала по оси x, а также точность определения (шаг приращения функции).  Результат выводится с помощью метода alert. Указание: для вычисления значений введенной функции используйте метод eval() встроенного объекта Global.

Вариант 6-15

Создайте Web-страницу, определяющую тип вводимого (с помощью метода prompt) числа: целое число, вещественное число или не число. Результат выводится пользователю с помощью метода alert.

Вариант 6-16

Создайте Web-страницу, определяющую частоту появления каждого из заданных символов во вводимых строках. Строка символов, частоту появления которых надо определить, задается с помощью метода prompt. Затем, также с помощью метода prompt, вводится последовательность строк (признаком окончания ввода считается пустая строка). Результаты (символ и частота его повторения) выводятся пользователю с помощью метода alert.

Вариант 6-17

Создайте Web-страницу, определяющую, встречается ли заданная последовательность символов (без учета регистра) во вводимых строках. Строка символов, которую надо определить, задается с помощью метода prompt. Затем, также с помощью метода prompt, вводится последовательность строк (признаком окончания ввода считается пустая строка). Количество строк, в которых встречается заданная последовательность символов, и сами строки выводятся пользователю с помощью метода alert.

Вариант 6-18

Создайте Web-страницу, в которой выводится день недели для заданной даты. Web-страница должна содержать заголовок «Определение дня недели по заданной дате». Ввод даты: числа, месяца (на русском языке) и года производится в форме. Вызов функции, определяющей день недели, производится при нажатии кнопки «Выдать день недели». Вывод пользователю введенной даты и дня недели выполняется с помощью метода alert.

Вариант 6-19

Создайте Web-страницу, определяющую, по введенным с помощью метода prompt  дню, месяцу и году рождения, количество лет, месяцев и дней, часов и минут, прожитых пользователем. Результаты выводятся пользователю с помощью метода alert.

Вариант 6-20

Создайте Web-страницу, в которой, для введенных границ интервала, определяются автоморфные числа в данном интервале. Натуральное число называется автоморфным, если оно содержится в качестве младших цифр в своем квадрате (например, число 25 является автоморфным, т.к. 252=625). Результаты (значение числа и его квадрат) выдаются с помощью метода alert.

Вариант 6-21

Создайте Web-страницу, в которой, по заданному с помощью метода prompt  году определяется название года по старояпонскому календарю. В старояпонском календаре принят 60-летний цикл, состоящий из пяти 12-летних подциклов. Подциклы обозначались названиями цвета: зеленый, красный, желтый, белый, черный. Внутри каждого подцикла года носили названия животных: крысы, коровы, тигра, зайца, дракона, змеи, лошади, овцы, обезьяны, курицы, собаки и свиньи. Началом очередного цикла был 1984 год (год зеленой крысы). Результат выдается с помощью метода alert.

Вариант 6-22

Создайте Web-страницу, в которой, по заданным значениям числа, дня недели  и года, определяется месяцы этого года, когда заданное число является указанным днем недели (в месяце может быть несколько таких дней).  Результаты выдаются с помощью метода alert.

Вариант 6-23

Создайте Web-страницу, в которой, по заданным значения дней в неделе, когда проводятся занятия, и номеру семестра выдается количество занятий и даты их проведения в семестре. Признаком окончания ввода дней недели является пустая строка. Начало осеннего семестра –  01.09, окончание – 31.12; начало весеннего семестра – 07.02, окончание – 31.05. Результаты выдаются с помощью метода alert.

Вариант 6-24

Создайте Web-страницу, в которой, для введенных с помощью метода prompt  границ интервала, определяются числа Армстронга в данном интервале. Натуральное число называется числом Армстронга, если оно совпадает с суммой k-ых степеней составляющих его цифр, где k – количество цифр в числе. Например, число 153 является числом Армстронга, т.к. 153=13+53+33. Результаты (значения чисел Армстронга)  выдаются с помощью метода alert.

Вариант 6-25

Создайте Web-страницу, в которой, по двум введенным с помощью метода prompt  значениям дня, месяца и года определяется и выдается с помощью метода alert количество лет, месяцев, дней, часов, минут и секунд  между двумя этими датами.

Вариант 6-26

Создайте Web-страницу, в которой с помощью метода prompt вводится последовательность чисел. Признаком окончания ввода последовательности чисел является пустая строка. Определите два самых больших числа последовательности. Результат выводится с помощью метода alert.

Вариант 6-27

Создайте Web-страницу, в которой с помощью метода prompt вводятся числа и запоминаются в массиве. После окончания ввода (при вводе пустой строки) определяются элементы массива, имеющие одинаковые значения и их индексы. Результат выводится с помощью метода alert.

Вариант 6-28

Создайте Web-страницу, в которой с помощью метода prompt вводятся две строки. После окончания ввода определяется максимальная последовательность символов, которая имеет одинаковое значение и в первой и второй строке. Результат выводится с помощью метода alert.

Вариант 6-29

Создайте Web-страницу, в которой с помощью метода prompt вводятся несколько строк строки (признаком окончания ввода строк является ввод пустой строки). После окончания ввода определяются те символы, которые есть во всех введенных строках. Результат выводится с помощью метода alert.

Вариант 6-30

Создайте Web-страницу, в которой с помощью метода prompt вводятся две даты (день месяца, номер месяца и год). После окончания ввода количество определяются количество лет, месяцев, недель и дней между двумя датами. Результаты выводятся с помощью метода alert.

5. Содержание отчета

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

6. Вопросы для самоконтроля

  1.  Какие два похода используются при создании объекта в объектно-ориентированных языках программирования?
  2.  Каковы особенности реализации объектов в JavaScript?
  3.  Какие группы объектов определены в JavaScript? Дайте краткую характеристику каждой группы.
  4.  Как создается новый объект в JavaScript? Что такое конструктор объекта?
  5.  Как в JavaScript выполняется обращение к свойствам и методам объекта, а также ссылка на текущий объект?
  6.  Какие встроенные объекты определены в JavaScript? Дайте краткую характеристику каждого объекта.
  7.  Какие группы математических констант и математических функций определены в объекте Math в JavaScript?
  8.  Как в JavaScript задается массив?
  9.  Каковы особенности нумерации массивов в JavaScript?
  10.  Какие возможности для операций с массивами предоставляют методы встроенного объектного типа Array в JavaScript?
  11.  Как определяются многомерные массивы в JavaScript?
  12.  Какие свойства и методы определены в объекте Global в JavaScript? Чем отличается доступ к свойствам и методам этого объекта от доступа к методам и свойствам других встроенных объектов?
  13.  Какие методы объекта Global в JavaScript можно использовать для преобразования строки в число?
  14.  Как объявляются и инициализируются объекты типа Number в JavaScript? Какие свойства определены для объекта Number?
  15.  Какими способами в JavaScript можно объявить строку и присвоить ей значение?
  16.  Как можно определить текущую длину строки в JavaScript?
  17.  Какие типы методов определены для объекта String, и чем они отличается друг от друга?
  18.  Какие операции над строками обеспечивают методы объекта String?
  19.  Как объявляются и инициализируются объекты типа Boolean в JavaScript?
  20.  Как в JavaScript определяется объект типа Date?
  21.  Какие операции над датой и временем в JavaScript обеспечивают методы объекта Date?

Файл: file:///web/5/gigaref/public_html/www/files/0/1e749e167d3a464a2f6a4e9e7053a2f7.doc   Создан: 2007-03-13T17:27:00Z Модифицирован: 2007-03-13T17:27:00Z     Автор:




Возможно эти работы будут Вам интересны.

1. Программирование на языке С++ с использованием классов

2. Программирование на языке высокого уровня

3. Использование классов в языке Си++

4. Фразеологизмы в русском языке

5. Поведение ударений в русском языке

6. АССИМИЛЯЦИЯ ИСПАНСКИХ ЗАИМСТВОВАНИЙ В АНГЛИЙСКОМ ЯЗЫКЕ

7. Основные типы приложений на языке Java

8. Причины заимствования английских слов в русском языке

9. Особенности реализации эмоционально-оценочной лексики в русском языке

10. Программа на языке программирования Visual Basic для вычисления выражения