Лечение от алкоголизма: лечение от алкогольной зависимости. Избавься от Алкоголизма.
Параметр процедуры

Параметр процедуры fsigma вызывается по наименованию. Поэтому при вычислении указателя функции в преобразованном теле процедуры fsigma возникнет обращение к ней самой (в операторе s := s + fsigma (/, У, я, a U, /] X * [il X я [/])). Такие обращения называются рекурсивными. Как видно уже из этого простого примера, рекурсивные обращения позволяют сравнительно компактно описывать довольно сложные вычисления.
Естественно, что процедура gauss, результатом которой является не одно числовое значение, а целый массив, не может быть описана в виде процедуры-функции. А в условиях, для которых была составлена процедура norm, гораздо естественнее заменить описание переменной г описанием функции:
real procedure г; г :== sqrt (х \ 2 -f- у f 2 + z j 2)
Идентификатор г за пределами этого описания становится указателем функции. Значение указателя функции г совпадает со значением выражения
sqrt (x\2 + y\2 + z\2)
Заметим, кстати, что последнее выражение также представляет собой указатель функции (стандартной) с идентификатором sqrt. Стандартные функции (см. § 2) можно использовать в программах, не давая для них никаких описаний процедур.
Упражнения. 1. Составить процедуру-функцию, которая по данной матрице а размером п X п и числам хну вычисляет сумму
i= 1 /=t
2. Описать функцию, вычисляющую число перемен знака в последовательности п целых чисел къ kn (нули, встречающиеся в этой последовательности, во внимание не принимаются).
3. Составить логическую процедуру-функцию, которая проверяет, что никакие две из п данных окружностей не пересекаются.
4. Дан массив integer array а [1 \ 2 f п~\~п — 1], заполненный нулями и единицами. Описать функцию, вырабатывающую значение true, если группы из п последовательных элементов массива а:
a[i], a[i + l],       a[i + n — l],   i = l,       2я,
составляют все возможные комбинации нулей и единиц, и false в противном случае.
5. Прямоугольник размером т X п, разделенный на квадраты со стороной 1, покрывается прямоугольниками размером 1 X 2 так, что каждый малый прямоугольник покрывает в точности два квадрата и каждый квадрат покрыт одним прямоугольником. Составить программу, определяющую число всех таких покрытий.