Для чего нужно использование функций в программировании. Основные принципы программирования: функциональное программирование. Результат работы функции

| | |
Фу́нкция в программировании - фрагмент программного кода (подпрограмма), к которому можно обратиться из другого места программы. большинстве случаев с функцией связывается идентификатор, но многие языки допускают и безымянные функции. С именем функции неразрывно связан адрес первой инструкции (оператора), входящей в функцию, которой передаётся управление при обращении к функции. После выполнения функции управление возвращается обратно в адрес возврата - точку программы, где данная функция была вызвана.

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

Функция должна быть соответствующим образом объявлена и определена. Объявление функции, кроме имени, содержит список имён и типов передаваемых параметров (или: аргументов), а также, тип возвращаемого функцией значения. Определение функции содержит исполняемый код функции. одних языках программирования объявление функции непосредственно предваряет определение функции, в то время как в ряде других языков необходимо сначала объявить функцию, а уже потом привести её определение.

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

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

Функция определяет собственную (локальную) область видимости, куда входят входные параметры, а также те переменные, которые объявляются непосредственно в теле самой функции.

Существует возможность вызвать функцию внутри самой функции: такой вызов функции называется рекурсивным, а сам процесс последовательных вложенных друг в друга вызовов функций называют рекурсией. Поскольку необходимо запомнить (в стеке) адрес возврата функции (а, также, выделить в том же стеке память под параметры и локальные переменные, не являющиеся динамическими), то ничем неограниченная рекурсия приводит к переполнению стека, поэтому в языках программирования устанавливается некоторый предельный уровень вложенности рекурсивных вызовов.

  • 1 Примеры функций
    • 1.1 JavaScript
    • 1.2 ActionScript
    • 1.3 С++
    • 1.4 C#
    • 1.5 Pascal
    • 1.6 PHP
    • 1.7 Stadard ML
    • 1.8 Visual Basic
    • 1.9 PureBasic
  • 2 См. также
  • 3 Ссылки

Примеры функций

JavaScript

function name(text, element) { document.getElementById(element).innerHTML = text; }

ActionScript

public function name(text: string) { var textfield: TextField = new TextField(); textfield.text = text; }

С++

void name(std::string text) { std::cout << text; }

C#

public void name(string text) { System.Console.WriteLine(text); }

Pascal

procedure name(var text: string) begin write(text); end;

PHP

function name($text) { echo $text; }

Stadard ML

fun name t = print t

или, что то же самое (см. карринг):

Fun name = print

Visual Basic

Sub Name(text) Console.WriteLine(text) End Sub

PureBasic

Procedure.l Name(text.s) PrintN(text) EndProcedure

См. также

  • Анонимная функция
  • Функция (математика)

Ссылки

Функция (программирование) Информацию О

Так, что же такое "программная функция" ?

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

Информация, воспринимаемая программной функцией, для нас особенно значима. Поэтому она усваивается нами с легкостью, без всякого напряжения и практически без потерь. Мы всю жизнь насыщаемся информацией по этому аспекту и никогда пресытиться ею не можем, потому что, по большому счету, это единственное, чему мы верим целиком и полностью, единственное, в чем нас никто никогда не переспорит и не переубедит.

Информация, воспринимаемая по программному аспекту, редко открывает для нас нечто принципиально новое: все это мы давно знаем сами, да еще и получше многих. Мы чувствуем себя так, как будто родились с этими знаниями. Скорее, нам интереснее знать, насколько лучше других мы это знаем .И, разумеется, всегда досадно и смешно, когда нас этому поучают другие.

Программная функция - это:

- "функция осознанных преимуществ",

- "функция врожденного профессионализма",

- "функция основных ценностей, основных задач и целей".

И именно поэтому человеку крайне трудно отступать от своей "программы", не говоря уже о том, чтобы поступать ей наперекор (чего от нас нередко требуют условия психологической несовместимости).

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

Программная функция определяет предел допустимых уступок.

- Ну хорошо, - вставляет Читатель, - но если есть в нашей психике "функция целей и задач" , то должна же быть и какая-то функция их достижений?

Такая функция действительно есть, и с "программной" она тесно сотрудничает, а потому в "Модели "А" находится справа от нее, на 2-й позиции уровня ЭГО (т. е. занимает второй кабинет верхнего этажа). Эта функция называется "творческой" , или "созидательной функцией" .

