Программное управление
Объект, построенный браузером для блока <textаrеа>... </textarea>, имеет следующие свойства.
value - значением является текущее содержимое редактора. Содержимое окна размещается в перемен-ной value как одна текстовая строка; концы экранных строк представляются двумя символами «\r\n"» (возврат каретки к началу строки и переход на новую строку)
defaultValue - значением является содержимое редактора по умолчанию, т. е. тот текст, который записан в HTML-коде между тегами <TEXTAREA>. . .</TEXTAREA>
Рассмотрим следующую программу испытательного стенда.
<HTML>
<HEAD>
<TITLE>Свойства объекта TEXTAREA</TITLE>
</HEAD>
<BODY bgcolor=white text=black>
<H2>Свойства объекта TEXTAREA</H2>
<FORM>
<TABLE bgcolor=#F0F0F0 border=1 cellspacing=0 cellpadding=10>
<TR>
<TD>
<P>Замените “чужие” слова на правильные:
<P>
<TEXTAREA rows=7 cols=44 name=edit>
Покрывало
Убежало,
Улетела размазня,
И кукушка,
Как лягушка,
Ускакала от меня.
</TEXTAREA>
<P>
<NOBR>
<INPUT type=reset value=Восстановить>
<INPUT type=button
value=value
onclick="alert(this.form.edit.value)">
<INPUT type=button value=defaultValue
onclick="alert(this.form.edit.defaultValue)">
</NOBR>
</TD>
</TR>
</TABLE>
</FORM>
</BODY>
</HTML>
Лекция 13. Язык JavaScript. Циклы и функции
13.1 Цикл while
13.2 Цикл for
13.3 Команды break и continue
Программирование циклов с конца
Описание переменной цикла
Встроенные функции JavaScript
Константы
Стандартные функции
Функции пользователя
13.1 Цикл while
В табл. показан общий вид цикла с предусловием while и пример его
Общий вид while(условие) команда; Результат работы примера: | Пример var i = 1; var sum = 0; while(i <= 100) { sum += i; i ++; } alert("Сумма 1 + 2 + ... + 100 = " + sum); |
Цикл работает так. Сначала проверяется условие. Если оно истинно, выполняется команда (тело цикла). И эти действия повторяются, т.е. снова проверяется ус-ловие,и если оно истинно, выполняется тело цикла,и т.д.
Цикл заканчивает работу, когда при оче-редной проверке условие оказывается лож-ным. Так как условие проверяется перед выполнением тела цикла, то команды, входящие в цикл, выполняются хотя бы раз.
13.2 Цикл for
В табл. показан общий вид цикла for и выполнение предыдущего примера с этой командой.
Общий вид for(начало;условие; приращение) команда; | Пример var i; var sum = 0; for(i=1; i<=100; i ++) sum += i; alert ("Сумма 1 + 2 + ... + 100 = " + sum); |
Результат работы приведенного примера тот же, что и предыдущего. Цикл работает так.
Команда, помещаемая в начало, выполняется до циклического повторения (в примере это команда i = 1;), а сам цикл образуете следующими действиями:
- проверка условия (в примере i <= 100);
- выполнение тела цикла (в примере sum+= i);
- выполнение команды, записанной в разделе приращение (в примере i ++). Как и в команде while, тело цикла может не выполниться ни разу, если условие ложно с сам-ого начала. Не выполнится при этом и команда из разделов приращение. А вот команда из раз-дела начало выполняется всегда, независимо отусловия, и выполняется ровно один раз.
В заголовке цикла for любая из трех конструк-ций начало, условие, приращение может быть опущена, при этом соответствующую точку с запятой опускать нельзя. Когда опущено условие, считается, что оно имеет значение true. Таким образом, цикл превращается в бесконечный:
for (;;) команда
Этот цикл не остановится, если только не будет содержать внутри себя команду break.
13.3 Команды break и continue
Эти команды используют в теле цикла для изменения последовательного хода выполнения команд.
Команда continue заставляет браузер пропустить выполнение всех команд после нее и до конца тела цикла. Но цикл продолжается.
Команда break еще радикальнее — она заставляет браузер немедленно прекратить
Пример 1 (continue). Найти сумму 5 четных чисел, случайным образом взятых из диапазона [1,20].
var len = 5; // Количество чисел.
var a = 1; // Левая граница интервала.
var b = 20; // Правая граница интервала.
var sum = 0; // Сумматор.
var counter = 0; // Счетчик чисел.
var number; // Случайное число.
var str = " "; // Строка для вывода.
while (counter < len)
{ number = Math.floor(a + (b-a+1)*Math.random());
if (number % 2) continue;
sum += number; str += number;
if (counter < len-1) str += " + ";
else str += " = ";
counter++;
}
str += sum; alert(str);
При запуске этого примера на экран выводится сл. рисунок.
Стандартная функция Math.random() генерирует случайное число из отрезка [0,1]. Стандартная функция Math.floor(num) возвращает ближайшее целое число, меньшее или равное аргументу.
Пример 2 (break). Целые числа случайным образом генерируются из диапазона [1,20]. Требуется сумми-ровать эти числа до тех пор, пока очередное случайное число не станет равным 10.
var a = 1; // Левая граница интервала.
var b = 20; // Правая граница интервала.
var special = 10; // Критическое значение
// случайного числа.
var sum = 0; // Сумматор.
var number; // Случайное число.
var str = ""; // Строка для вывода.
for ( ; ; ) // Бесконечный цикл.
{ number = Math.floor(a + (b-a+1)*Math.random( ));
sum += number; str += number ;
if (number == special) break;
str += " + "; }
str += " = " + sum; alert(str);
Результат работы примера может быть таким, как на верхнем рис. или таким, как на нижнем рис.
Пример 3. Дана функция
Требуется найти значения у при изменениях аргумента х от 0 до 3 с шагом 0,5. Печатать значения х и у до тех пор, пока очередное значение х не станет равным 3.
var x0 = 0; // Начальное значение х
var xk = 3; // Конечное значение х
var dx = 0.5; // шаг изменения х
var x=x0; // Присвоение х начального значения
var y; // Объявление переменной у
while (x =< xk)
{ y = x*x - Math.sqrt(x) +1.5;
alert(" x= " + x + " y= " + y);
x+=dx ;
}
Если вывести все в одном окне,то нужно использовать вместо alert команду печати document.write |
Результат работы этого примера с командой печати:
Пример 4. Дана функция
Требуется ввести значения х и найти значения у
var x = prompt("Введите значение х:",
"1");
y = (x <= 0) ? x*x+x+1:x-Math.sqrt(x+1);
alert ("x="+x+" y=" + y);
Теперь попробуем изменить х от 0 до 3 с шагом 0,5 и определить значения у
var x0 = 0; // Начальное значение х
var xk = 3; // Конечное значение х
var dx = 0.5; // шаг изменения х
var x = x0; // Присвоение х
// начального значения
var y; // Объявление у
while (x =< xk)
{ y = x*x - Math.sqrt(x) +1.5;
alert(" x= " + x + " y= " + y);
x+=dx ;
}