JavaScript (методка+задания)

There is still time to download: 30 sec.



Thank you for downloading from us :)

If anything:

  • Share this document:
  • Document found in the public.
  • Downloading this document for you is completely free.
  • If your rights are violated, please contact us.
Type of: docx
Founded: 16.03.2020
Added: 01.05.2020
Size: 0.34 Мб


JavaScript - Урок 2. Где размещать javascript-код
Javascript-код может быть размещен как на самой странице, так и во внешнем файле.Javascript-код на страницеСценарии, написанные на языке javascript, могут располагаться на самой html-странице между тегами <script></script>, которые в свою очередь обычно находятся в тегах <head></head>. У тега <script> должен быть указан параметр language, который и указывает язык написания скрипта:
<html>
<head>
<title>Заголовок документа</title>
<link rel="stylesheet" type="text/css" href="style.css">
<script language="javascript"> </script>
</head>
<body>
</body>
</html>

Теоретически теги <script></script> могут располагаться и в теле документа (в тегах <body></body>). Выполняться такой сценарий будет тогда, когда браузер "дочитает" страницу до этого места (до тегов <script></script>). Использовать такой способ сейчас не принято.Javascript-код во внешнем файлеСоздайте в блокноте страницу (пока пустую) и сохраните ее как script.js в ту же папку, где лежит html-страница:
Это будет наша страница с javascript-кодом. Теперь нам надо подключить страницу script.js к html-странице. Для этого, как вы помните, в html существует тег <script>, который и отвечает за подключение внешних файлов скриптов (html - урок 2). Добавим этот тег в html-страницу:
<html>
<head>
<title>Заголовок документа</title>
<link rel="stylesheet" type="text/css" href="style.css">
<script type="text/javascript" src="script.js"></script>
</head>
<body>
</body>
</html>

JavaScript – Урок 3. Обработчики событий
Давайте напишем нашу первую программу. Для этого сделаем исключение и поместим наш javascript-код на html-странице. Итак, откройте (или создайте) html-страницу и поместите в нее следующий код:
<html>
<head>
<title>Заголовок документа</title>
<link rel="stylesheet" type="text/css" href="style.css">
<script language="javascript">
document.write("Моя первая страница.");
</script>
</head>
<body>
</body>
</html>

Откройте эту страницу в браузере, она выглядит так:

Давайте разберемся как это работает. Браузер читает нашу html-страницу, видит оператор для выполнения document.write("Моя первая страница."); и выполняет его. Рассмотрим из чего состоит сам оператор (инструкция):При интерпретации html-страницы браузер создает объекты javascript. Они хранятся в виде иерархической структуры, отражая структуру документа, например:
На самом верхнем уровне находится объект window, представляющий окно браузера и являющийся "родителем" всех остальных объектов. Расположенные ниже могут иметь свои подчиненные объекты. Так объект document (текущая страница) может иметь дочерний объект form (форма) и т.д.Все объекты имеют методы (отделяются от объекта точкой), например:document.write позволяет писать текст в текущую страницу,window.open открывает новое окно браузера.Также объекты имеют свойства, например:document.bgcolor содержит значение фонового цвета текущей страницы,document.title содержит заголовок страницы.Все инструкции программного кода заканчиваются точкой с запятой. Об этом надо помнить.Сценарий, который мы написали, выполнился немедленно после загрузки страницы. Однако в большинстве случаев нам нужно, чтобы сценарий выполнялся после каких-либо действий пользователя: нажатия на кнопку или ввода текста. Т.е. в ответ на пользовательское событие.Для этого в тегах элементов страницы введены параметры обработки событий, задающие действия, выполняемые при возникновении события, связанного с элементом. Например:
<div onClick="addText();"></div>

Здесь Click - событие (щелчок по div-у), onClick - обработчик события, addText() - имя функции, которая сработает при возникновении этого события (щелчка по div-у).Функции мы будем рассматривать в следующем уроке, а сейчас перечислим события, которые поддерживаются javascript. Запоминать их не следует, в дальнейшем можете просто обращаться к этой таблице.
событие когда происходит обработчик события
Blur потеря объектом фокуса onBlur
Change пользователь изменяет значение элемента onChange
Click пользователь щелкает мыщью по объекту onClick
DblClick пользователь делает двойной щелчок мышью по объекту onDblClick
DragDrop пользователь перетаскивает мышью объект onDragDrop
Error возникновение javascript-ошибки onError
Focus окно или элемент формы получает фокус onFocus
KeyDown пользователь нажимает клавишу клавиатуры onKeyDown
KeyPress пользователь удерживает нажатой клавишу клавиатуры onKeyPress
KeyUp пользователь отпускает клавишу клавиатуры onKeyUp
Load документ загружается в браузер onLoad
MouseDown пользователь нажимает кнопку мыши onMouseDown
MouseOut указатель мыши выходит за пределы элемента onMouseOut
MouseOver указатель мыши помещается над элементом onMouseOver
MouseUp пользователь отпускает кнопку мыши onMouseUp
Move пользователь перемещает окно onMove
Reset пользователь нажимает кнопку "reset" формы onReset
Resize пользователь изменяет размеры окна или элемента onResize
Select пользователь выбирает элемент формы onSelect
Submit пользователь нажимает кнопку "submit" формы onSubmit
Unload пользователь закрывает документ onUnload
JavaScript - Урок 4. Создание JavaScript-функций
Функция - это именованная последовательность операторов (инструкций). Любая функция имеет следующий синтаксис:function имя (){оператор;.......оператор;} Сначала идет ключевое слово function, затем имя функции, затем в круглых скобках перечисляются параметры (если они есть), затем в фигурных скобках перечисляются операторы, т.е. последовательность выполняемых действий. Каждый оператор заканчивается точкой с запятой.Рассмотрим на примере. Во втором уроке мы создали html-страницу, страницу script.js для функций и подключили одну к другой. Эти страницы мы и будем использовать. Поместим в html-страницу следующий код:
<html>
<head>
<title>Заголовок документа</title>
<link rel="stylesheet" type="text/css" href="style.css">
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<div onClick="showMessage();">Щелкни меня</div>
</body>
</html>

Мы указали, что при щелчке пользователя по div-у (т.е. по словам "Щелкни меня") должна быть вызвана функция с именем "showMessage". Теперь на странице script.js надо написать саму функцию "showMessage". Открываем страницу script.js и пишем:
function showMessage(){ alert ("Вы щелкнули по div-у");
}

Наша функция "showMessage" будет выполнять одно действие - отображать окно предупреждений с текстом "Вы щелкнули по div-у". alert - это стандартная функция javascript, которая и выводит окно предупреждений, мы лишь задаем текст для этого окна.В javascript есть стандартный набор функций, который можно использовать (например, alert) и так называемые пользовательские функции, т.е. те, которые мы создаем сами. Некоторые функции javascript мы будем изучать по мере необходимости, некоторым же будут посвящены отдельные уроки.Вернемся к нашему примеру. Откройте вашу html-страницу с помощью браузера и щелкните по div-у. Можете щелкнуть и в примере ниже.
Щелкни меня
Таким образом, мы рассмотрели механизм работы обработки событий:
В html-странице мы привязываем к нужному элементу обработчик события (onClick, onMouseUp и т.д.), в качестве значения которого указываем имя функции, которая и должна сработать, когда настанет событие.
На странице с расширение .js мы пишем код этой функции, т.е. инструкции, которые должны быть выполнены, если функция инициализирована (к ней обратились).
Давайте усложним задачу и напишем сценарий, который будет рассчитывать площадь прямоугольника по введенным пользователем длине и ширине. Для этого сначала разместим на html-странице нужные элементы формы:
<html>
<head>
<title>Расчет площади прямоугольника</title>
<link rel="stylesheet" type="text/css" href="style.css">
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<form name="forma1">
Введите длину прямоугольника <input type="text" name="t1" size="10"><br><br>
Введите ширину прямоугольника <input type="text" name="t2" size="10"><br><br>
<input type="button" name="button" value="Вычислить"><br><br>
Площадь прямоугольника равна <input type="text" name="res" size="10">
</form>

</body>
</html>

В браузере наша страница будет выглядеть так:
Начало формы
Введите длину прямоугольника Введите ширину прямоугольника Площадь прямоугольника равна 
Конец формы
Если вы забыли, как задаются элементы форм, то обратитесь к уроку HTML - работа с формами.Итак, пользователь вводит значения ширины и длины и нажимает на кнопку "Вычислить". После чего, в поле площадь должен появиться результат. Таким образом, событие наступает при нажатии на кнопку "Вычислить", значит именно к ней мы и привяжем обработчик события. Функцию вычисления площади назовем "areaRectangle":
.......
<input type="button" name="button" value="Вычислить"
onClick="areaRectangle();"><br><br>
.......

Теперь пришло время написать саму функцию "areaRectangle". Для этого откроем страницу script.js и напишем заготовку для функции:
function areaRectangle(){}

Теперь надо написать тело функции. Для начала объявим три переменные: a - значение длины прямоугольника, b - значение ширины прямоугольника, s - площадь прямоугольника:
function areaRectangle(){
var a;
var b;
var s;
}

Значение (value) a должно браться из текущей страницы (document), из формы с именем "forma1", из текстового поля с именем "t1". Так это и записывается document.forma1.t1.value, т.е. перечисляются через точку имена объектов от родительского до нужного (иерархическую структуру объектов мы обсуждали в предыдущем уроке). Последним указывается необходимое свойство объекта (value).Аналогично и для значения b - document.forma1.t2.value.А наша переменная s - есть произведение a на b. Запишем это в тело функции:
function areaRectangle(){
var a=document.forma1.t1.value;
var b=document.forma1.t2.value;
var s=a*b;
}

Осталось только написать инструкцию записи вычисленной площади в текстовое поле с именем "res" нашей формы. Т.е нам надо, чтобы в текщую страницу, в форму с именем "forma1", в текстовое поле с именем "res", в качестве значения (value) было присвоено значение s. Также добавим команду объявляющую переменные a и b, как целочисленные parseInt().
function areaRectangle(){
var a=parseInt(document.forma1.t1.value);
var b=parseInt(document.forma1.t2.value);
var s=a*b;
document.forma1.res.value=s;
}

Иными словами, мы сначала присвоили нашим переменным a и b значения из формы, затем произвели необходимые расчеты, а после этого присвоили некоторому элементу формы полученное значение s.Проверьте работу нашей html-страницы у себя в браузере. Если вы все сделали правильно, то должно работать также, как в примере ниже:
Начало формы
Введите длину прямоугольника Введите ширину прямоугольника Площадь прямоугольника равна 
Конец формы
JavaScript - Урок 5. Параметры функции
На прошлом уроке мы написали сценарий, который вычисляет площадь прямоугольника по введенным пользователем значениям длины и ширины. Также мы написали функцию, которая собственно и производит вычисление. Но что, если у нас будет несколько html-страниц, на которых нужно будет вычислять площадь прямоугольника. Нам придется написать для каждой свою функцию? Если оставить сценарий в том виде, в котором он находится сейчас, то - ДА. Но это, как вы понимаете, не очень удобно.Разумнее написать один раз функцию и в дальнейшем использовать ее на всех html-страницах. Для этого html-страница должна каким-то образом указать функции, какие именно значения (с какой страницы) брать для вычисления. Вот здесь нам и пригодятся параметры (те, которые указываются в круглых скобках).Сейчас код нашей формы такой:
<html>
<head>
<title>javascript параметры</title>
<link rel="stylesheet" type="text/css" href="style.css">
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<form name="forma1">
Введите длину прямоугольника <input type="text" name="t1" size="10"><br><br>
Введите ширину прямоугольника <input type="text" name="t2" size="10"><br><br>

<input type="button" name="button" value="Вычислить" onClick="areaRectangle();"><br><br>
Площадь прямоугольника равна <input type="text" name="res" size="10">
</form>
</body>
</html>

А код нашей функции следующий:
function areaRectangle(){
var a=parseInt(document.forma1.t1.value);
var b=parseInt(document.forma1.t2.value);
var s=a*b;
document.forma1.res.value=s;
}

Обратите внимание, в функции мы используем имя формы - forma1, его мы и сделаем параметром. Т.е. перепишем нашу функцию следующим образом:
function areaRectangle(obj){ var a= parseInt(obj.t1.value);
var b= parseInt(obj.t2.value);
var s=a*b;
obj.res.value=s;
}

Т.е мы указали, что функция должна принять в качестве параметра какой-то объект (obj) и производить все действия с ним. Нам осталось на нашей html-странице указать имя объекта:
.......
<input type="button" name="button" value="Вычислить"
onClick="areaRectangle(forma1);"><br><br>
.......

Теперь, когда нам понадобится вычислить площадь на какой-либо другой странице, нам достаточно будет вызвать функцию areaRectangle(), а в скобках указать имя формы. Проверьте работу нашего сценария в браузере.В качестве параметров функции можно передавать любые значения, причем их может быть несколько. Рассмотрим, например, такую задачу. У нас есть три квадратика, при щелчке по каждому должно появляться окно сообщений с указанием цвета квадратика, по которому щелкнули (пощелкайте по квадратикам ниже).
Итак, сначала на странице script.js напишем код функции, которая будет открывать окно сообщений, назовем ее "message". Как вы помните, вызов окна сообщений осуществляет стандартная функция javascript - alert, а текст сообщений мы будем передавать, как параметр, обозначим его как "m":
function message(m){
alert (m);
}