Творческая функция и творческий аспект.

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

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

А теперь вспомним нашу первую классификацию - "сенсорик - этический ","интуит - логический "и т.д. Что мы видим?

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

Каким образом? - Она "поручает" программной функции "отслеживать" именно ту информацию, которая может быть реализована только в рамках аспекта творческой функции (поскольку творческая функция также имеет свой собственный аспект и именно посредством этого аспекта она обслуживает свою "программу").

- А можно это показать на каком-нибудь примере? - интересуется Читатель.

- Примеров множество! Допустим, в качестве программы типа у нас выступает такой аспект, как "интровертная этика" - ("этика отношений") ,цель которого - совершенствовать взаимоотношения людей в обществе, корректировать общественную мораль и насаждать нравственность. Но нравственность в обществе можно насаждать различными путями: в одном случае человека воспитывают методами силового воздействия - принуждением, запретами, ограничениями, наказаниями, т. е. средствами аспекта "волевой (экстравертной) сенсорики" .И этим методом скорее всего воспользуется сенсорный этик, точнее - этико-сенсорный интроверт (программа-то интровертная!) Но существует и другой способ реализации интровертно-этической программы - интуитивный . Здесь человеку дается возможность постепенно и последовательно совершенствоваться этически. В этом случае на него воздействуют методом демонстрации положительных примеров: "поступай так, как тебя учат, и все у тебя будет хорошо". В этом случае этическая программа уже реализуется аспектом "экстравертной интуиции" - "интуиции возможностей" .И именно такой метод охотнее всего использует интуитивный этик - этико-интуитивный интроверт .

- Ну и где же тут разница в этической программе, на которую будто бы оказывают влияние способы ее реализации? Почему этик сенсорный не может использовать те же методы, что и этик интуитивный, и наоборот?

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

- Но почему так происходит?

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

"Элементарная модель" типа ИМ.

Аспекты, вынесенные на уровень ЭГО ,выражают основные ценности типа .Именно поэтому они вынесены в его название.

Например, название типа "этико-сенсорный экстраверт" означает, что его "программная" ценность - экстравертная этика ("этика эмоций"), а "творческая" ценность - интровертная сенсорика ("сенсорика ощущений") .

На уровне ЭГО это выглядит так:

Внимательный Читатель, должно быть, заметил, что программный интровертный аспект реализуется экстравертными аспектами (и наоборот) .Это происходит потому, что у экстраверта качества объекта имеет первостепенную значимость, а взаимоотношения между объектами - второстепенную, поэтому и программная функция (как наиболее значимая) у него будет экстравертной - черный символ, а реализационная, соответственно, интровертной - белый символ.

У интроверта, соответственно, наоборот: программная функция будет интровертной (белый символ), а реализационная - экстравертной (черный).

И еще следует отметить: если программный аспект - рациональный (этика или логика), то он реализуется иррациональным аспектом .

- Почему?

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

Поэтому на каждом уровне модели один из аспектов будет экстравертный, другой - интровертный, один - рациональный, другой - иррациональный.

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

Таким образом, уже по названию "типа ИМ" можно определить структурное соотношение уровня ЭГО и создать элементарную, двухпозиционную модель, отображающую основные характеристики данной психической структуры.

Пользователи, далекие от программирования в принципе, сталкиваются с понятиями функции и процедуры редко, и ассоциируются они с чем-то математическим и бюрократическо-медицинским. В программировании же этими понятиями оперирует множество языков, правда, даже специалисты порой не могут четко осознать разницу между функцией и процедурой. Как с тем сусликом: он есть, но его никто не видит. Посмотрим, настолько ли невидимы отличия.

Что означают понятия функция и процедура

  • Функция в программировании — подпрограмма, вызываемая из других подпрограмм необходимое число раз.
  • Процедура — поименованная часть программы (подпрограмма), многократно вызываемая из последующих частей программы необходимое число раз.

Сравнение функции и процедуры

Основная разница между функцией и процедурой — в возвращаемом результате. По сути, и функции, и процедуры представляют собой логически неделимые блоки, из которых складывается код программы. Функция возвращает значение, процедура в большинстве языков программирования — нет, либо (в Си, например) возвращает пустое значение. В последнем случае (в Си) процедура считается подчиненной разновидностью функции.

