Функции
Функциями в компьютерной науке называют вспомогательные программы, к которым в основной программе приходится обращаться.
Это особенно удобно, когда какие-то наборы операций или вычислений в основной программе требуется выполнять несколько или много раз, в этом случае
50 лет назад приходилось один и тот же кусок кода (текста программы) повторять несколько раз. Чтобы этого не делать, придуманы функции, внутри которых
имеется некоторый код и мы можем много раз вызывать эту функцию или обращаться к функции. Термин "функция", очевидно, заимствован из
математики, но надо иметь ввиду, что в программировании этот термин имеет не совсем тот же смысл.
Хороший стиль программирования предполагает использовать как можно больше функций: программа от этого становится более читаемой.
В предыдущей теме мы построили программу вычисления факториала произвольного целого положительного числа. В качестве примера эту программу
оформим в виде функции:
fakt = function(num){
ff = 1;
n=1;
while(n <= num){
ff = ff*n;
n = n + 1;
}
return(ff);
}
show(fakt(5));
Слово "function", с которого начинается конструкция, является, как говорят, ключевым словом, зарезервированным исключительно для создания функций. Не следует использовать это слово для каких-то других целей, нельзя, например, использовать это слово в качестве имени. Далее, вслед за ключевым словом "function" идут скобки, внутри этих скобок через запятую стоят один или несколько параметров, передаваемых функции. В нашем случае это один параметр num, а именно то число, факториал которого функции поручается вычислить. Эти параметры по аналогии с математическим понятием функции, называются аргументами. Далее в фигурных скобках идёт тело функции, т.е. последовательность операций, которые функция должна выполнить. В теле функции часто имеется команда return(), которая, как говорят. возвращает результат. Функции, как и любому другому объекту, присваивается имя, в нашем случае это fakt. Подставив в функцию любое целое положительное число n, мы получим результат
n! = fakt(n).
В теле функции можно использовать какие-то другие определённые в коде функции. Также в качестве аргумента можно использовать не только число, но и любые выражения. Попробуйте всевозможные варианты в редакторе.
Понятие функции в математике отличается от понятия функции в программировании. Это отличие состоит в следующем: в математике нас не интересует, что происходит "внутри" (т.е. в теле функции), а только возвращаемое значение. В программировании для нас существенно не только возвращаемое значение, которого, впрочем, может и вообще не быть, а также и действия внутри тела функции, например, внутри тела функции могут быть команды, которые рисуют, или что-то выводят на печать. Вот пример функции, которая вообще не имеет возвращаемого значения (т.е. в ней нет оператора return()), но внутри тела которой имеется команда вывода на печать:
print = function(arg){
show(arg);
}
После того, как эта функция определена, Вы можете выводить в консоль значения любого выражения при помощи команды print(...) вместо show(...). Обратите внимание на небольшое отличие в работе команд print(...) и show(...).
Перейдём к упражнениям.
Постройте функцию, которая для любого положительного числа x находит наибольшее целое число n, кратное 3, и при этом n < x*x*x. Начните так:
starttest;
fun = function(x){
и закончите так:
show(fun(9.7));
Внутри тела функции воспользуйтесь конструкцией while(){}, при помощи которой Вы находили наибольшее целое, кратное 3, меньшее заданного положительного числа, так что эта часть программы Вам уже знакома. Запустите программу, в результате в консоли должен появиться правильный ответ, т.е. наибоьшее целое число, кратное 3 и не превосходящее числа 9.73. Далее выполняйте указания, которые Вы увидите в консоли.
fakt = function(num){
ff = 1;
n=1;
while(n <= num){
ff = ff*n;
n = n + 1;
}
return(ff);
}
show(fakt(5));
Слово "function", с которого начинается конструкция, является, как говорят, ключевым словом, зарезервированным исключительно для создания функций. Не следует использовать это слово для каких-то других целей, нельзя, например, использовать это слово в качестве имени. Далее, вслед за ключевым словом "function" идут скобки, внутри этих скобок через запятую стоят один или несколько параметров, передаваемых функции. В нашем случае это один параметр num, а именно то число, факториал которого функции поручается вычислить. Эти параметры по аналогии с математическим понятием функции, называются аргументами. Далее в фигурных скобках идёт тело функции, т.е. последовательность операций, которые функция должна выполнить. В теле функции часто имеется команда return(), которая, как говорят. возвращает результат. Функции, как и любому другому объекту, присваивается имя, в нашем случае это fakt. Подставив в функцию любое целое положительное число n, мы получим результат
n! = fakt(n).
В теле функции можно использовать какие-то другие определённые в коде функции. Также в качестве аргумента можно использовать не только число, но и любые выражения. Попробуйте всевозможные варианты в редакторе.
Понятие функции в математике отличается от понятия функции в программировании. Это отличие состоит в следующем: в математике нас не интересует, что происходит "внутри" (т.е. в теле функции), а только возвращаемое значение. В программировании для нас существенно не только возвращаемое значение, которого, впрочем, может и вообще не быть, а также и действия внутри тела функции, например, внутри тела функции могут быть команды, которые рисуют, или что-то выводят на печать. Вот пример функции, которая вообще не имеет возвращаемого значения (т.е. в ней нет оператора return()), но внутри тела которой имеется команда вывода на печать:
print = function(arg){
show(arg);
}
После того, как эта функция определена, Вы можете выводить в консоль значения любого выражения при помощи команды print(...) вместо show(...). Обратите внимание на небольшое отличие в работе команд print(...) и show(...).
Перейдём к упражнениям.
Постройте функцию, которая для любого положительного числа x находит наибольшее целое число n, кратное 3, и при этом n < x*x*x. Начните так:
starttest;
fun = function(x){
и закончите так:
show(fun(9.7));
Внутри тела функции воспользуйтесь конструкцией while(){}, при помощи которой Вы находили наибольшее целое, кратное 3, меньшее заданного положительного числа, так что эта часть программы Вам уже знакома. Запустите программу, в результате в консоли должен появиться правильный ответ, т.е. наибоьшее целое число, кратное 3 и не превосходящее числа 9.73. Далее выполняйте указания, которые Вы увидите в консоли.