Теперь в html-странице напишем код самих квадратиков:
<html>
<head>
<title>javascript параметры</title>
<link rel="stylesheet" type="text/css" href="style.css">
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<table><tr>
<td><div id="red" onClick="message('Вы щелкнули по красному квадратику');"></div></td>
<td><div id="green" onClick="message('Вы щелкнули по зеленому квадратику');"></div></td>
<td><div id="blue" onClick="message('Вы щелкнули по синему квадратику');"></div></td>
</tr></table>
</body>
</html>
Мы указали, что при щелчке по нашим квадратикам должна срабатывать функция "message", а в качестве параметров указали текст нужных сообщений (они будут подставляться вместо параметра "m" при обращении к функции).Осталось только оформить наши квадратики. Для этого на странице style.css напишем стили для них:
#red, #green, #blue{ width:100px;
height:100px;
margin:10px;
}
#red{ background:red;
}
#green{ background:green;
}
#blue{ background:blue;
}
Все, осталось только проверить работу сценария в браузере.Рассмотрим еще один пример, объединяющий предыдущие. Пусть у нас есть список ягод, а при наведении мышкой на название ягоды, ее описание будет появляться в текстовом поле.
Начало формы

Конец формы
Малина
Черника
Ежевика
Такая конструкция может пригодиться не на одной странице, поэтому нам потребуется два параметра: один с именем объекта (формы), второй - с описанием ягод. Параметры в таком случае записываются через запятую. Итак, наша функция будет выглядеть так:
function showDesc(obj, n){
obj.desc.value=n;
}
где desc - имя текстового поля для вывода описаний. Эта функция будет срабатывать, когда на название ягоды наведен курсор, но нам понадобится еще одна функция, которая будет очищать текстовое поле, когда курсор выйдет за пределы названия. Назовем ее "delete":
function delet(obj){
obj.desc.value=' ';
}
где пробел в одинарных кавычках означает пустую строку.Теперь напишем код самой страницы. Напоминаю, обработчик события, когда указатель мыши помещается над элементом, называется onMouseOver, а обработчика события, когда указатель мыши выходит за пределы элемента - onMouseOut.
<html>
<head>
<title>javascript параметры</title>
<link rel="stylesheet" type="text/css" href="style1.css">
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<form name="forma2">
<textarea name="desc" cols=45 rows=4></textarea>
</form>
<ul>
<li onMouseOver="showDesc(forma2,'Малина обыкновенная — кустарник с многолетним корневищем,'+
' из которого развиваются двухгодичные надземные стебли высотой до полутора метров.');"
onMouseOut="delet(forma2);">Малина</li>

<li onMouseOver="showDesc(forma2,'Черника — кустарничек высотой 15—30 см. Ветви отходят'+
' от главного стволика под острыми углами.');"
onMouseOut="delet(forma2);">Черника</li>
<li onMouseOver="showDesc(forma2,'Ежевика — название нескольких видов растений из рода Rubus'+ ' семейства Розовые.');"
onMouseOut="delet(forma2);">Ежевика</li>

</ul>
</body>
</html>
Обратите внимание, текст в параметре заключается в одинарные кавычки, а при переносе строк используется операция конкатенации строк, т.е. каждая часть заключается в одинарные кавычки и эти части соединяются оператором +. У себя вы можете не использовать конкатенацию строк, просто напишите текст в одну строку.
Задание 1
Номер задания соответствует номеру студента по классному журналу.
В классе имеется N1 мальчиков и N2 девочек. Вычислить сколько процентов от численности класса составляют мальчики и сколько девочки.
Известны количество жителей в государстве и площадь его территории. Определить плотность населения в этом государстве.
Известны объем и масса тела. Определить плотность материала этого тела.
Вам под коттедж отвели участок площадью S м2. Но оказалось, что S1 м2 этого участка занята болотом. Вычислить сколько % участка занимает болото.
С владельцев автомобилей взымается так называемый транспортный налог. Рассчитывается он следующим образом:
Налог = Мощность двигателя * 5.
Составить программу расчета транспортного налога на ваш автомобиль.
Вступительные экзамены в колледж сдавало N0 человек. Из них получили двойки N1 человек, а на одни пятерки сдало N2 человек, которые и прошли в колледж без конкурса. Остальные абитуриенты вынуждены были участвовать в конкурсе на поступление и доказывать свое право учиться в колледже с помощью дополнительных показателей. Определить, сколько процентов абитуриентов от общего их числа вынуждены были участвовать в дополнительном конкурсе.
На курсе числится N0 студентов. Из них N1 студентов участвуют только в спортивных мероприятиях, N2 студентов участвуют только в художественной самодеятельности, а N3 участвуют и в художественной самодеятельности и в спортивных мероприятиях. Определить сколько % студентов не участвуют ни в никаких мероприятиях.
Плата за обучение в вузе в первый год обучения равнялась S1 руб. На следующий год она стала равна S2 руб. На третий год – S3 руб. Определить величину роста оплаты (в %) после первого и второго года обучения.
Некая студентка решила поучаствовать в кастинге конкурса «Мисс Очарование». Для этого она решила сесть на специальную диету. Начальный ее вес составлял M0 кг. Через неделю ее вес стал равен M1 кг, а еще через неделю – M2 кг. Определить, по сколько процентов веса каждую неделю теряла студентка, сидя на диете.
Некая студентка на день св. Валентина получила N1 валентинок, а сама послала N2 валентинок. Определить сколько процентов от общего числа валентинок, прошедших через ее руки, составили полученные валентинки.
Студентке на карманные расходы было выдано S0 руб. Из них S1 руб. было потрачено на косметику, а остальные – на походы в дискотеки. Определить, сколько процентов от общей суммы составила каждая статья расходов.
У студента в семестре по плану должно было быть N0 занятий. Из них по уважительной причине было пропущено N1 занятий, а по неуважительной – N2 занятий. Определить сколько % от общего числа занятий было посещено студентом.
JavaScript – Урок 6. Объект math в javascript
Как уже было сказано, в javascript определены некоторые стандартные объекты и функции. Сегодня мы рассмотрим объект math и его методы.Объект math работает с математическими функциями, а его методы можно использовать для вызова этих функций. Ниже представлены некоторые методы объекта math:
метод описание
abs абсолютное значение
sin, cos, tan тригонометрические функции
log натуральный логарифм
exp экспонента
pow показательная функция
sqrt квадратный корень
min наименьшее значение
max наибольшее значение
Какие-то методы вы будете использовать часто, какие-то редко, а некоторые вам и вовсе не пригодятся. Рассмотрим пример использования объекта math.Предположим мы хотим написать сценарий, который будет вычислять площадь треугольника по трем его сторонам. Для этого нам потребуется использовать формулу Герона:Для тех, кто давно окончил школу, напоминаю:S - площадьa, b, c - длины сторон треугольникаИтак, напишем в html-странице код формы:
<html>
<head>
<title>math javascript</title>
<link rel="stylesheet" type="text/css" href="style1.css">
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<form name="forma3">
Сторона 1 <input type="text" size="8" maxlength="8" name="st1">
Сторона 2 <input type="text" size="8" maxlength="8" name="st2">
Сторона 3 <input type="text" size="8" maxlength="8" name="st3"><br><br>
<input type="button" value="Вычислить" onClick="areaOfTriangle(forma3);">
<input type="reset" value="Отменить">
Результат <input type="text" size="8" maxlength="8" name="res">
</form>
</body>
</html>

Здесь нет ничего нового. Теперь на странице script.js напишем код функции:
function areaOfTriangle(obj){
var a=1*obj.st1.value;
var b=1*obj.st2.value;
var c=1*obj.st3.value;
var p=(a+b+c)/2;
var s=Math.sqrt(p*(p-a)*(p-b)*(p-c));
obj.res.value=s;
}

Здесь мы использовали объект Math и его метод sqrt для извлечения квадратного корня. Выражение, из которого извлекается корень, должно быть взято в скобки.Также обратите внимание на первые три строчки функции, они начинаются с 1*, т.е. наши переменные a, b, c мы умножили на единицу. Зачем? Помните, в первом уроке мы говорили о том, что у каждой переменной есть тип, который определяется автоматически. Так как наши переменные приходят из текстового поля, то и тип они имеют string, т.е. они воспринимаются функцией не как числа, а как буквы.Если бы мы перемножали эти переменные, то их тип автоматически переопределился бы к number, но мы их складываем, а знак операции + расценивается в данном случае, как конкатенация строк. Чтобы этого не происходило, мы и умножили наши переменные на единицу, преобразовав их таким образом к типу number. Ради эксперимента уберите умножение на единицу в этих трех строках и посмотрите, что "насчитает" сценарий. Затем верните правильный вариант и убедитесь, что все работает правильно, как в примере ниже.
Начало формы
Сторона 1  Сторона 2  Сторона 3   Результат 
Конец формы
Вроде все хорошо, но есть один нюанс: если извлекаемый корень является дробным числом, то дробная часть может быть бесконечно длинной. Для точных вычислений это необходимо, но в большинстве случаев достаточно двух знаков после запятой.Чтобы округлить результат до N знаков после запятой можно воспользоваться методом toFixed объекта Number. Синтаксис записи следующий:
(x).toFixed(N)

где x - число, которое надо округлить, а N - число знаков после запятой.Давайте исправим конец нашей функции и округлим результат до 2 знаков после запятой:
function areaOfTriangle(obj){
var a=1*obj.st1.value;
var b=1*obj.st2.value;
var c=1*obj.st3.value;
var p=(a+b+c)/2;
var s=Math.sqrt(p*(p-a)*(p-b)*(p-c));
s=s.toFixed(2);
obj.res.value=s;
}

Вот теперь все аккуратненько:
Начало формы
Сторона 1  Сторона 2  Сторона 3   Результат 
Задания 2
Создайте программу, вычисляющую значение функции Y для введенных значений Х.
При создании формы программы помните, что форма является средством диалога человека и машины, т.е. в нашем случае форма должна обеспечивать ввод значения Х и вывод значения функции.
Номер задания соответствует номеру студента по классному журналу. Проверочные значения позволяют проверить правильность составленных выражений без калькулятора.
Таблица 3.4
№ F(x)=Y Проверочные значения
a B
1 2 3 4
1 2 4
2 1 3
3 1 3
4 2 5
Продолжение таблицы 3.4
1 2 3 4
5 1 4
6 1 5
7 1 4
8 1 2
9 3 5
10 4 6
11 1 3
12 1 5
13 1 3
14 2 5
15 1 5

Конец формы
JavaScript - Урок 7. Ветвления в программе - оператор if
Очень часто возникает ситуация, когда нам нужно выполнить какое-либо действие в зависимости от какого-либо условия. Например, у нас интернет-магазин одежды. Мы спрашиваем у пользователя кто он (мужчина или женщина) и в зависимости от ответа отображаем список соответствующих товаров (мужских или женских). При написании подобных программ используется условный оператор if . Синтаксис у него следующий:if B {S1}else {S2}где B - выражение логического типа, а S1 и S2 - операторы.Работает это так: вычисляется значение выражения B, если оно истинно, то выполняется оператор S1, если оно ложно, то выполняется оператор S2. Строку else {S2} можно опустить.Думаю на примере будет понятнее. Пусть у нас есть форма, в которую пользователь вводит 3 значения. Напишем сценарий, который определит максимальное из введеных чисел.Для начала напишем в html-странице код формы:
<html>
<head>
<title>javascript if</title>
<link rel="stylesheet" type="text/css" href="style1.css">
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<form name="forma4">
Значение 1 <input type="text" size="8" maxlength="8" name="zn1">
Значение 2 <input type="text" size="8" maxlength="8" name="zn2">
Значение 3 <input type="text" size="8" maxlength="8" name="zn3"><br><br>
<input type="button" value="Максимальное значение" onClick="maxZnach(forma4);">
<input type="text" size="8" maxlength="8" name="res">
<input type="reset" value="Отменить">
</form>
</body>
</html>

Теперь на странице script.js напишем код функции:
function maxZnach(obj){
var a=1*obj.zn1.value;
var b=1*obj.zn2.value;
var c=1*obj.zn3.value;
var m=a;
if (b>m) m=b;
if (c>m) m=c;
obj.res.value=m;
}

Итак, наша функция принимает три значения из формы, за максимальное (m) мы принимаем значение a. Затем мы сравниваем: если значение b больше максимального (т.е. a), то максимальным становится b, в противном случае максимальным остается a (т.к. выражение в скобках не является истинным). Далее аналогично сравниваем следующее значение c с максимальным. Ответ выводим в поле результата (res).
Начало формы
Значение 1  Значение 2  Значение 3   
Конец формы
Вообще такой сценарий можно было бы написать, используя метод max объекта Math, рассмотренного в прошлом уроке, и код получился бы короче:
function maxZnach(obj){
var a=1*obj.zn1.value;
var b=1*obj.zn2.value;
var c=1*obj.zn3.value;
obj.res.value=Math.max(Math.max(a,b),c);
}

Это я к тому, что программирование все-таки процесс творческий, и одну задачу можно решить разными способами. Задача же программиста найти наиболее оптимальный вариант. Но это так, лирическое отступление. Вернемся к условному оператору if и рассмотрим более интересный пример. Напишем сценарий, во-время работы которого, при наведении курсора мыши на изображение, оно будет увеличиваться, создавая эффект приближения.Как вы помните в HTML можно задать размер вставляемого изображения. Если заданные размеры больше или меньше оригинала, то браузер автоматически подгонит оригинал под эти размеры. Этим мы и воспользуемся. Пусть у нас есть вот такая картинка:Ширина оригинала 302 пиксела. Мы же хотим, чтобы на странице картинка имела ширину 102 пиксела, а при наведении курсора, увеличивалась до 302 пикселов. С html-страницей все понятно:
<html>
<head>
<title>javascript if</title>
<link rel="stylesheet" type="text/css" href="style1.css">
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<img src="images/tigrenok.jpg" name="tigr" width="102" onMouseOver="bigPict()">
</body>
</html>

