Процедуры и функции. Функции
Основная цель нашего курса – научиться программированию в процедурах и функциях. Формально, в языке C# нет понятий "процедура" и "функция". В языке используется общее понятие – "метод класса". Фактически, метод может быть реализован либо как функция, либо как процедура. Этот урок мы посвятим функциям.
Проект для лекции Lesson4.zip
Функции в математике
Функции в математике являются одним из основных понятий. Рассмотрим, как в математике определяется функция от одного аргумента: y = F(x).
Будем полагать, что заданы два множества – X и Y. Множество X будем называть областью определения, а множество Y – областью значений функции F. Для каждого элемента x из области определения функция F задает элемент y из области значений. Другими словами, функция F задает отображение элементов множества X на элементы множества Y. Важно понимать, что функция задает однозначное отображение – каждому элементу x из области определения X соответствует в области значений Y ровно один элемент.
Заметим, что для функций разрешается отображать разные элементы множества X на один и тот же элемент y из множества Y.
Множества X и Y могут совпадать. В этом случае функция строит отображение множества на себя - X отображается в X.
Отображение F задает взаимно однозначную функцию, если разные элементы из множества X отображаются в разные элементы множества Y, то есть справедлива импликация:
x1 ≠ x2 => F(x1) ≠ F(x2)
В этом случае у функции F существует обратная функция: x = F-1(y).
Рассмотрим некоторые примеры. Пусть X и Y – множества целых чисел. Функция y = x +1 каждое целое число отображает в следующее целое, на единицу больше числа x. Это взаимно однозначная функция. Обратная к ней функция x = y – 1 отображает число y в предыдущее число, на единицу меньше, чем число y.
Отображение y = x2 также является функцией, но на множестве целых чисел эта функция не является взаимно однозначной, поскольку два значения, например, 5 и -5 отображаются в одно и то же значение 25. Но если в качестве множеств X и Y рассматривать множества целых неотрицательных чисел, то существует обратная функция , где рассматривается так называемый арифметический корень, принимающий только положительные значения, так что корень из 25 равен числу 5.
Более общим понятием, играющим важную роль как в математике, так и в программировании является понятие "отношение". Бинарное отношение R, также, как и функция от одного аргумента, задается на двух множествах X и Y. Отношение R задает, какие пары элементов, взятые из двух множеств, принадлежат отношению, что обычно записывается в виде >. Отношение, в отличие от функции, не требует единственности элемента y для заданного x. Классическим примером отношения на множестве целых чисел является отношение "больше": x >> y. Пары <5, 3>, <5, 0>, <5, -10> принадлежат этому отношению. Для отношения "больше" существует обратное отношение "меньше".
Заметьте, каждая функция задает отношение, но не каждое отношение определяет функцию.
Определение функции обобщается на случай функции от n аргументов. В этом случае областью определения является декартово произведение n множеств: X1 * X2 * ... * Xn.
Функция F(x1, x2, ..., xn) каждой совокупности из n значений, каждой n-ке значений <x1, x2, ...? xn> ставит в соответствие единственный элемент y из множества значений Y.
Более подробные сведения об отношениях и функциях с примерами и упражнениями приведены в курсе "Введение в логику", опубликованном на сайте intuit.ru.