русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Выбор имени


Дата добавления: 2015-07-09; просмотров: 769; Нарушение авторских прав


Имя функции следует тем же правилам, что и имя переменной. Основное отличие — оно должно быть глаголом, т.к. функция — это действие.

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

Функции, которые начинаются с "show" — что-то показывают:

showMessage(..) // префикс show, "показать" сообщение

Функции, начинающиеся с "get" — получают, и т.п.:

getAge(..) // get, "получает" возраст
calcD(..) // calc, "вычисляет" дискриминант

 

createForm(..) // create, "создает" форму
checkPermission(..) // check, "проверяет" разрешение, возвращает true/false

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

Одна функция — одно действие

Функция должна делать только то, что явно подразумевается её названием. И это должно быть одно действие.

Если оно сложное и подразумевает поддействия — может быть имеет смысл выделить их в отдельные функции? Зачастую это имеет смысл, чтобы лучше структурировать код.

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

Например, функция проверки данных (скажем, "validate") не должна показывать сообщение об ошибке. Её действие — проверить.

Сверхкороткие имена функций

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

Например, во фреймворке jQuery есть функция $, во фреймворке Prototype — функция $$, а в библиотеке Underscore очень активно используется функция с названием из одного символа подчеркивания _.



Итого

Объявление функции:

function имя(параметры, через, запятую) {
код функции

 

}
  • Передаваемые значения копируются в параметры функции и становятся локальными переменными.
  • Параметры функции являются её локальными переменными.
  • Можно объявить новые локальные переменые при помощи var.
  • Значение возвращается оператором return ....
  • Вызов return тут же прекращает функцию.
  • Если return; вызван без значения, или функция завершилась без return, то её результат равен undefined.

При обращении к необъявленной переменной функция будет искать внешнюю переменную с таким именем.

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

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

Именование функций:

  • Имя функции должно понятно и чётко отражать, что она делает. Увидев её вызов в коде, вы должны тут же понимать, что она делает.
  • Функция — это действие, поэтому для имён функций, как правило, используются глаголы.

Функции являются основными строительными блоками скриптов. Мы будем неоднократно возвращаться к ним и изучать все более и более глубоко.

Важность: 1

Задача «Hello World» для функций

Напишите функцию min(a,b), которая возвращает меньшее из чисел a,b.

Пример вызовов:

min(2, 5) == 2
min(3, -1) == -1

 

min(1, 1) == 1

Решение

[Открыть задачу в новом окне]

Важность: 4

Напишите функцию pow(x,n), которая возвращает x в степени n. Иначе говоря, умножает x на себя n раз и возвращает результат.

pow(3, 2) = 3*3 = 9
pow(3, 3) = 3*3*3 = 27

 

pow(1, 100) = 1*1*...*1 = 1

Создайте страницу, которая запрашивает x и n, а затем выводит результат pow(x,n).

Демо: tutorial/intro/pow.html

P.S. В этой задаче функция обязана поддерживать только натуральные значения n, т.е. целые от 1 и выше.

Решение

[Открыть задачу в новом окне]

‹ Конструкция switch Рекурсия, стек ›

23.07.2011

Илья Кантор


Артём

Вот в этом месте вы опечатались:
"Конечно, если бы в строке (1) была бы объявлена локальная переменная var userName = ..., то все обращения использовали бы её, и внешняя переменная осталась бы неизменной."
Должно быть "...в строке (4)...".

Артём

Всё правильно у вас) Я ошибся.

Alexnebesky

в пункте "Параметры копируются в локальные переменные функции."
забыли поменять from на title в принимаемых параметрах функции, в результате title undefined =)

Бойко Евгений

Не лишним будет в этой статье напомнить, что функция, как и массив, является объектом.
function func() {
// неважно что
}

func[0] = 'Прилипшая переменная';
func['a'] = function () {
alert('Выполняеется прилипшая функция');
return func[0];
}

alert(func['a']());

(Изменено автором 2 месяцев назад)

Arbeiter

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

Дальнейшие уроки уже подготовив читателя , раскрывают понятие ф-ции как объекта.

Николай Евстратов

Подскажите, как можно запретить ввод букв в окно prompt? Или что бы место NaN выводилось сообщение "Вводить можно только цифры"?

David

Жалко в коде решения нет комментариев...

Илья Кантор

Gogy1985

return !!(Math.floor(num) == num);

ПавелСурж