А в нашей функции, кроме условного оператора, мы воспользуемся еще стандартной функцией javascript setTimeout, которая вызывает пользовательскую функцию с заданным промежутком времени:
function bigPict(){
var w=document.tigr.width;
if (w<302){
document.tigr.width=w+10;
document.tigr.src="images/tigrenok.jpg"
setTimeout("bigPict()", 500)
}
}

Таким образом, функция проверяет ширину картинки (width) и, если она меньше 302 пикселов, то увеличивает эту ширину на 10 пикселов. Функция setTimeout вызывает нашу функцию bigPict каждые полсекунды, благодаря чему размер картинки будет увеличиваться до тех пор, пока условие w<302 не станет ложным.

Чтобы визуально сделать приближение более плавным попробуйте уменьшить шаг увеличения ширины и время обращения к функции. Поиграйтесь с этими числами и найдите наиболее оптимальные. 
Задания (две подружки) 3
Номер задания соответствует номеру студента по классному журналу.
Катя живет в S1 этажном доме, в котором N1 подъездов, а Лена – в S2 этажном доме, в котором N2 подъездов. Определить в чьем доме больше квартир, если на лестничной площадке каждого подъезда по четыре квартиры.
На дискотеке Лена стрельнула глазками окружающим парням N1 раз за T1 минут. Катя сделала то же самое N2 раз за T2 минут. Определить, чья скорострельность больше.
На той же дискотеке Катю пригласили на танец N1 раз и при этом пытались договориться о свидании K1 раз. Лену же приглашали на танец N2 раз, а на свидание – K2 раз. Определить у какой из девушек эффективность танцев по части приглашений на свидания больше.
Лена пошла на дискотеку ЧГПУ, израсходовав косметики на R1 руб. и была приглашена на N1 танец раз. А Катя при подготовке к походу на ту же дискотеку израсходовала косметики на R2 руб. и была приглашена на танец N2 раз. Определить эффективность чьей косметики по части приглашений на танцы выше.
Для того чтобы добраться до института у Кати и Лены есть варианта - на троллейбусе или маршрутке. Троллейбус едет до института T1 минут, а маршрутка – T2 минут. Катя вышла на остановку в 7 часов M1 минут и тут же села в троллейбус. Лена вышла на остановку в 7 часов M2 минут и ей тут же подвернулась маршрутка. Кто из них доедет до института раньше.
Поскольку Лена и Катя учились на разных специальностях, то у них было разное количество экзаменов. У Лены было N1 конспектов по S1 страниц каждый, а у Кати N2 конспектов по S2 страниц. Определить, кому из них придется читать больше при подготовке к экзаменам?
Согласно учебному плану подружки Лена и Катя были отправлены на педагогическую практику в школы. Лене пришлось вести занятия в N1 лицейских классах, в которых было по M1 учеников. Кате досталось N2 обычных классов, в каждом их которых было по M2 учеников.
Определить, которая из девушек приобретет больший опыт человеческого общения (т.е. пообщается с большим количеством учеников).
Согласно плану педагогической практики Кате необходимо было сводить свой класс в музей. Начало экскурсии было назначено в 1400. Но в 1600 у нее на другом конце города было назначено свидании с очень симпатичным парнем. Экскурсия длилась T1 минут.
Определить, не опоздает ли Лена на свидание, если маршрутка от музея до места свидания едет T2 минут.
У Кати и Лены появились кавалеры, которые как, оказалось, являются страшными компьютерными фанатами. Они предложили им свою помощь в подготовке к экзаменам. Помощь выразилась в сканировании учебников и последующей печати текстов в уменьшенном варианте. В результате получались очень симпатичные шпаргалки площадью 8 см2. Кавалер Кати умудрился втискивать по N1 символов на 1 см2 шпаргалки, а кавалер Лены - по N2 символов. Учебник Кати состоял из S1 страниц по 320 символов на странице, а у Лены учебник состоял из S2 страниц с тем же количеством символов на странице.
Определить, у кого из девушек будет большее количество шпаргалок.
Кавалеры Лены и Кати не только помогли им при подготовке к экзаменам, но и открыли для них такое средство Интернета как чаты. Лена просидела в чате T1 часов и пообщалась с N1 абонентами. А достижения Кати выглядят следующим образом: общее время, проведенное в чате - T2 мин и количество абонентов - N2. Определить у кого из них большая эффективность общения.
Для ускорения процессов общения в чатах применяются аббревиатуры, а для выражения своих эмоций - эмотиконы (смайлики). Катя освоила А1 аббревиатур и С1 смайликов, а Лена – А2 аббревиатур и С2 смайликов. При обмене информацией о своих достижениях девушки выяснили, что Лена уже знает N1 смайликов и аббревиатур освоенных Катей. А Катя знает N2 новшеств, освоенных Леной. Определить, кто из них при обмене информацией узнал больше нового.
При подборе материала для курсовых работ Лене и Кате пришлось обратиться к помощи Интернет. Лена провела в Интернете T1 мин и скачала N1 страниц текстового материала. А Катя на работу в Интернете потратила T2 мин и скачала N2 страниц текстов. Определить, кто из них скачивал данные из Интернета с большей скоростью.
JavaScript - Урок 8. Оператор выбора switch
В предыдущем уроке мы познакомились с оператором if. Он удобен, когда нужно совершить какое-либо действие в зависимости от выбора пользователя. Но что если таких выборов будет много? Например, мы знаем прогноз погоды на неделю вперед. А выдаем прогноз только на один день, на тот который выберет пользователь. Как это сделать?Вариант первый - использовать оператор if.Для этого в html-странице напишем саму форму:
<html>
<head>
<title>javascript switch</title>
<link rel="stylesheet" type="text/css" href="style1.css">
<script type="text/javascript" src="script.js"></script>
</head>
<body>
Прогноз погоды на какой-день Вас интересует:<br><br>
<form name="forma5">
<select name="day" size="7">
<option selected value="mon">понедельник
<option value="tue">вторник
<option value="wen">среда
<option value="thu">четверг
<option value="fri">пятница
<option value="sat">суббота
<option value="san">воскресенье
</select>
<input type="button" value="OK" onClick="Vday(forma5);">
<br><br>
<textarea cols="35" rows="5" wrap="virtual" name="res"></textarea>
</form>
</body>
</html>

Теперь на странице script.js напишем код функции:
function Vday(obj){
if (obj.elements[0][0].selected)
obj.res.value="В понедельник будет ветрено, температура воздуха поднимется до +20 градусов";
if (obj.elements[0][1].selected)
obj.res.value="Во вторник будет солнечно, температура воздуха поднимется до +25 градусов";
if (obj.elements[0][2].selected)
obj.res.value="В среду будет прохладно, температура воздуха опустится до +17 градусов";
if (obj.elements[0][3].selected)
obj.res.value="В четверг будет пасмурно, температура воздуха опустится до +10 градусов";
if (obj.elements[0][4].selected)
obj.res.value="В пятницу будет облачно, температура воздуха поднимется до +15 градусов";
if (obj.elements[0][5].selected)
obj.res.value="В субботу будет ветрено, температура воздуха поднимется до +27 градусов";
if (obj.elements[0][6].selected)
obj.res.value="В воскресенье будет ясно, температура воздуха поднимется до +30 градусов";
}

Здесь надо дать некоторые пояснения. А именно, как наш сценарий узнает, какой элемент выбран.В нашей форме есть три элемента: список, определяемый тегом select, кнопка OK, и многострочное текстовое поле.Сценарий нумерует все элементы формы сверху вниз, начиная с 0. Поэтому, способ обращения к нашему списку выглядит так:
obj.elements[0]

В списке все элементы также пронумерованы от 0 до 6 соответственно. А элемент, который выбран, обладает свойством selected. Поэтому строка
obj.elements[0][0].selected

означает, что выбран первый пункт первого элемента объекта (в нашем случае первый пункт списка из формы). Вообще это не самый удобный способ обращения к элементу, но об этом мы поговорим подробно в следующем уроке, а сейчас вернемся к примеру.
Прогноз погоды на какой-день Вас интересует:
Начало формы
  
Конец формы
Все работает. Предположим мы решили немного изменить условия задачи. Пусть теперь пользователь не выбирает день недели, а вводит его в текстовое поле.Код html-страницы будет выглядеть так:
<html>
<head>
<title>javascript switch</title>
<link rel="stylesheet" type="text/css" href="style1.css">
<script type="text/javascript" src="script.js"></script>
</head>
<body>
Прогноз погоды на какой-день Вас интересует:<br><br>
<form name="forma6">
<input type="text" size="15" maxlength="15" name="zn">
<input type="button" value="OK" onClick="Vday1(forma6);"><br><br>
<textarea cols="35" rows="5" wrap="virtual" name="res"></textarea>
</form>
</body>
</html>

А в функции снова придется 7 раз прописать оператор if, да еще предусмотреть вариант, если пользователь допустит орфографическую ошибку:
function Vday1(obj){
var a=obj.zn.value;
if (a=="понедельник")
{obj.res.value="В понедельник будет ветрено, температура воздуха поднимется до +20 градусов";} else
if (a=="вторник")
{obj.res.value="Во вторник будет солнечно, температура воздуха поднимется до +25 градусов";} else
if (a=="среда")
{obj.res.value="В среду будет прохладно, температура воздуха опустится до +17 градусов";} else
if (a=="четверг")
{obj.res.value="В четверг будет пасмурно, температура воздуха опустится до +10 градусов";} else
if (a=="пятница")
{obj.res.value="В пятницу будет облачно, температура воздуха поднимется до +15 градусов";} else
if (a=="суббота")
{obj.res.value="В субботу будет ветрено, температура воздуха поднимется до +27 градусов";} else
if (a=="воскресенье")
{obj.res.value="В воскресенье будет ясно, температура воздуха поднимется до +30 градусов";} else
obj.res.value="Укажите правильно день недели";
}

Прогноз погоды на какой-день Вас интересует:
Начало формы
  
Конец формы
В принципе все работает, но согласитесь, что код нашей функции слишком длинный. Чтобы его сократить, используется оператор выбора switch. Синтаксис у него следующий:switch (B){case L1: S1;case L2: S2;... ... ...case Ln: Sn;default:S} где B - выражение, L1, L2, ..., Ln - литералы, а S1, S2, ..., Sn - операторы.Работает это так: вычисляется значение выражения B. Если B равно L1, то выполняется оператор S1. Если B равно L2, то выполняется оператор S2 и т.д. Если B не равно ни одному из значений, то выполняется оператор S.Давайте перепишем код нашей последней функции с помощью оператора switch.
function Vday1(obj){
var a=obj.zn.value;
var s;
switch (a)
{
case 'понедельник': s="В понедельник будет ветрено, температура воздуха поднимется до +20 градусов";
break;
case 'вторник': s="Во вторник будет солнечно, температура воздуха поднимется до +25 градусов"; break;
case 'среда': s="В среду будет прохладно, температура воздуха опустится до +17 градусов"; break;
case 'четверг': s="В четверг будет пасмурно, температура воздуха опустится до +10 градусов"; break;
case 'пятница': s="В пятницу будет облачно, температура воздуха поднимется до +15 градусов"; break;
case 'суббота': s="В субботу будет ветрено, температура воздуха поднимется до +27 градусов"; break;
case 'воскресенье': s="В воскресенье будет ясно, температура воздуха поднимется до +30 градусов";
break;
default: s='Укажите правильно день недели'
}
obj.res.value=s;
}

Результат тот же, а код гораздо короче, да и читабельнее.Оператор break используется, чтобы обеспечить завершение работы переключателя после выполнения нужного варианта. Если его опустить ничего не изменится, просто с ним сценарий работает быстрее, хотя в данном примере это и незаметно.
Задания на конструкцию Select Case 4
Нечетные номера решают прямую задачу, четные - обратную.1 – 2. Задан справочник, содержащий названия городов и их междугородний телефонный код. Составить программу, которая по введенному коду определяет название города.
3. – 4. Задана следующая шкала эффективности внедрения новых технологий (%).0-10 11-25 26-50 51-100 >100
невысокая средняя высокая очень высокая революционная
Составить программу, которая по введенной величине эффективности технологии выдает ее словесную характеристику.
5.– 6. Составить программу, которая по введенному названию дню недели выдает его порядковый номер.
7. – 8. Составить программу, которая по введенному времени суток выдает их словесную характеристику в соответствии со следующей шкалой:
5.00 - 9.00 9.00 - 19.00 19.00 - 23.00 23.00 - 5.00
Утро День Вечер Ночь
9. – 10. Составить программу, которая по введенному времени выводит название мероприятия:
7.00 -7.30
7.30 – 8.00
8.00 – 9.00
9.00 – 9.20
9.20 – 12.00
12.00 – 13.00
13.00 – 14.30
14.30 – 14.50
14.50 – 16.00 Оперативное совещание
Выдача заданий
Селекторное совещание
Первый ленч
Разработка проектов
Обед
Анализ проектов
Второй ленч
Анализ итогов рабочего дня
11. – 12. Составить программу, которая по введенному номеру месяца выводит его название.
13. – 14. Составить программу, которая по введенному библиотечному индексу выводит название предметной области в соответствии со следующей таблицей:
10 История
20 Математика
30 Физика
40 Химия
50 Биология
JavaScript – Урок 9. Объекты JavaScript
В уроке 3 мы уже затрагивали эту тему. Сейчас поговорим об этом более подробно. В языке JavaScript все элементы на web-странице выстраиваются в иерархическую структуру. Каждый элемент представляется в виде объекта. И каждый такой объект может иметь определенные свойства и методы.Предположим, у нас есть вот такая web-страница:

