Конспект установочных лекций по комплексному курсу Информатика, Теория информации



Элементы чисто аппликативных языков программирования - часть 2


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

           1,                  если n=0,

n! =

           n*((n-1)!),    если n>0.

В языке программирования (ЯП) Паскаль это записывается аналогичным образом (с fac(n)=n!):

function fac (n: integer): integer;

begin if n = 0   then fac := 1

else fac := n * fac(n - 1)

еnd;

В ЯП Модула-2 это соглашение о функции читается следующим образом:

PROCEDURE fac (n: CARDINAL): CARDINAL;

BEGIN IF n=0 THEN RETURN 1

ELSE RETURN n * fac(n - 1)

END

END fac

Из этого примера видно, как может быть введена функция, связанная с символом функции fac. При этом предполагается ряд заданных "примитивных" символов функции и операций. В примере факториала таковыми являются сравнение = (точнее, сравнение на нуль = 0), умножение * и вычитание -. Особое место занимает разветвление (различие случаев) if-then-else-fi. Оно рассматривается не как (нестрогая) функция, а как элемент аппликативного языка.

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

Так, в вышеприведенном примере терм вида

mult (1, ... , mult (n – 1, n) ...)

представляет примитивный терм, а терм вида

fac (n)

представляет (непримитивное) выражение.




Содержание  Назад  Вперед