В последней задече не предусмотрен случай если a и b равны! Я не посмотрев решения сразу написал тоже самое но с выводом равно если они равны.

Alexy

Хочу добавить одно замечание для людей, которые фанатически влюбляются в функции. Не создавайте функции для тех участков кода, которые будут использоваться 1-2 раза. Делает код не читабельным. Как то раз пришлось разбирать код человека, который на каждое действие клепал функции. Это ужасно! Функции надо создавать, если кусок кода будет использоваться 3+ раз!
Аналогично с классами/объектами.
Не забывайте про процедурный метод написания программ! Довольно часто он читабельнее

Liubov

В последнем примере нужно добавить проверку на то, что n целое, а не только больше-равно 1:
if(!( n%1 == 0) || n <= 1){
alert('Степень ' + n + ' не поддерживается, введите целую степень, большую 1');
} else {
alert( pow(x,n) );
}

Guest

В одном из примеров в функции проверяется значение if (!checkAge(age))...
какую функцию выполняет воскл. знак перед вызовом функции checkAge?

Roman

! - логическое "не". !false == true, !true == false (подробнее читайте раздел "Логические операторы"). if ( !checkAge(age) ) - означает, что checkAge() должна возвратить false, чтобы даный if выполнился.

Гость

"Конечно, если бы в строке (1) была бы объявлена локальная переменная var userName = ..., то все обращения использовали бы её, и внешняя переменная осталась бы неизменной."

Лучше написать в строке 4 или как то переформулировать чтобы было понятно, что надо в комментарии надо искать ссылку (1).

Mel1

Да, лучше бы. Мне и в голову не пришло, что (1) искать в комментарии

All

у меня вопрос: внутри функции break для внешней метки не работает?

Tele-serg

http://learn.javascript.ru/pla...

Tele-serg

В линке что кинул више, если пользователь при вводе n нажмет отмена, то результат как-то не правильный. Что я сделал не так?

Hixer

Мои решения (прошу комментировать!):
http://learn.javascript.ru/pla...
http://learn.javascript.ru/pla...
http://learn.javascript.ru/pla...

cath_kb

Последнее задание
http://learn.javascript.ru/pla... Решение не отвечает требованию "
В этой задаче функция обязана поддерживать только натуральные значения n, т.е. целые от 1 и выше. "
Является ли верным данное решение:
http://learn.javascript.ru/pla...
?

avts

Как много комментаторов в начале учебника... и как мало их в конце. Да, не всякая птица долетит до середины... Хи-хи... Желаю успехов))

Irena

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

nik

объясните пж-та в чём разница м/у
result=result*x и x=x*x
Спасибо!

Влад

while(...) {
x=3;
result = x;

x=x*x; // 1-я итерация 3*3=9, 2-я 9*9=81 и т.д
result=result*x; // 1-я итерация 3*3=9, 2-я 9*3=27 и т. д.
}

Artem0431

function pow(x, n) {
var g='n может быть только натуральным числом!';
if (n<1) return g
else {
var b=1;
var i=0;
while(i<n) b="b*x;" i++;="" return="" {="" }=""></n) >

Sananik163

Ребята, а зачем вам Вики? Здесь все итак предельно понятно.

Евгений

Если всё ясно без Вики, то что выведет alert?

var a = 42;
function foo() {
alert(typeof a);
var a = 10;
}
foo();

o Мне нравится!

33kday


Шестипалый.. Короче ,я голову вчера целый день в Википедии ломал,но понял,что выражение в цикле x=x*x или result=result*x в цикле означает ,что оно циклически вызывает себя n раз

Reyuzaki2

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

Karodar

Вопрос непосредственно к знающим: вот тут
http://learn.javascript.ru/pla... можно пояснить некоторые моменты?
Зачем нужна переменная 'i'

for(var i = 1; i < n; i++) {
result *= x;
}

·

mhz

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

Dimitry Lapynow

Идея правильная. Но по условию i < n, цикл выполняется пока счетчик i меньше числа n. Таким образом количество итерация равно (число_степени - 1), это и есть то, сколько раз мы умножаем x на саму себя.

Reyuzaki2 Свернуть


Короче ,я голову вчера целый день в Википедии ломал,но понял,что выражение в цикле x=x*x или result=result*x в цикле означает ,что оно циклически вызывает себя n раз



<== предыдущая лекция | следующая лекция ==>
Для возврата значения используется директиваreturn. | Реализация pow(x, n) через рекурсию


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.051 сек.