Перед регистрацией ознакомьтесь с правилами.
Начало формы
Форма регистрации
Имя
e-mail
Пароль
Повтор пароля
Пол мужской  женский
Увлечения
Ваши пожелания
 
Конец формы

Ее html-код:
<html>
<head>
<title>javascript if</title>
<link rel="stylesheet" type="text/css" href="style1.css">
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<img src="images/pict1.gif"><br><br>
<center>
Перед регистрацией ознакомьтесь <a href="#">с правилами</a>.<br><br>
<form name="forma1">
<table border="0" cellspacing="5" cellpadding="5">
<caption>Форма регистрации</caption>
<tr><td align="right" valign="top">Имя</td>
<td><input type="text" name="name" size="25"></td>
</tr>
<tr><td align="right" valign="top">e-mail</td>
<td><input type="text" name="e-mail" size="25"></td>
</tr>
<tr><td align="right" valign="top" >Пароль</td>
<td><input type="password" name="password" size="25"></td>
</tr>
<tr><td align="right" valign="top" >Повтор пароля</td>
<td><input type="password" name="password1" size="25"></td>
</tr>
<tr><td align="right" valign="top" >Пол</td>
<td><input type="radio" name="sex" value="man" checked>мужской
<input type="radio" name="sex" value="woman"> женский
</td>
</tr>
<tr><td align="right" valign="top">Увлечения</td>
<td><select name="hobby" size="7" multiple>
<option selected value="1">компьютеры
<option value="2">спорт
<option value="3">игры
<option value="4">животные
<option value="5">автомобили
<option value="6">клубы
<option value="7">музыка
</select>
</td>
</tr>
<tr><td align="right" valign="top">Ваши пожелания</td>
<td><textarea cols="30" rows="3" wrap="physical"></textarea>
</td>
</tr>
<tr><td align="right" colspan="2">
<input type="submit" name="submit" value="Отправить">
<input type="reset" name="reset" value="Очистить">
</td>
</tr>
</table>
</form>
<img src="images/pict2.gif">
</center>
</body>
</html>

Иерархия объектов, создаваемая этой html-страницей, выглядит так:

Каждый объект этой структуры имеет свое имя и индекс. Индекс определяется положением объекта на странице (сверху вниз). Поэтому картинка, которая расположена выше на странице имеет меньший номер. Нумерация начинается с 0. Объект forms имеет свойство-массив - elements , в котором содержатся ссылки на элементы формы в порядке их перечисления в теге form . Их нумерация также начинается с 0. У объектов формы могут быть свои подчиненные объекты. В нашем примере у объекта elements[6] , который является списком, это пункты списка, которые имеют свою внутреннюю нумерацию.Чтобы получить доступ к объекту, следует указать весь путь от вершины иерархии до нужного элемента. Так, путь к первой картинке выглядит так:
document.images[0]

Путь к форме:
document.forms[0]

Путь к списку:
document.forms[0].elements[6]

А путь к третьему пункту списка:
document.forms[0].elements[6][2]

Согласитесь, что такой подход не всегда удобен, так как легко запутаться во всех этих индексах. Поэтому всем элементам на странице обычно даются имена и доступ к элементам осуществляется по именам.Например, наша форма имеет имя forma1, а первое текстовое поле - имя name. Тогда, чтобы получить к нему доступ, мы должны написать:
document.forma1.name

Чтобы узнать, что пользователь ввел в это текстовое поле, используется свойство value:
document.forma1.name.value

Предположим, мы хотим осуществлять проверку на совпадение двух полей ввода пароля в нашем примере. Для этого напишем следующую функцию:
function prov(){ var a=document.forma1.elements[2].value;
var b=document.forma1.elements[3].value;
if (a==b){ alert ("Вы зарегистрированы!");
}
else
{
alert ("Введите правильный пароль."); }
}

Пусть эта функция срабатывает при нажатии на кнопку "Отправить":
... ... ...
<input type="submit" name="submit" value="Отправить" onclick="prov();">
... ... ...

Чтобы узнать, какой пол указал пользователь, используется свойство переключателей checked. А для определения выбранного пользователем пункта из списка - свойство selected.Предположим, мы хотим, чтобы в зависимости от выбранных пола и увлечения, пользователю выдавалось какое-либо сообщение. Перепишем функцию prov():
function prov(){
if (document.forma1.elements[4].checked && document.forma1.elements[6][3].selected){
alert ("Мужчина, который любит животных заслуживает уважения.");
}
else if (document.forma1.elements[5].checked && document.forma1.elements[6][4].selected)
{
alert ("Женщина за рулем всегда вызывает интерес."); }
else
{
alert ("Отличное увлечение."); }
}

* && - логическое И, было рассмотрено в уроке 1 *В JavaScript много объектов. Чтобы выяснить, какое из свойств и методов объекта позволяет получить доступ к нужной информации, необходимо обратиться к какому-либо справочнику по JavaScript, найти в нем нужный объект и посмотреть его свойства и методы. Целью же этого урока было показать на примере, как обратиться к объекту страницы и использовать информацию введенную пользователем. 
JavaScript - Урок 10. Циклы for и while
Циклы позволяют выполнять один и тот же код много раз и используются они очень часто.
Цикл for
Самый популярный вид циклов - цикл for. Синтаксис у него следующий:for (A; B; I){S} гдеA - первоначальное выражение, B - условие продолжения. Если это выражение ложно, то выполнение цикла завершается,I - выражение инкремента, {} - тело цикла, S - операторы.Как всегда, на примере будет понятнее. Предположим, мы хотим написать сценарий, который будет складывать все числа от a до b, (где a и b будут вводиться пользователем) и отображать полученный результат.Итак, на html-странице мы будем иметь следующий код:
<html>
<head>
<title>javascript for</title>
<link rel="stylesheet" type="text/css" href="style.css">
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<form name="forma7">
Вас интересует сумма всех чисел
от <input type="text" name="a1" size="5" maxlength="5">
до <input type="text" name="a2" size="5" maxlength="5">
<input type="button" value="Вычислить" onclick="summa(forma7);"><br>
Сумма равна <input type="text" name="result" size="10" maxlength="10">
</form>
</body>
</html>

Выглядеть она будет так:
Начало формы
Вас интересует сумма всех чисел от  до  Сумма равна 
Конец формы
Осталось на странице script.js написать саму функцию summa():
function summa(obj) {
var summa=0;
var a1=1*obj.a1.value;
var a2=1*obj.a2.value;
for (var i = a1; i <= a2; i++) {
summa+=i;
}
obj.result.value = summa;
}

Из нового здесь только сам цикл, разберемся, как он работает:параметру цикла i присваивается значение a1, т.е. число, которое указал пользователь в текстовом поле ОТ и тело цикла (в фигурных скобках) выполняется с этим значением, т.е. в переменную summa записывается значение равное a1. После этого вычисляется выражение i++, т.е. значение i увеличивается на 1.Затем javascript проверяет условие i <= a2 и, если оно истинно, тело цикла выполняется снова, т.е. значение переменной summa увеличивается на само себя плюс 1.Таким образом, цикл выполняется до тех пор, пока не сложит все числа от a1 до a2.Когда условие i <= a2 станет ложным, цикл прекратит свою работу, а полученный результат (значение переменнойsumma) будет выведен в поле result.Обратите внимание, что переменную i можно объявить прямо в цикле - var i = a1В общем, на этом можно было бы и закончить, но все-таки есть еще один нюанс. Для правильной работы нашего цикла значение a2 должно быть больше значения a1. Добавим это условие в нашу функцию:
function summa(obj) { var summa=0;
var a1=1*obj.a1.value;
var a2=1*obj.a2.value;
if (a2 > a1){
for (var i = a1; i <= a2; i++) {
summa+=i;
}
obj.result.value = summa;
}
else
alert("Значение ОТ должно быть меньше значения ДО")
}

Вот теперь наш цикл будет работать как надо.
Задания 5
Всякие совпадения с реальными лицами являются случайными…
Из титров к американским блокбастерам.
Номер задания соответствует номеру студента по классному журналу.
При написании следующих программ Вы должны сначала решить данную математическую задачу для одного семестра (получить ответ, сколько останется студентов на факультете после первой сессии). Полученные формулы вы должны поместить в тело цикла. В теле цикла обязательно должна присутствовать операция присвоения (например, k=k+1 – переменная стоящая справа является «старым» значением переменной, а переменной слева присваивается «новое» значение).
Злой декан
На первый курс факультета принимается K студентов. Каждую сессию N% студентов потока получают хотя бы одну двойку. Безжалостный декан всех их тут же отчисляет. Определить сколько студентов останется на потоке к концу пятого курса.
Добрый декан
На первый курс факультета принимается K студентов. Какая-то часть из них во время сессий получают двойки. Но, жалея студентов (особенно мальчиков – им все-таки грозит армия) декан дает возможность всем пересдать свои хвосты. Кроме того, ввиду своей доброты он на каждый курс принимает по N% человек от общего количества студентов на курсе. Определить сколько студентов будет на потоке к концу пятого курса.
Справедливый декан
На первый курс факультета принимается K студентов. Каждую сессию N1% студентов на потоке получают хотя бы одну двойку. Деканат дает возможность пересдачи полученных хвостов. С этой задачей справляются только N2% студентов. Остальных приходится отчислять. Определить сколько студентов будет на потоке к концу пятого курса.
Умный декан
На первый курс факультета принимается K студентов. Каждую сессию N1% студентов получают хотя бы одну двойку. Деканат дает возможность пересдачи полученных хвостов. С этой задачей справляются N2% студентов. Кроме того, для привлечения на факультет денег на каждый курс со стороны принимается по N студентов. Определить сколько студентов получит диплом в конце пятого курса.
Интеллигентный декан
На первый курс факультета принимается K студентов. Каждую сессию N1% студентов на потоке не сдают сессию вовремя. По положению о высшей школе декан должен их отчислять. Но за N2% хвостистов приходят просить родители (или кто-то звонит сверху). Главная беда всех интеллигентов – это неумение говорить «нет». Поэтому декан всех студентов, за которых кто-то хлопочет, восстанавливает на курсе. Остальных приходится отчислять окончательно.
Определить сколько студентов останется на потоке к концу пятого курса.
Деловой декан
На первый курс факультета принимается K студентов. Каждую сессию N1% студентов на потоке не сдают сессию вовремя. По положению о высшей школе декан должен их отчислять. Но у N2% хвостистов (почему-то одних и тех же) родители крутые бизнесмены. Они приходят в деканат и договариваются о спонсорской помощи факультету.
В результате такой договоренности хвостисты благополучно продолжают учиться дальше, а на факультете появляются отделанные под евростандарт учебные классы.
Определить сколько современных классов появится на факультете к концу пятого курса.
Принципиальный декан
На первый курс факультета принимается K студентов. Каждую сессию N1% студентов на потоке не сдают сессию вовремя. По положению о высшей школе декан должен их отчислять. У N2% хвостистов очень крутые родители. Они пытаются (сами или через кого-то) договорится с деканом о поблажках для своего чада. Но декан, с его устаревшими принципами, стоит насмерть и отчисляет всех, невзирая на лица.
Определить сколько жалоб на этого декана накопится в ректорате к концу пятого курса, если учесть, что жалобы пишут только крутые родители.
Наивный декан
После каждой сессии на факультете численностью K студентов остается по M% не пересданных вовремя двоек. Декан вызывает всех несдавших и берет с них слово, что они свои хвосты пересдадут в течение последующих сессий. Все естественно это дружно обещают. Разумеется, что все обещания тут же забываются, как только закрывается дверь деканата.
Пользуясь неразберихой в документообороте, такие студенты благополучно добираются до конца пятого курса. Здесь выясняется, что диплом они получить не могут пока не будут ликвидированы все академические задолженности. Для пересдачи хвостов срочно мобилизуются все преподаватели.
Подсчитать сколько времени придется сидеть этим преподавателям, если на пересдачу одного экзамена уходит 15 минут.
Спортивный декан
На первый курс факультета принято N студентов, из которых K человек являются спортсменами. Каждую сессию N1% студентов на потоке получают хотя бы одну двойку. Декан (сам бывший спортсмен) очень заботится о спортивной славе факультета. Поэтому, если хвостист является спортсменом, то декан, используя все свое влияние, организует для них гарантированную пересдачу. Остальных он просто отчисляет.
Определить сколько студентов останется на потоке к концу пятого курса, если среди двоечников N2% спортсменов.
Несовременный декан
На первый курс факультета принимается K студентов на коммерческой основе. Каждую сессию N% из них не сдают сессию вовремя. Следуя привычкам советских времен декан благополучно отчисляет этих студентов.
Определить какую сумму недобирает вуз из-за не современности декана (т.е. разницу между суммами, которые мог бы получить факультет, если бы никого не отчисляли и реально полученными суммами). Плата за обучение равна S руб./семестр.
Женщина декан
Жила-была преподавательница вуза. И все у нее было – и вовремя защищенная диссертация, и муж, и прекрасные дети. Но однажды некая шустрая студентка по имени Татьяна увела у нее мужа. Рухнувшее семейное счастье она заменила тем, что с головой ушла в работу и довольно быстро стала деканом.
Одним из следствий этих событий стало, то что, если очередной хвостист был девушкой по имени Татьяна, то она немедленно отчислялась. Остальным же давалась возможность пересдачи.
Определить сколько Тань останется на факультете к концу пятого курса при следующих условиях:
- на первом курсе было K студентов из них K1 девушек с именем Таня;
- каждую сессию N1% студентов получают двойки;
- доля Татьян среди хвостистов пропорциональна их доле на факультете.
Мужчина декан
Некий декан питал слабость к имени Наташа – так звали его первую любовь. Поэтому, если очередную двоечницу звали Наташей, то он делал все, чтобы она осталась в вузе. Остальные двоечники и двоечницы отчислялись по всем правилам.
Определить долю Наташ на пятом курсе при следующих условиях:
- на первый курс принималось K студентов и среди них было N девушек с именем Наташа;
- каждую сессию N1% студентов получают двойки;
- доля Наташ среди двоечников пропорциональна их доле на факультете.
Цикл while
Не менее популярный вид циклов - цикл while. Синтаксис у него следующий:while (B){S} гдеB - условие продолжения. Если это выражение ложно, то выполнение цикла завершается,{} - тело цикла, S - операторы.Иными словами, операторы S, выполняются до тех пор, пока условие B не станет ложным.
На первое декабря высота снежного покрова составляла K сантиметров. Каждый день количество снега увеличивается на N %. Определить через, сколько жней высота снежных покровов изменится в 3 раза.
На первое марта высота снежного покрова составляла N сантиметров. Каждый день количество снега уменьшается на K %. Определить через, сколько жней высота снежных покровов изменится в 2 раза.
В начале апреля на дереве распустилось K листочков, каждый день их количество возрастает на M %. Определить через, сколько дней распуститься половина всех листьев, если на дереве было L почек.
На День Рождения Катя испекла L пирожков. Первый гость съел N пирожков, каждый следующий гость съедал на 1 пирожок больше предыдущего определить какой гость съест в два раза больше первого.
В банк под N% процентов положили К тыс. руб. Каждый год процентная ставка увеличивается на 0,5%. Определить через сколько лет сумма вклада удвоится.
Студенческая стипендия составляет К руб., каждый год ее увеличивают на N1%. Через сколько лет стипендия достигнет уровня прожиточного минимума, если его величина L за год увеличивается на N2%. (будем считать что N1>N2)
Автомобиль движется со скоростью L м/с, каждую секунду скорость возрастает на N%, но за счет сопротивления воздуха скорость снижается на S м/с. Определить через, сколько секунд скорость автомобиля изменится в два раза.
Изолированная колония насекомых численностью К кормится растением, за день одна особь съедает 10г. листвы, начальная масса растения M кг. Определить через, сколько дней масса растения изменится в два раза. Естественный прирост массы растения составляет N%. Прирост численности популяции насекомых составляет Н%.
Популяция мышей насчитывает K особей, ежемесячно каждая самка приносит по L мышат, соотношение самцы : самки =5:4. Определить через, сколько месяцев популяция увеличится в сто раз, если ежемесячно N% особей становится жертвой хищников.
Колония бактерий численность К находится в питательной среде. Скорость размножения бактерий зависит от среднесуточной температуры по закону . Начальная среднесуточная температура составляла T градусов и каждый день увеличивалась на N%. Определить, через сколько дней количество бактерий достигнет числа 1016.
Скорость химической реакции зависит от температуры (), в ходе взаимодействия температура каждую секунду увеличивается на N%. Определить через сколько секунд температура достигнет 200о С, если ее начальное значение было Т.
В пчелином улье насчитывалось K особей, каждую неделю их количество увеличивается на N%, раз в неделю улью наведывается медведь, в результате чего погибает K1 пчела. Определить через, сколько недель количество пчел в улье изменится в 1,5 раза.
JavaScript - Урок 11. Дата, представление и обработка
В JavaScript дата определяется количеством миллисекунд, прошедших с 1 января 1970 года.Для работы с датой и временем применяется встроенный объект Date. Этот объект не имеет свойств, но обладает несколькими методами, позволяющими устанавливать и изменять дату и время.Объект Date создается с помощью оператороа new и конструктора - Date.Например:
var myData=new Date();