Заголовок функции содержит слово “function”, идентификатор (собственное имя функции), вариативно список параметров и обязательно — тип результата. В теле функции обязательно прописывается оператор, присваивающий значение имени функции, которое она вернет в качестве результата. Заголовок процедуры содержит слово “procedure”, идентификатор (имя процедуры) и вариативно список параметров.

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

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

Отличие функции от процедуры в программировании заключается в следующем:

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

Пришло время, чтобы узнать о функциях. Вы уже имеете представление об использовании функции main , — это еще один пример функции. В общем, функции — это отдельные независимые блоки кода, которые выполняют ряд предопределенных команд. В языке программирования Си вы можете использовать как встроенные функции различных библиотек так и функции, которые вы создали сами, то есть свои собственные функции.

Функции, которые мы будем создавать сами, обычно требуют объявления прототипа. Прототип дает основную информацию о структуре функции: он сообщает компилятору, какое значение функция возвращает, как функция будет вызываться, а также то, какие аргументы функции могут быть переданы. Когда я говорю, что функция возвращает значение, я имею в виду, что функция в конце работы вернет некоторое значение, которое можно поместить в переменную. Например, переменная может быть инициализирована значением, которое вернет функция:

#include // подключение заголовка с функцией rand rand() int randomNumber = rand(); // стандартная функция генерации случайных чисел

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

Рассмотрим общий формат для прототипа функций:

ReturnedDataType functionName (dataType par1, ..., dataType parN);

где, returnedDataType — тип данных, возвращаемого функцией, значения;
functionName — имя функции
dataType — тип данных параметра функции, это тот же самый тип данных, что и при объявлении переменной
par1 ... parN — параметры функции.

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

Int mult (int x, int y);

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

Когда программист фактически определяет функцию, он начнет с прототипа, но точку с запятой уже ставить не надо. Сразу после прототипа идет блок с фигурными скобочками и с кодом, который функция будет выполнять. Например, как вы обычно пишите код внутри функции main . Любой из аргументов, переданных функции можно использовать, как если бы они были объявлены как обычные переменные. И, наконец, определение функции заканчивается закрывающейся фигурной скобкой, без точек с запятой.

Давайте рассмотрим пример объявления и использования функции в языке программирования Си:

#include int multiplication(int num1, int num2); //прототип функции int main() { int num1; int num2; printf("Введите два числа для умножения: "); scanf("%d", &num1); scanf("%d", &num2); printf("Результат умножения %d\n", multiplication(num1, num2)); // вызов функции getchar(); return 0; } int multiplication(int num1, int num2) // определение функции { return num1 * num2; }

Эта программа начинается с включения единственного заголовочного файла, в строке 1. Следующей строкой является прототип функции умножения. Обратите внимание, что в конце объявления прототипа есть точка с запятой! Функция main возвращает целое число, в строке 16. Чтобы соответствовать стандарту функция main всегда должна возвращать некоторое значение. У вас не должно возникнуть проблем с пониманием ввода и вывода значений в функциях, если вы внимательно изучили предыдущие уроки.

Обратите внимание на то как на самом деле функция multiplication() принимает значение. Что же происходит на самом деле? А на самом деле это работает так: функция multiplication принимает два целых значения, умножает их и возвращает произведение. Результат работы этой программы будет точно таким же, как если бы мы сделали так:

Printf("Результат умножения %d\n", num1 * num2);

Функция multiplication() на самом деле определяется ниже функции main . А так как прототип этой функции объявлен выше главной функции, то при вызове функции multiplication() внутри main() компилятор не выдаст ошибку. Пока прототип присутствует, функция может использоваться даже если нет её фактического определения. Тем не менее, вызов функции не может быть осуществлен ранее, чем будет определена эта функция.

Определение прототипов функций необходимы только если фактическое определение самой функции будет располагаться после main-функции. Если же функцию определить до главной функции, то прототип не нужен.

Ключевое слово return , используется для того, чтобы заставить функцию возвращать значение. Обратите внимание на то, что вполне успешно можно объявлять функции, которые не возвращают никаких значений. Если функция возвращает значение типа void , значит фактически функция не имеет возвращаемого значения. Другими словами, для функции, которая возвращает значение типа void , утверждение return; является законным, но обычно оно избыточно. (Хотя оно может быть использовано для экстренного выхода из функции.)

