Программирование циклов с конца

В сл. примере подсчитать сумму элементов массива set можно таким образом (нумерация элементе массива начинается с нуля; set.length – свойство массива – его длина):

var sum = 0;

for(var i=0; i < set.length; i++)

sum += set[i];

А можно и так:

var sum = 0;

for(var i = set.length; -- i >= 0; )

sum += set[i];

Второй способ предпочтительнее.Сравнение с нулем обычно более эффективно, чем сравнение с другим чис-лом.Иными словами «-- i >= 0» работает быстрее, чем «i <set.length». Общее правило: в цикле со счетчиком значение счетчика должно по возможности уменьшаться до нуля.

В сл. примере найдено 10!= 1*2*. . .*10 var proizvedenie = 1; for(var i=10; i; --i) proizvedenie *= i; alert("10!=1 * 2 *...* 10 = "+proizvedenie); Результат этой программы:   Программирование циклов с конца - student2.ru

Заметим, что следующий вариант:

var sum = 0;

for(var i = set.length; (i--) >= 0; )

sum += set[i];

является ошибочным,в нем уменьшение i на единицу происходит после проверки условия, а не до, как в правильном варианте.

Описание переменной цикла

В JavaScript можно написать так:

for(var i = 100; i; i--) ...

– или так:

var i;

for(i = 100; i; i--) ...

Для браузера эти записи эквивалентны. Вспомним, что в конструкции цикла:

for(начало; условие; приращение)

команда;

команда начало выполняется один раз перед первым оборотом цикла. Поэтому ясно, что переменная i не определяется 100 раз описателем var.

Рекомендации такие:

–счетчик цикла i можно описывать там же, где описываются другие переменные в начале функции или скрипта;

–счетчик обязательно нужно описывать в общем месте, если он используется в нескольких циклах;

–если в функции цикл единственный, то можно записывать for (var i = …,…; …) — это красиво, и подчеркивает вспомогательный характер переменной i, недостойной более «солидных» описаний.

Если какая-то переменная digit, используется как рабочая внутри цикла и не имеет смысла вне его, то разумнее объявить ее локальной внутри этого цикла, чем объявлять ее в начале функции с комментарием «рабочая переменная цикла такого-то».

Однако, в команде while для JavaScript сл. запись:

while (...)

{ var digit = ...

... }

эквивалентна такой:

var digit;

...

while (...)

{... Digit = ...}

Встроенные функции JavaScript

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

Объект Math является встроенным объектом JavaScript.
Вы ссылаетесь на константу PI как Math.PI.

Константы определены в JavaScript с точностью до 15-знака после запятой.

Аналогично, вы ссылаетесь на функции Math как на методы. Например, функция синуса - Math.sin(argument), где argument является аргументом функции.

Константы

Основание натурального логарифма - Е. Пример: Alert(Math.E)   Программирование циклов с конца - student2.ru
2. Натуральный логарифм числа 10 – LN10. Пример: Alert(Math.LN10)   Программирование циклов с конца - student2.ru
3. Натуральный логарифм числа 2 – LN2. Пример: Alert(Math.LN2)   Программирование циклов с конца - student2.ru

Стандартные функции

1.Aбсолютное значение аргумента – abs(arg) Пример: var x = -25; var y y = Math.abs(x); alert(y);   2.Тригонометрические функции: sin(arg), cos(arg), tan(arg) Пример: var x = Math.PI/4; var y y = Math.sin(x); alert(y);   3.Обратные тригонометрические функции: asin(arg), acos(arg), atan(arg) var x = 0.5; var y y = Math.asin(x); alert(y);   4. Экспонента и натуральный логарифм: exp(arg), log(arg) var x = 1; var y y = Math.exp(x); alert(y);   5. Ближайшее целое число, большее или равное аргументу: ceil(arg) var x = -2.69; var y y = Math.ceil(x); alert(y);   6. Ближайшее целое число, меньшее или равное аргументу: floor(arg) var x = -2.69; var y y = Math.floor(x); alert(y); Программирование циклов с конца - student2.ru Программирование циклов с конца - student2.ru Программирование циклов с конца - student2.ru Программирование циклов с конца - student2.ru Программирование циклов с конца - student2.ru Программирование циклов с конца - student2.ru

Функции пользователя

В программировании часто бывает нужно повторять несколько раз одну и ту же группу команд. Если повторение происходит «на месте» — используют цикл (while, for). Если код нужно повторять в разных местах программы — его оформляют в виде функции пользователя.

Описание и вызов функции. В самом деле, если уж нужно вычислить длину (количество цифр) целого положительного числа, то логичнее проделать это один раз, а затем спокойно писать, как в математике F(num), не задумываясь над «анатомией» функции f и не повторяя ее кода заново. Пусть, например, пользователь последовательно вводит три числа, а программа вычисляет общее количество цифр.

Пример:

// Количество цифр в целом положительном числе num.

// Вход: num (целое положительное число).

// Выход: количество цифр в num.
function F(num)

{

var len = num ? 0 : 1;

while(num)

{

num = (num - num % 10) / 10;

len ++;

}

return len;

}

var sum = 0;

var num1, num2, num3;

num1 = prompt("Введите первое число", "");

sum += F(numl) ;

num2 = prompt("Введите второе число", "");

sum += F(num2) ;

num3 = prompt("Введите третье число", "");

sum += F(num3) ;

alert("Общее число введенных цифр: " + sum);

Браузер выполняет этот скрипт так. Запись:

function F(num)

{

...

}

принимается во внимание, но команды в ней не выполняются. Браузер делает пометку: «было описание функции с именем F». Так происходит потому, что ключевое слово function и следующий за ним блок {...} являются не командой, а декларацией (описанием).

Команды, следующие за описанием функции, выполняются как обычно. При этом каждый раз, когда в коде попадается обращение к F, браузер воз­вращается к описанию функции и выполняет ее команды, подставляя вме­сто формального аргумента num фактические переменные num1, num2, num3.

Наши рекомендации