значением переменной myData будет текущая дата и время:
Sun Feb 12 2017 18:26:43 GMT+0300 (RTZ 2 (зима))
Методами объекта Date можно получать отдельно значения месяца, дня недели, часов, минут и секунд:
getDate - возвращает число в диапазоне от 1 до 31, представляющее число месяца.
getHours - возвращает час суток в диапазоне от 0 (полночь) до 23.
getMinutes - возвращает минуты в диапазоне от 0 до 59.
getSeconds - возвращает секунды в диапазоне от 0 до 59.
Предположим, мы хотим написать сценарий, который будет определять текущее время и выводить его в формате "чч:мм:сс".Код html-страницы будет простой:
<html>
<head>
<title>javascript дата</title>
<link rel="stylesheet" type="text/css" href="style.css">
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<form name="forma8">
<input type="button" value="Время" onClick="nTime(forma8);">
<input type="text" size="10" name="res">
</form>
</body>
</html>

Теперь напишем саму функцию nTime():
function nTime(obj) {
var t=new Date();
var h=t.getHours();
var m=t.getMinutes();
var s=t.getSeconds();
var result=h+":"+m+":"+s;
obj.res.value=result;
}

* как вы помните методы отделяются от объекта точкой, об этом мы говорили в уроке 3 *Как видите, все просто. Сначала определяем текущее время, а потом с помощью методов извлекаем из него отдельные значения часов, минут и секунд.
Начало формы
 
Конец формы
Здесь еще хочется пояснить строку var result=h+":"+m+":"+s. Впервые мы столкнулись с необходимостью выводить в результат, как значения переменных, так и простой текст. В принципе ничего сложного: переменные пишутся как есть, текст берется в кавычки, а знак + осуществляет операцию конкатенации, т.е. их объединения.В нашем примере остался один недочет, мы хотели, чтобы время выводилось в формате "чч:мм:сс", а сейчас оно выводится в формате "ч:м:с". Т.е., в 5 утра, время будет отображаться как "5:0:0", а хотелось бы так: "05:00:00" (что более привычно). В качестве домашнего задания можете попробовать это исправить. Например, с помощью оператора if и строкового литерала "0" (идея проста: если часов меньше 10, то в результат перед h написать "0" и так со всеми переменными).А пока продолжим изучать методы объекта Date:
getDay - возвращает день недели, как целое число от 0 (воскресенье) до 6 (суббота).
getMonth - возвращает номер месяца в году, как целое число от 0 (январь) до 11 (декабрь).
getYear - возвращает год в виде двух последних цифр (getFullYear - возвращает год в виде четырех цифр).* К сожалению, начиная с 2000 года, есть проблема с отображением года в разных браузерах. Метод getYear в IE отображает полный год (вместо двух последних цифр), а FireFox вместо XX отображает 1XX (т.е. подставляет 1). Поэтому предпочтительнее использовать метод getFullYear.
Давайте напишем сценарий, который будет определять текущую дату и выводить ее в формате "число месяц год".Код html-страницы будет простой:
<html>
<head>
<title>javascript дата</title>
<link rel="stylesheet" type="text/css" href="style.css">
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<form name="forma9">
<input type="button" value="Дата" onClick="tData(forma9);">
<input type="text" size="20" name="res">
</form>
</body>
</html>

Теперь напишем саму функцию tData():
function tData(obj) {
var s;
var t=new Date();
var y=t.getFullYear();
var d=t.getDate();
var mon=t.getMonth();
switch (mon)
{
case 0: s="января"; break;
case 1: s="февраля"; break;
case 2: s="марта"; break;
case 3: s="апреля"; break;
case 4: s="мае"; break;
case 5: s="июня"; break;
case 6: s="июля"; break;
case 7: s="августа"; break;
case 8: s="сентября"; break;
case 9: s="октября"; break;
case 10: s="ноября"; break;
case 11: s="декабря"; break;
}
var result=d+" "+s+" "+y;
obj.res.value=result;
}

Получилось подлиннее, чем в первом примере, т.к. приходится переводить на русский язык названия месяцев.
Начало формы
 
Конец формы
Рассмотренные выше методы позволяют получать дату. Если же нам потребуется установить дату, то следует использовать следующие методы:
setDate - устанавливает число месяца в диапазоне от 1 до 31.
setHours - устанавливает час для текущего времени в диапазоне от 0 (полночь) до 23.
setMinutes - устанавливает минуты в диапазоне от 0 до 59.
setSeconds - устанавливает секунды в диапазоне от 0 до 59.
setYear - устанавливает значение года.
setMonth - устанавливает значение месяца в диапазоне от 0 (январь) до 11 (декабрь).
setTime - устанавливает значение объекта Date и возвращает количество миллисекунд, прошедших с 1 января 1970 года.
Так, если нам потребуется задать дату 06 декабря 2010 года, в функции мы будем иметь следующий код:
...
var t=new Date();
var y=t.setYear(2010);
var d=t.setDate(6);
var mon=t.setMonth(11);
...

Задать дату можно прямо в конструкторе, указав в качестве параметра строку формата "месяц, день, год часы:минуты:секунды":
var t=new Date("Feb,10,1975 17:45:10");

Значение часов, минут и секунд можно опустить (они будут равны нулю):
var t=new Date("Feb,10,1975");

Эту же дату можно задать с помощью чисел, перечислив через запятую год, месяц, число, часы, минуты, секунды:
var t=new Date(75, 1, 10, 17, 45, 10);

Или же, опуская часы, минуты и секунды (они будут равны нулю):
var t=new Date(75, 1, 10);

* Есть проблема: IE год отображать не хочет, поэтому лучше эти варианты не использовать. 
JavaScript - Урок 12. Массивы
Массив представляет собой набор элементов, доступ к которым осуществляется по индексу. Создается массив с помощью оператора new и конструктора массива - функции Array.Предположим, что требуется создать массив имен пользователей. Это можно сделать так:
var users = new Array("Artem", "Irina", "Sergey", "Boris");

Это выражение создает массив из 4 элементов (пользователей). Все элементы массива, пронумерованы, начиная с нуля. Для получения значения элемента массива необходимо задать имя массива и в квадратных скобках порядковый номер элемента (его индекс). Так, для получения доступа к первому элементу нашего массива, можно написать так:
users[0]

Значения массива не обязательно задавать сразу. Можно, например, воспользоваться такой конструкцией:
var users = new Array(4);

Это выражение так же создает массив из 4 элементов, но значения элементов можно указать позже с помощью оператора присваивания:
users[0] = "Artem";
users[1] = "Irina";
users[2] = "Sergey";
users[3] = "Boris";

И, наконец, можно использовать конструктор без параметра:
var users = new Array();

В этом случае мы указываем, что создаваемая переменная users будет массивом, размер которого будет определяться автоматически по мере появления элементов.Чтобы определить длину массива (т.е. сколько элементов в нем находится) используется свойство length. Например, получить доступ к последнему элементу массива (если мы не знаем, сколько в нем элементов) можно следующим образом:
users[users.length-1];

Т.е. сначала определяется длина массива (users.length), затем, помня о том, что нумерация элементов начинается с нуля, из длины вычитается 1 и полученное значение используется в качестве индекса массива.Рассмотрим пример: предположим, мы хотим, чтобы при загрузке страницы пользователь видел какой сегодня день недели.Код html-страницы будет следующим:
<html>
<head>
<title>javascript массивы</title>
<link rel="stylesheet" type="text/css" href="style.css">
<script type="text/javascript" src="script.js"></script>
</head>
<body onload="showDay();">
</body>
</html>

* в уроке 3 мы рассматривали события и их обработчики. В данном случае мы будем использовать событие Load (документ загружается в браузер) и его обработчик - onload. Иными словами, наша функция showDay() должна сработать при загрузке документа.*Теперь напишем саму функцию showDay():
function showDay() { var nDays=new Array("воскресенье", "понедельник", "вторник", "среда", "четверг", "пятница", "суббота");
var now=new Date();
var day=now.getDay();
var iDay=nDays[day];
var str="Сегодня - " + iDay;
document.write(str);
}

Рассмотрим подробнее. Сначала, мы создаем массив nDays из семи элементов (в предыдущем уроке, мы говорили о том, что нулю соответствует воскресенье):
var nDays=new Array("воскресенье", "понедельник", "вторник", "среда", "четверг", "пятница", "суббота");


Затем, из текущей даты получаем текущий день недели (его числовой эквивалент):
var now=new Date();
var day=now.getDay();

и используем его в качестве индекса для обращения к элементу массива:
var iDay=nDays[day];

Последние две строки формируют и отображают результат:
var str="Сегодня - " + iDay;
document.write(str);

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

var a=new Array(1, 2, 3);
var b=new Array(4, 5, 6);
var c=a.concat(b);
На выходе получим массив c из шести элементов: 1, 2, 3, 4, 5, 6.Массивы можно сортировать с помощью метода sort(), правда только в лексикографическом порядке (т.е. как строки). Например, если применить метод sort() к массиву с именами:
var users = new Array("Artem", "Irina", "Sergey", "Boris");
var c=users.sort();

то на выходе получим массив c: Artem, Boris, Irina, Sergey.А если применить метод sort() к массиву с числами:
var n = new Array(11, 12, 10, 107, 3, 20, 25, 101, 14, 34, 44, 5, 4);
var c=n.sort();