Наиболее важным является понимание, для чего же нам нужна функция? Функции имеют множество применений. Например, в программе есть блок кода, который необходимо выполнять в разных местах программы около сорока раз. То есть один раз объявили функцию и уже вызываете её там где это необходимо,при этом код не дублируется, что позволит сэкономить много места, что в свою очередь сделает программу более читаемой. Кроме того, наличие только одной копии кода делает его легче для внесения изменений.

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

P.S.: если вам нужен хороший сервер, то вы можете воспользоваться арендой серверов в Москве . Также вы можете воспользоваться другими услугами, предоставленными на сайте it-express.ru: развертывание отказоустойчивых серверов, системы хранения данных и др.

Отдельная система (подсистема , подпрограмма), на вход которой поступают управляющие воздействия в виде значений аргументов . На выходе функция возвращает результат, который может быть как скалярной величиной , так и векторным значением (структура , индексный массив и т.п.). По ходу выполнения функции могут выполняться, также, некоторые изменения в управляемой системе , причём как обратимые, так и необратимые.

Побочный эффект

Функции и процедуры

В некоторых языках программирования (например, в Паскале) функции и процедуры (подпрограммы, не возвращающие значения) чётко разграничены синтаксисом языка . В других - например, в языке Си , - процедуры являются частным случаем (подмножеством) функций, возвращающими значение типа (псевдотипа) void - пустое значение.

Аргументы и параметры

При вызове функции, ей передаются аргументы . Если аргумент является ссылкой на область памяти (переменной , указателем или ссылкой), то функция, в зависимости от типа своего параметра , может либо воспользоваться её значением (например, создать переменную, скопировать туда значение аргумента), либо самим аргументом (создать ссылку на область памяти, на которую ссылается аргумент).

Функция без аргументов

Такая функция не требует никаких аргументов .

См. также

Ссылки

  • Функции PHP. Синтаксис и примеры использования функций PHP

Wikimedia Foundation . 2010 .

Смотреть что такое "Функция (программирование)" в других словарях:

    В Викисловаре есть статья «функция» Функция многозначный термин, который означает такое отношение между элементами, в котором изменение в одном влечет измен … Википедия

    Функция заглушка в программировании функция не выполняющая никакого осмысленного действия, возвращающая пустой результат или входные данные в неизменном виде. Аналогичное английское слово stub . Используется: Для наглядности при… … Википедия

    функция психическая высшая: восстановление - (восстановление высших психических функций) раздел нейропсихологии, посвященный изучению механизмов и методов восстановления функций психических высших, нарушенных вследствие поражений локальных мозга головного. На базе представлений об… … Большая психологическая энциклопедия

    Математическое программирование математическая дисциплина, изучающая теорию и методы решения задач о нахождении экстремумов функций на множествах конечномерного векторного пространства, определяемых линейными и нелинейными ограничениями… … Википедия

    В области компьютеризации понятие программирования сетевых задач или иначе называемого сетевого программирования (англ. network programming), довольно сильно схожего с понятиями программирование сокетов и клиент серверное программирование,… … Википедия

    Функция высшего порядка функция, принимающая в качестве аргументов другие функции или возвращающая другую функцию в качестве результата. Основная идея состоит в том, что функции имеют тот же статус, что и другие объекты данных.… … Википедия

    ПРОГРАММИРОВАНИЕ МАТЕМАТИЧЕСКОЕ - комплекс математич. моделей и методов решения задач отыскания экстремума (максимума или минимума) функций многих переменных при ограничениях в виде неравенств. Имеется в виду, что переменные характеризуют какие либо аспекты механизма… … Российская социологическая энциклопедия

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

    Функция в программировании один из видов подпрограммы. Особенность, отличающая её от другого вида подпрограмм процедуры, состоит в том, что функция возвращает значение, а её вызов может использоваться в программе как выражение. С точки зрения… … Википедия

    ПРОГРАММИРОВАНИЕ, МАТЕМАТИЧЕСКОЕ - раздел прикладной математики, применяющийся в качестве метода в экономических исследованиях. Разрабатывает теорию и методы решения условных экстремальных задач, является основной частью формального аппарата анализа разнообразных задач управления … Большой экономический словарь

Понравилось? Лайкни нас на Facebook