то на выходе получим следующий массив: 10, 101, 107, 11, 12, 14, 20, 25, 3, 34, 4, 44, 5. Т.е. элементы сравниваются как строки, а не как числа. Так что применять метод sort() надо осторожно.Теперь разберем на примере, как осуществить поиск заданного элемента в массиве. Предположим, у нас есть массив из 6 имен и мы хотим узнать, есть ли в нем определенное имя.Код html-страницы будет простой:
<html>
<head>
<title>javascript массивы</title>
<link rel="stylesheet" type="text/css" href="style.css">
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<form name="forma10">
Введите имя для проверки:
<input type="text" size="20" name="name">
<input type="button" value="Проверить" onClick="proverka(forma10);">
</form>
</body>
</html>

Теперь напишем саму функцию proverka() на странице script.js:
tj
Здесь мы воспользовались алгоритмом, который называется линейный поиск, согласно которому все элементы массива users сравниваются поочередно с образцом (с n, т.е. с именем, которое ввел пользователь). Если очередной элемент совпадает с образцом, то задача решена (цикл прерывается). Если же искомого имени в массиве нет, то мы узнаем об этом, лишь просмотрев все элементы массива.
Начало формы
Введите имя для проверки:  
Конец формы
В качестве домашнего задания напишите сценарий, который будет определять максимальный элемент числового массива. 
Задания (Жизнь – прекрасна!) 6
1. День рождения
Активистка группы Маша занялась организацией дня рождения своей подруги Даши. Для этого она обошла своих сокурсников с информацией о будущем торжестве и предложением сдать деньги на подарок (кто сколько даст). В мероприятии пожелали участвовать 6 человек. В результате получился список вида: имя – сумма.
Определить общую сумму, собранную на подарок, а также имена тех, кто сдал самое большое и самое малое количество денег.
2. Работа и путешествия
Организация “Travel & Work” предоставила список из 10 стран, в которых можно поработать в летнее время, и стоимости проезда в указанные страны. Получив этот список и изучив условия проезда мечтательная Даша решила, не утруждать себя работой, а просто объездить эти страны, посмотреть на мир, себя показать…
Определить в какую сумму обойдется Даше это турне по миру. Определить также страны с максимальной и минимальной стоимостью проезда.
3. Контрольная работа
Самое скверное в процессе учебы - это контрольные работы. В группе, где учились Маша и Даша, это мероприятие усугублялось излишне въедливой и придирчивой преподавательницей.
Во время очередной контрольной она разделила все ошибки на пять групп:
- орфографические;
- синтаксические;
- стилистические;
- общекультурные (это когда в качестве столицы Франции указан Лондон);
- прочие.
После очередной контрольной Даша и Маша получили мало порадовавшие их оценки и в придачу к ним список ошибок по каждой группе.
Определить, кто из подруг сделал большее количество ошибок, и ошибок какой группы оказалось больше всего.
4. Студвесна
Одной из отдушин в этой унылой и серой жизни является студенческая весна. Этот праздник проводится почти одновременно (но все-таки в разное время) во всех вузах города. Обычно, эти мероприятия проводятся вечером. Поскольку факультет также занимается во вторую смену, то в дни проведения студвесен, на занятиях почему-то бывает очень мало студентов.
Дан список вузов города, дни в которые они проводят свою студенческую весну, и соответствующее количество занятий в эти дни у Маши и Даши.
Определить сколько всего занятий пропустят подруги и вузы, пользующиеся наибольшей и наименьшей популярностью.
5. Зачетная сессия
Известно, что для получения зачета приходиться делать несколько заходов. Количество заходов зависит от степени свирепости преподавателя.
Имеется список зачетов, принимающих эти зачеты преподавателей и количество заходов, которые пришлось сделать, чтобы получить соответствующий зачет.
Определить фамилию самого свирепого преподавателя и предмет, зачет по которому был получен наиболее легко.
6. Экзаменационная сессия
Имеется список предметов, сдаваемых во время сессии, и полученных по этим предметам оценок. Определить средний балл, полученный во время сессии, и предметы, по которым получены наиболее высокие и наиболее низкие оценки.
7. Студенческие обычаи
Леша был единственным гуманитарием среди своих бывших одноклассников. От насмешек недалеких технарей его спасал только один довод – на гуманитарных специальностях очень развиты программы по международному студенческому обмену. Благодаря этому он уже успел побывать в нескольких странах.
В этих странах ему запомнились различия в особенности приветствий студентов. В России – хорошие друзья при встрече целуются, в США - обнимаются, в Дании – девушки делают книксен, а юноши – благородный кивок, во Франции – посылают друг другу воздушные поцелуи.
Просыпающиеся мужские инстинкты Леши выставили всем этим способам приветствий следующие баллы (по величине привлекательности):
- жаркие объятия раскованных американских ровесниц – 8 баллов;
- мимолетные поцелуи российских студенток – 5 баллов;
- чопорные датские книксены – 1 балл;
- фривольные французские воздушные поцелуи – 3 балла.
Имеются данные о том, сколько раз поприветствовали Лешу в каждой стране.
Определить в какой стране он получил больше всего баллов.
8. Студенческие приметы
Для того, чтобы успешно сдать экзамен существует ряд проверенных способов. Одним из самых надежных является: идя на экзамен, следует в обувь под пятку положить монетку.
Студент Леша решил проверить данную примету. После поездок за рубеж у него осталось несколько образцов иностранных валют. Поэтому, идя на очередной экзамен, он поочередно подкладывал в обувь то российский рубль, то американский доллар, то датскую крону, то испанский песо. В результате было получено четыре разных оценки.
Определить какую валюту он будет использовать в очередной сессии в первую очередь, и какой валютой уже больше никогда не воспользуется.
9. Очень важная контрольная
Маша безнадежно опаздывала на очень важную контрольную. Провожая отчаянным взглядом очередную переполненную маршрутку она услышала, как ее кто-то окликнул. Оглянувшись, она увидела, что из роскошного Volvo ей машет рукой ее бывший одноклассник Вовочка - отчаянный хулиган и двоечник. Он с полуслова понял в чем дело и предложил подвезти ее.
А в это время из-за болезни преподавателя контрольную отменили и вся группа, еще плохо верящая свалившемуся счастью, высыпала на крыльцо института. И тут из блистающей иномарки выпорхнула Маша.
Женский коллектив группа тут же начал активно завидовать ей.
Имеются список Машиных однокурсниц и список того, сколько раз каждая из них позавидовала.
Определить общее количество завидок и самую завидущую подругу.
10. День открытых дверей
В назначенный деканатом день часть студентов освободили от занятий. На это время их единственной заботой стали рассказы толпам нахлынувших акселератов о том, как хорошо учиться у них на факультете, какие у них чудесные преподаватели, какие перспективы откроются у них по окончании института и т.д.
Результатом их деятельности стал отчет деканату, в виде списка имен студентов и количества потенциальных абитуриентов с которыми они побеседовали.
Определить общее количество побывавших в институте школьников, а также имена студентов, побеседовавших с наибольшим и наименьшим количеством школьников.
11. Демократичный декан
Декан на факультете был очень современен и демократичен. Он четко следовал принципу: мухи – отдельно, а котлеты – отдельно. Выражалось это, например, в том, что даже после самого жестокого разноса на коллоквиуме он мог пригласить к себе в кабинет тех же студентов и за душевной беседой напоить их чаем.
Однажды, примерно в такой же ситуации, он привел к себе измученных студентов на отпаивание чаем. Но, сунувшись в сервант с чайными принадлежностями, он обнаружил полное отсутствие сахара.
Уставший не менее самих студентов декан сорвался и без всякой задней мысли разразился тирадой в отношении тех, кто пьет чаи и не восстанавливает запасы сахара, и что никакой деканской зарплаты не хватить обслуживать весь факультет.
Студенты как всегда поняли все правильно.
Буквально на следующий день в деканат потянулись студенты с кульками сахара различных размеров (поговаривают даже, что папаша одного студента подвез пару мешков).
Имеется список студентов с указанием количества принесенного ими сахара. Определить сколько сахара скопилось в деканате, и кто принес его больше всех.
12.Вперед! На Запад!
В связи с присоединением к Болонскому соглашению ректорат решил сделать в вузе все как у людей (то бишь в США). По части размера оплаты за обучение и дебилоподобности тестов мы их практически догнали. Остался один важный пункт – обеспечение спортивной славы вуза. Учитывая специфику гуманитарного факультета ректорат постановил, что из студенток данного факультета будут формироваться группы поддержки.
Одно только не было учтено – менталитет российских девушек – несмотря на обещания автомата по физкультуре далеко не каждая из них согласилась прыгать полуголой при большом стечении народа.
Дан список групп, их численность и количество студенток, согласившихся участвовать в группе поддержки. Определить не разгневается ли декан факультета, если по спущенной сверху разнарядке в группах поддержки должно участвовать не менее 40% студенток.
JavaScript работа со строками
Мы уже не раз использовали строковые литералы, которые представляют собой последовательность символов, заключенную в одинарные или двойные кавычки. Все строки являются объектами типа String и с ними можно производить некоторые действия, например, мы уже знакомы с операцией конкатенации, т.е. объединения строк. В этом уроке посмотрим другие возможности работы со строками. Для начала определимся с некоторыми понятиями:
Алфавит - конечное множество символов.
Строка - конечная последовательность символов некоторого алфавита.
Пустая строка - строка, не содержащая ни одного символа.
Чтобы создать строковый объект можно воспользоваться конструктором newString. Например:
var s = newString("Итого:");

Если применить единственное свойство объекта String - length, то мы узнаем длину строки.Для нашего примера, результатом выполнения s.length будет число 6.Рассмотрим методы, влияющие на строку:
charAt(n) - возвращает символ, позицию которого определяет параметр n.Для нашего примера, результатом выполнения s.charAt(0) будет буква "И".
substr(n1,n2) - возвращает подстроку из строки, где n1 - позиция первого символа подстроки, а n2 - количество символов в строке.Для нашего примера, результатом выполнения s.substr(0, 4) будет подстрока "Итог".
Для примера напишем сценарий, который будет определять, сколько раз заданное слово встречается в определенном тексте.Код html-страницы будет следующим:
<html>
<head>
<title>javascript строки</title>
<link rel="stylesheet" type="text/css" href="style.css">
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<form name="forma11">
Введите текст:<br>
<textarea name="textin" rows="4" cols="20"></textarea><hr>
Введите слово: <input type="text" size="10" name="slovo"><hr>
<input type="button" value="Определить" onClick="numword(forma11);">
<input type="reset" value="Отменить"><hr>
Количество слов в тексте: <input type="text" size="10" name="res">
</form>
</body>
</html>

Теперь напишем саму функцию numword() на странице script.js:
function numword(obj) {
var t=obj.textin.value;
var s=obj.slovo.value;
var m=s.length;
var res=0;
var i=0;
while (i < t.length-1)
{var ch=t.substr(i,m)
if (ch==s){
res+=1;
i=i+m
}
else i++
}
obj.res.value=res
}

Посмотрим на результат, а затем разберем написанное:
Начало формы
Введите текст:

Введите слово: 

 

Количество слов в тексте: 
Конец формы
Итак, посмотрим что же мы написали в нашей функции.Сначала мы определили две строковые переменные, одной является текст, введенный пользователем, другой - слово.
var t=obj.textin.value;
var s=obj.slovo.value;

Затем мы определили длину искомого слова и обнулили переменную с результатом:
var m=s.length;
var res=0;

Далее с помощью цикла while, мы указали следующее: пока параметр цикла i меньше либо равен длине текста (один вычитаем, т.к. нумерация символов начинается с нуля), брать подстроку, начиная с текущего символа i и длинной равной длине искомого слова и сравнивать ее с самим искомым словом. Если результат истинен, то переменная resувеличивается на единицу, а цикл продолжает свою работу с символа, который следует за найденным словом (i=i+m-1). В противном случае - со следующего символа:
var i=0;
while (i<=t.length-1)
{var ch=t.substr(i,m)
if (ch==s){
res+=1;
i=i+m-1
}
else
i++
}

Наконец, мы отображаем результат:
obj.res.value=res

В языке javascript определен ряд стандартных функций работы со строками:
Number(s) - преобразует строковый параметр s в число.
String(n) - преобразует число n в строку.
isNaN(s) - проверяет является ли параметр s числом. Если параметр s не является числом, то возвращает значение true (истина), в противном случае - false (ложь).
Помните, когда в предыдущих уроках, мы брали числа, введенные пользователем, и умножали на 1. Таким образом, мы их из строки переводили в число. Например:
var a1=1*obj.a1.value;

То же самое мы могли бы записать, используя стандартную функцию Number(s):
var a=obj.a1.value;
var a1=Number(a);

Метод charCodeAt()возвращает числовое значение Юникода для символа по указанному индексу.
str.charCodeAt(index)
В следующем примере возвращается число 65, значение Unicode для латинского символа «A».
'ABC'.charCodeAt(0); // вернёт 65
Метод toLowerCase() преобразует строку к нижнему регистру;
Метод toUpperCase() преобразует строку к верхнему регистру;
Функция для перевода строки в нижний регистр:
function tolowcase(element) {
var str = element.value;
var res = str.toLowerCase();
element.value = res;
}
Соответственно в поле input пропишем:
<input type="text" name="name" onkeyup="tolowcase(this);">
Аналогично для перевода строки в верхний регистр:
function toupercase(element) {
var str = element.value;
var res = str.toUpperCase();
element.value = res;
}
И поле input будет:
<input type="text" name="name" onkeyup="toupercase(this);">
Метод trim удаляет пробелы по краям строки. Чаще всего это нужно при вводе пользователем каких-либо значений: он может случайно налепить лишних пробелов - и наша задача очистить введенный текст от них.
строка.trim();
Пример
Давайте удалим концевые пробелы у строки:
var str = ' строка ';
document.write(str);
Пример. Написать скрипт, определяющий количество союзов «и» в фразе.
Создаем html страницу:
<html>
<head>
<title>Строки</title>
<script type="text/javascript" src="string.js"></script>

<body>
<form name="string">
Фраза <input type="text" size="80" name="fraza"><br>
Количество союзов и <input type="text" size="8" maxlength="8" name="otvet"><br>
<input type="button" value="Ok" onClick="poisk(string);">
<input type="reset" value="Отмена">
</form>
</body>
Создаем функцию poisk():
function poisk(obj) {
var s=obj.fraza.value;
var res=0;
var i=0;
for (i=0; i <= s.length-2; i++){
var string3=s.substr(i,3); // вырезаем из фразы три символа и записываем их // в новую фразу string3, начиная с i-го
var first_ch=string3.substr(0,1); // из фразы string3 вырезаем первый символ
var second_ch=string3.substr(1,1); //из фразы string3 вырезаем второй символ
var third_ch=string3.substr(2,1); // из фразы string3 вырезаем третий символ
if (second_ch.toLowerCase() == 'и'){ // если второй символ, приведенный к нижнему регистру равен "и"
if (third_ch==' '|| third_ch=='.'|| third_ch==',' && first_ch==' '){//если третий символ - пробел или точка или запятая и первый символ пробел, то
res+=1;
}
}
}
obj.otvet.value=res
}
Задания 7
Дана фраза. Выяснить сколько в ней имен собственных (начинающихся с заглавной буквы).
Дана фраза. Выяснить, является ли она палиндромом (одинаково читается слева направо и справа – налево)?
Дана фраза. Выяснить сколько раз в ней встречается ситуация, когда последняя буква очередного слова совпадает с первой буквой следующего слова.
Дана фраза. Выяснить, сколько в ней прилагательных в единственном числе, т. е. слов, оканчивающихся на «-ый», «-ая» и «-ое»?
Дана фраза. Определить, сколько в ней предложений состоящих из одного слова.
Дана фраза. Определить, имеются ли в ней числа, состоящие из одной цифры?
Дана фраза. Определить, имеются ли в ней симметричные пятибуквенные слова?
Дана фраза. Определить сколько в ней наречий (слов, оканчивающихся на букву «о»)?
Дана фраза. Определить, сколько в ней союзов и однобуквенных местоимений?
Дана фраза. Зашифровать ее, записав все ее символы в обратном порядке, кроме трехбуквенных слов.
Дана фраза. В ней между словами может быть и по одному и по два пробела. Преобразовать ее так, чтобы между словами осталось по одному пробелу.
С клавиатуры вводятся три слова. Вывести на экран все возможные фразы, которые можно составить из этих трех слов.
JavaScript - Урок 14. Регулярные выражения
Тема регулярных выражений достаточно объемная и в одном уроке ее не охватить, но цель наших уроков дать Вам основные представления о языке javascript и его возможностях, поэтому и обойти стороной регулярные выражения никак нельзя.Для начала разберемся, что же это такое. Регулярное выражение - это инструкция, описывающая на специально разработанном языке (RegExp) закон "сходства" искомой строки с образцом.Для чего это нужно? Например:
Для организации поиска в тексте чего-либо.
Для замены одной части подстрок другими.
Для проверки корректности пользовательского ввода (наверно, вы не раз сталкивались с ситуацией, когда вводили адрес своей электронной почты в какую-либо форму и получали ошибку типа "Некорректный e-mail").
Не будем вдаваться в подробности, а посмотрим как задавать регулярные выражения. Существует два способа, в данной уроке мы рассмотрим один (создание в литеральной нотации):var p=/pattern/flags; гдеpattern - шаблон, является основой регулярного выражения, определяющей критерии сопоставления строк. Состоит из литералов и метасимволов.flags - флаги (модификаторы), задают дополнительные параметры сопоставления шаблона.Пример:var par=/[0-9a-z]+/i; Здесь [0-9a-z]+ - шаблон, буквально означающий следующее "любое количество цифр и букв 1 и более раз" (как задавать шаблон посмотрим чуть ниже).i - флаг, означающий, что регистр символов не имеет значение.Чтобы было понятнее о чем речь, рассмотрим пример. Предположим, что у нас есть форма, куда пользователь вводит свой e-mail и пароль. Мы хотим, чтобы при нажатии на кнопку "Зарегистрировать" осуществлялась проверка корректности ввода.Код html-страницы будет следующим:
<html>
<head>
<title>javascript регулярные выражения</title>
<link rel="stylesheet" type="text/css" href="style.css">
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<h2>Форма регистрации</h2>
<form name="forma12">
<label>E-mail:</label><br>
<input type="text" name="mail"><br>
<label>Password:</label><br>
<input type="password" name="pas"><br>
<input type="button" value="Зарегистрировать" onclick="prov_adress(forma12);">
</form>
</body>
</html>

Итак, что же должна сделать функция prov_adress()? Для начала нам нужны две переменные, в которые мы поместим значения, введенные пользователем:
function prov_adress(obj) {
var adr=obj.mail.value;
var par=obj.pas.value;
}

Теперь нам нужно задать образцы (регулярные выражения), с которыми мы и будем сравнивать то, что ввел пользователь. Здесь, я их просто приведу, о том, как их составлять поговорим позже:
function prov_adress(obj) {
var adr=obj.mail.value;
var par=obj.pas.value;
var adr_pattern=/[0-9a-z_]+@[0-9a-z_]+\.[a-z]{2,5}/i;
var par_pattern=/[0-9a-z]+/i;
}

Теперь осуществляем проверку на сопоставление образцу. Для этого воспользуемся методом test объекта RegExp:
function prov_adress(obj) {
var adr=obj.mail.value;
var par=obj.pas.value;
var adr_pattern=/[0-9a-z_]+@[0-9a-z_]+\.[a-z]{2,5}/i;
var par_pattern=/[0-9a-z]+/i;
var prov=adr_pattern.test(adr);
var prov1=par_pattern.test(par);
}

Строка adr_pattern.test(adr) означает следующее: проверить существование в строке adr последовательности, сопоставляющейся с регулярным выражением adr_pattern. Метод test возвращает логическое значение (true или false).Нам осталось только указать в нашей функции, что делать в случае успешной (или неуспешной) проверки:
function prov_adress(obj) {
var adr=obj.mail.value;
var par=obj.pas.value;
var adr_pattern=/[0-9a-z_]+@[0-9a-z_]+\.[a-z]{2,5}/i;
var par_pattern=/[0-9a-z]+/i;
var prov=adr_pattern.test(adr);
var prov1=par_pattern.test(par);
if (prov==true && prov1==true) {
alert("Вы зарегистрированы!");
}
else { alert("Введенные данные некорректны!");
}
}

Готово, надеюсь, суть того, что мы делаем вы поняли. Но прежде, чем проверить работу нашего сценария, посмотрим, из чего же состоят наши регулярные выражения.Возьмем регулярное выражение для нашего пароля - /[0-9a-z]+/i:
/[0-9a-z]+/ - шаблон, в котором:
0-9 - любая цифра.
a-z - любая строчная буква от a до z.
[] - квадратные скобки означают, что в шаблоне может присутствовать любой из перечисленных в них литералов (в нашем случае цифры и строчные буквы)
+ - указывает, что данная часть шаблона (т.е. то, что в квадратных скобках) может повторяться один и более раз.
i - флаг, означающий, что регистр символов не имеет значение.
Иными словами, наше регулярное выражение указывает, что пароль может содержать любое количество цифр и букв 1 и более раз (т.е. он может состоять из одной цифры, из одной буквы, из многих цифр, из многих букв, из цифр и букв). Например, если пользователь введет в поле пароля "2", "a3b" или "leopard", то такой пароль будет считаться корректным. А если, он введет "ab&s" или "24?", то такой пароль корректным считаться не будет, т.к. он содержит спецсимволы, а мы их в регулярном выражении не разрешили.Надеюсь теперь стало понятно как и зачем можно использовать регулярные выражения, осталось узнать принципы их составления. Собственно говоря, задача составления регулярного выражения сводится к созданию его шаблона. А шаблон, как вы помните, может состоять из литералов и метасимволов.Начнем с самого простого - литералов:
Каждый из таких символов представляет сам себя. Например, /abc/ - такому шаблону сопоставима только строка "abc".
a-z - все строчные буквы от a до z. Например, /a-z/ - такому шаблону сопоставляются 26 строк: "a", "b", "c"... "z"
A-Z - все заглавные буквы от A до Z.
0-9 - все цифры.
Если мы хотим указать, что цифр или букв может быть несколько, то придется использовать управляющие символы: 
* - указывает, что символ (или часть шаблона, если она заключена в квадратные скобки) может повторяться 0 и более раз. Например, /ab*c/ - означает, что строка начинается с символа a, затем может быть сколько угодно символов b, после которых следует символ c. Т.е. это могут быть, например, такие строки: "ac", "abc", "abbbbbbc" и т.д.
+ - указывает, что символ (или часть шаблона, если она заключена в квадратные скобки) может повторяться 1 и более раз. Например, /ab+c/ - означает, что строка начинается с символа a, затем может быть сколько угодно символов b (но не меньше 1), после которых следует символ c. Т.е. это могут быть, например, такие строки: "abc", "abbbbbbc" и т.д.. - указывает, что на этом месте может быть любой одиночный символ, кроме символа новой строки. Например, для шаблона /ab.c/ сопоставимы такие строки: "ab6c", "abxc", "ab=c" и т.д.? - указывает, что символ (или часть шаблона, если она заключена в квадратные скобки) может повторяться 0 или 1 раз. Например, /ab?c/ - означает, что строка начинается с символа a, затем может быть или не быть один символ b, после которого следует символ c. Т.е. это могут быть такие строки: "ac", "abc"
{n} - указывает, что символ (или часть шаблона, если она заключена в квадратные скобки) может повторяться ровно n раз. Например, /ab{3}c/ - означает, что строка начинается с символа a, затем идут 3 символа b, после которых следует символ c. Т.е. это будет строка "abbbc".
{n,} - указывает, что символ (или часть шаблона, если она заключена в квадратные скобки) может повторяться n и более раз. Например, /ab{3,}c/ - означает, что строка начинается с символа a, затем идут 3 или более символов b, после которых следует символ c. Т.е. это могут быть такие строки: "abbbc", "abbbbbbbc" и т.д.
{n, m} - указывает, что символ (или часть шаблона, если она заключена в квадратные скобки) может повторяться от n до m раз. Например, /ab{1,3}c/ - означает, что строка начинается с символа a, затем идут от 1 до 3 символов b, после которых следует символ c. Т.е. это могут быть такие строки: "abc", "abbc", "abbbc".
[] - такой шаблон сопоставим с любым одиночным символом, принадлежащим множеству, определенному в скобках. Множество задается перечислением или указанием диапазона. Например, шаблону /[abc]/ могут быть сопоставимы строки: "a", "b", "c".
[^] - такой шаблон сопоставим с любым одиночным символом, не принадлежащим множеству, определенному в скобках. Например, шаблону /[^abc]/ могут быть сопоставимы строки: "f", "x", "Z", но не могут быть сопоставимы строки: "a", "b", "c".
^ - указывает, что символы сопоставимы с началом строки. Например, шаблону /^abc/ могут быть сопоставимы строки: "abcd", "abcfh", но не могут быть сопоставимы строки: "dabc", "cbabc" и т.д.
$ - указывает, что символы сопоставимы с концом строки. Например, шаблону /abc$/ могут быть сопоставимы строки: "dabc", "fhabc", но не могут быть сопоставимы строки: "abcd", "abccb" и т.д.
| - указывает на несколько альтернативных шаблонов. Например, шаблону /ab|c/ будут сопоставимы строки: "ab" и "c".
\ - служит для экранирования специальных символов, т.е. обратный слэш перед символом указывает на то, что он должен интерпретироваться как специальный. Например:
\d - соответствует любая цифра от 0 до 9.
\D - соответствует все, кроме цифры.
\s - соответствует пробел.
\S - соответствует все, кроме пробела.
\w - соответствует буква, цифра или знак подчеркивания.
\W - соответствует все, кроме буквы, цифры или знака подчеркивания.
Например, шаблону /x\d\d/ будут соответствовать строки: "x01", "x25" и т.д., но не будут соответствовать строки: "A15", "x0A"...Также обратный слэш используется, чтобы специальный символ сделать литеральным. Например, если нам нужно найти строку "a*b", то мы зададим следующий шаблон /a\*b/.
Используя вышеперечисленные литералы и метасимволы, можно составлять какие угодно шаблоны (считай регулярные выражения). Давайте, например, посмотрим что же мы написали для шаблона e-mail в нашем примере:
var adr_pattern=/[0-9a-z_]+@[0-9a-z_]+\.[a-z]{2,5}/i;

Итак, мы указали, что в адресе электронной почты идут цифры, буквы и знаки подчеркивания 1 и более раз, затем следует символ @, затем снова идут цифры, буквы и знаки подчеркивания 1 и более раз, затем идет символ точки, после которой идут буквы от 2 до 5 раз. Примерно такой вид имеют адреса электронной почты.Теперь, зная, что именно мы задали в образце, можно проверить работу примера:
Форма регистрации
Начало формы
E-mail:Password:
Конец формы
Попробуйте ввести e-mail вида "serega@mail" и посмотрите, что будет.Надо сказать, что составление шаблонов это своего рода искусство. К тому же, одно и то же регулярное выражение можно записать по-разному. Например, /[0-9a-z_]/ - это тоже самое, что и /\w/.Если хотите потренироваться, то можете усовершенствовать регулярное выражение для проверки e-mail в нашем примере (оно далеко от совершенства).
Задания 8
Создайте скрипт, проверяющий требования для параметров формы:
Имя : Одна заглавная английская буква, остальные строчные.
Пароль – должны быть Прописные, строчные буквы, цифры, символ подчеркивания.
Имя : Одна заглавная русская буква, остальные строчные.
Пароль – должны быть строчные буквы, цифры, амперсант.
Имя : Одна заглавная буква, остальные строчные, язык русский или английский.
Пароль – должны быть Прописные буквы, 4 цифры, символ подчеркивания.
Имя : Одна заглавная английская буква, остальные строчные.
Пароль – должны быть Прописные, строчные буквы, цифры, символ подчеркивания.
Имя : Одна заглавная английская буква, остальные строчные из первой трети алфавита.
Пароль – должны быть Прописные и строчные буквы из первой трети алфавита, цифры, символ подчеркивания.
Имя : Одна заглавная английская буква, остальные строчные из второй трети алфавита.
Пароль – должны быть Прописные и строчные буквы из второй трети алфавита, цифры от 0-5 .
Имя : Одна заглавная английская буква, остальные строчные из третей трети алфавита.
Пароль – должны быть Прописные и строчные буквы из первой трети алфавита, цифры от 5-9, дефис.
Имя : Одна заглавная английская гласная буква, остальные строчные из первой трети алфавита.
Пароль –согласные строчные буквы из первой трети алфавита, цифры, символ подчеркивания.
Имя : Одна согласная английская буква из первой четверти алфавита, остальные строчные из первой трети алфавита.
Пароль –согласные строчные буквы из второй трети алфавита, цифры, символ подчеркивания.
Имя : Одна гласная английская буква, остальные строчные согласные из второй четверти алфавита.
Пароль –гласные строчные буквы, цифры, символ подчеркивания.
Имя : Одна согласная английская буква из первой четверти алфавита, остальные строчные из первой трети алфавита.
Пароль –согласные строчные буквы из второй трети алфавита, цифры, символ подчеркивания.
JavaScript - Урок 15. Работа с окнами
Работу с окнами мы рассмотрим на примере.Пусть у нас имеется страница, на которой расположены кнопки с названиями автомобилей и мы хотим, чтобы по щелчку по кнопке открывалось окно с картинкой этого автомобиля. Код html-страницы будет следующим:
<html>
<head>
<title>javascript окно</title>
<link rel="stylesheet" type="text/css" href="style.css">
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<form name="forma13">
<input type="button" value="ford" onClick="open_ford()">
<input type="button" value="mazda" onClick="open_mazda()">
<input type="button" value="volvo" onClick="open_volvo()">
</form>
</body>
</html>

Теперь нам надо создать три страницы с изображениями автомобилей (ford.html, mazda.html, volvo.html), которые собственно и будут загружаться в новые окна.Код страницы ford.html будет следующим:
<html>
<head>
<title>javascript окно</title>
<link rel="stylesheet" type="text/css" href="style.css">
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<img src="images/ford.jpg" width="300">
<input type="button" value="Закрыть" onClick="close_pict()">
</body>
</html>

Создайте аналогично две другие страницы самостоятельно (и не забудьте поместить в папку images соответствующие картинки).В наших функциях мы будем использовать два метода объекта window - open() и close(). Первый создает новое окно, второй - закрывает его.На странице script.js напишем код функций, а затем разберем его:
function open_ford() {
ford=window.open("ford.html", "display_ford",
"width=400,height=300,status=no,toolbar=no,menubar=no");
}
function open_mazda() {
mazda=window.open("mazda.html", "display_mazda"
"width=400,height=300,status=no,toolbar=no,menubar=no");
}
function open_volvo() {
volvo=window.open("volvo.html", "display_volvo"
"width=400,height=300,status=no,toolbar=no,menubar=no");
}
function close_pict() {
window.close();
}

Давайте посмотрим, что мы написали. В первых трех функциях идут строки вида:
=window.open("ford.html", "display_ford", "width=400,height=300,status=no,toolbar=no,menubar=no");

Эта строка создает новое окно с помощью метода open() объекта window (вы же помните, что методы отделяются точкой) и записывает в него страницу ford.html.У этого метода существует три параметра, каждый из которых заключается в кавычки: - первый параметр указывает страницу, которую нужно загрузить в окно (например, ford.html),- второй параметр задает имя открываемому окну (в нашем примере display_ford),- третий параметр позволяет нам управлять процессом создания окна. Здесь можно задать размеры окна, указать, должно ли новое окно иметь строку статуса, панель инструментов или меню. В нашем примере, мы создали окно шириной 400 и высотой 300 пикселов, без строки статуса, панели инструментов и меню. А могли бы вместо noнаписать yes и тогда все бы это появилось в нашем окне.Здесь же можно указать ряд других параметров:location выводить строку URL scrollbars добавлять линейку прокрутки, если документ не помещается на экране resize позволять пользователю изменять размер окна Если какие-либо параметры опущены (в нашем примере, это три только что перечисленных), то из значение приравнивается к no. Обратите внимание, что все параметры перечисляются через запятую, НО БЕЗ ПРОБЕЛА!В последней функции, мы использовали метод close(), который закрывает текущее окно.Посмотрите на пример в действии:
Начало формы
  
Конец формы
У объекта window, кроме методов open() и close(), как вы понимаете, есть и другие. С одним из них, методом alert (), мы уже сталкивались не раз. Давайте посмотрим, какие еще полезные методы есть у этого объекта:confirmПоказывает диалоговое окно с указанным сообщением и кнопками "OK" и "Cancel". Сообщение должно побуждать пользователя принять решение. Подтверждение возвращает методу true, если пользователь выбирает "OK" или falseесли пользователь выбирает "Cancel". Синтаксис:confirm ("сообщение") Пример:пусть у нас есть какая-нибудь кнопка "Открыть окно" и мы хотим, чтобы по щелчку по ней появлялось диалоговое окно, позволяющее уточнить действительно ли мы хотим его открыть (для примера пусть открывается окно с изображением Volvo из предыдущего примера).
Начало формы
Конец формы
Как видите, теперь окно с картинкой открывается только в том случае, если мы выбрали "OK" в диалоговом окне.Код html-страницы для этого примера прост:
<html>
<head>
<title>javascript окно</title>
<link rel="stylesheet" type="text/css" href="style.css">
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<form name="forma14">
<input type="button" value="Открыть окно" onClick="choiceOf();">
</form>
</body>
</html>

На странице script.js напишем код функции choiceOf():
function choiceOf(){ if (confirm("Вы действительно хотите открыть окно?")) { volvo=window.open("volvo.html", "display_volvo",
"width=400,height=300,status=no,toolbar=no,menubar=no");
}
}

Т.е. в функции мы указали, что окно следует открывать только в случае, если пользователь в диалоговом окне выбрал "OK" (т.е. метод вернул истину (true)).Хотелось бы пояснить один нюанс, в программировании в условии оператора if, если метод возвращает либо истину (true), либо ложь (false), часть ==true опускается. Иными словами вместо:
(confirm("Вы действительно хотите открыть окно?")==true)

пишется:
(confirm("Вы действительно хотите открыть окно?"))

promptЭтот метод отображает диалоговое окно ввода пользователя.Синтаксис:prompt(сообщение, [значение по умолчанию]) где[] - означают, что параметр необязателен, т.е. его можно опустить. Пример:Нажмите на кнопку ниже:
Начало формы
Конец формы
Я думаю, вы догадались, что мы хотим сделать. Мы хотим, чтобы пользователь ввел свое имя в диалоговом окне, после чего мы поздороваемся с ним по имени. * По необъяснимым причинам этот пример в IE7 работает через раз. Если у Вас не сработало, то откройте этот урок, например, в FireFox.*Итак, код html-страницы как всегда прост:
<html>
<head>
<title>javascript окно</title>
<link rel="stylesheet" type="text/css" href="style.css">
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<form name="forma15">
<input type="button" value="Давай знакомиться!" onClick="acquaintance()">
</form>
</body>
</html>

Впрочем, код функции тоже несложен:
function acquaintance(){ var YouName=prompt("Как тебя зовут?", "Напиши здесь свое имя."); alert("Привет "+YouName);
}

Как видите, здесь мы использовали два метода объекта window: сначала метод prompt, который вернул введенное пользователем имя в переменную YouName, а затем - метод alert, который отобразил окно сообщений, в котором мы и поздоровались с пользователем по имени.setTimeoutЭтот метод делает что-либо по истечении указанного в миллисекундах промежутка времени. Синтаксис:setTimeout (что делать, время в миллисекундах) Пример:Пусть при нажатии на некоторую кнопку "Можно начинать?", через 3 секунды появляется окно сообщений с текстом "Начинайте!".
Начало формы
Конец формы
Итак, код html-страницы:
<html>
<head>
<title>javascript окно</title>
<link rel="stylesheet" type="text/css" href="style.css">
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<form name="forma16">
<input type="button" value="Можно начинать?" onClick="setTimeout('startMessage()',3000)">
</form>
</body>
</html>

Да, именно здесь мы и применим этот метод. Так мы укажем, что функция startMessage() должна сработать через 3 секунды.Код самой функции прост:
function startMessage(){ alert("Начинайте!")
}

Для того, чтобы отключить задержку таймера, установленную с помощью метода setTimeout используется следующий метод объекта window: clearTimeoutЭтот метод отключает таймер, установленный при помощи метода setTimeout. Синтаксис:clearTimeout (timerID) гдеtimerID - уникальный идентификатор таймера, полученный при его установке. Давайте немножно переделаем наш последний пример, а именно сделаем две кнопки "Можно начинать?" и "Отменить вопрос":
Начало формы
 
Конец формы
Теперь, если нажать на кнопку "Можно начинать?", а затем, не дожидаясь появления окна сообщений, нажать на кнопку "Отменить вопрос", то окно сообщений не появится вовсе.При этом мы изменили только html-код страницы на следующий:
<html>
<head>
<title>javascript окно</title>
<link rel="stylesheet" type="text/css" href="style.css">
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<form name="forma17">
<input type="button" value="Можно начинать?" onClick="timer1=setTimeout('startMessage()',3000)">
<input type="button" value="Отменить вопрос" onClick="clearTimeout(timer1)">
</form>
</body>
</html>

Обратите внимание, что действие метода setTimeout происходит однократно. Если же мы хотим, чтобы какое-либо событие повторялось через определенные промежутки времени, то нам понадобится следующий метод: setIntervalВ отличие от setTimeout, этот метод выполняет код много раз, через равные промежутки времени, пока не будет остановлен при помощи метода clearInterval.Синтаксис:timerID=setInterval(что делать, время в миллисекундах) гдеtimerID - уникальный идентификатор таймера, полученный при его установке. Давайте применим этот метод к предыдущему примеру:
<html>
<head>
<title>javascript окно</title>
<link rel="stylesheet" type="text/css" href="style.css">
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<form name="forma18">
<input type="button" value="Можно начинать?" onClick="timer2=setInterval('startMessage()',3000)">
<input type="button" value="Я понял!" onClick="clearInterval(timer2)">
</form>
</body>
</html>

Теперь посмотрите, как это работает (прежде, чем нажимать на кнопку "Я понял", убедитесь, что окно сообщений открывается каждые 3 секунды):
Начало формы
 
Конец формы
Ну вот собственно и все, мы рассмотрели методы объекта Window, надеюсь они вам пригодятся в вашей работе.Собственно, на этом подошли к концу и наши уроки по JavaScript. Конечно, мы не рассмотрели все возможности этого языка, но как показывает практика, этого и не нужно. Все самое необходимое мы узнали, вы вполне в состоянии писать сценарии на этом языке. Практика, практика и еще раз практика, а если в процессе у вас возникнут вопросы, то ответы на них без труда можно найти при помощи того же поисковика Google. Целью же наших уроков было ввести Вас в мир JavaScript и показать его основные возможности.Но не спешите закрывать эту страницу. Как правило, сайтостроителей не интересуют детали реализации того или иного сценария, гораздо больше интересует возможность использовать уже готовые скрипты. Многие пользуются такими шаблонами, даже не вникая в основы JavaScript, что на мой взгляд не совсем правильно (ведь если что-то начнет работать не так, у таких любителей не будет возможности разобраться и поправить).Другое дело, если использовать специальные библиотеки, которые заметно облегчают жизнь. Что такое библиотека? Это некий набор многократно используемых функций.Ведь понятно, что для сайта, например, нужны графические эффекты. Вот кто-то постарался, написал, проверил и выложил это для всеобщего использования. Т.е. кто-то уже написал и протестировал в работе практически весь код, выполняющий определенные действия. Такие функции и объединяют в библиотеки. От вас же требуется только научиться использовать эти библиотеки для своих нужд. И тогда, может оказаться, что знаний, полученных в этих уроках по JavaScript вам более, чем достаточно.Наиболее популярными библиотеками JavaScript являются Prototype и jQuery. Обусловлено это тем, что они предоставляют кросс-браузерный интерфейс к методам DOM (объектная модель документа). Т.е. используя эти библиотеки, Вы вряд ли столкнетесь с ситуацией, когда в одном браузере сценарий работает, а в другом - нет. А это очень большой плюс.