Формальным параметром функции может быть не только переменная скалярного типа, но и идентификатор переменной структурированного типа данных.
Использование массива в качестве параметра.
Пример 3. Массивы X(k), Y(m), Z(n) представляют собой три выборки значений случайной величины из общей генеральной совокупности. Требуется для каждой из трех выборок X, Y и Z вычислить их эмпирическую среднюю М и несмещенную дисперсию D.
Для решения этой задачи нужно запрограммировать две групповые пользовательские функции Avg и VarD, которые описываются с помощью формул:

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

Для описания этого примера понадобилось целых три структурограммы, однако они просты, наглядны, компактны и легки для понимания. Для составления текста программы сделаем предположение, что объемы выборок не превосходят целого числа G: G= Sup{K,M,N}.
Для передачи имени объекта в качестве параметра этот объект нужно в явном виде описать в разделе TYPE. Мы хотим в качестве параметра передавать имя одномерного массива, поэтому дадим этому типу идентификатор VEK.
PROGRAM PR3;
CONST G = 50;
TYPE VEK = ARRAY [ 1 .. G] OF REAL;
VAR X, Y, Z: VEK; I, К, M, N: INTEGER;
FUNCTION AVG(P: INTEGER; W: VEK): REAL;
VAR J: INTEGER; S: REAL;
BEGIN
S:=0;
FOR J := 1 TO P DO S := S + W[J];
AVG := S/P
END;
FUNCTION VARD(P: INTEGER; W: VEK): REAL;
VAR J: INTEGER; M, S: REAL;
BEGIN
M:= AVG(P, W); S := 0;
FOR J := 1 TO P DO S := S + SQR(W[J] - M);
VARD:=S/(P- 1)
END;
BEGIN
WRITELN('Укажите размерность К массива X '); READLN(K);
WRITELN('Введите массив X, из ', К:2,' вещественных чисел');
FOR I := 1 ТО К DO READ(X[I]);
WRITELN('Укажите размерность M массива Y '); READLN(M);
WRITELN('Введите массив Y, из ',M:2,' вещественных чисел');
FOR I := 1 ТО M DO READ(Y[I]);
WRITELN('Укажите размерность N массива Z '); READLN(N);
WRITELN('Введите массив Z, из ', N:2,' вещественных чисел');
FOR I := 1 ТО N DO READ(Z[I]);
WRITELN('M(X) = ', AVG(K, X) :10:6,', D(X) = ', VARD(K, X) :10:6);
WRITELN('M(Y) = ', AVG(M, Y) :10:6,', D(Y) = ', VARD(M, Y) :10:6);
WRITELN('M(Z) = ', AVG(N, Z) :10:6,', D(Z) = ', VARD(N, Z) :10:6)
END.
Использование функций в качестве параметра.
Идентификатор функции или процедуры может использоваться в качестве параметра другой функции. Если такая необходимость появилась, то требуется соответствующим образом специфицировать каждый такой формальный параметр.
Спецификацией в этом случае являются: заголовок передаваемой функции, включающей имя функции, список формальных параметров и тип результата. Спецификация функции описывается в разделе TYPE следующим образом: TYPE <имя спецификации> = FUNCTION(<список параметров>): <тип результата>;
Пример 4. В интервале [А, В] методом поразрядного приближения найти максимум функции
F(X) = 0.1Х3 – 2Х2 + 10Х.
Формульно-словесный алгоритм метода состоит в следующем.
1. Задается начальное приближение Х0= А слева от максимума F(X) и вычисляется F(X0). Задается D = h, где h = ?Х - начальный шаг поиска.
2. Полагаем G = F(Xn), где вначале F(Xn) = F(X0), задаем X = X + D и вычисляем F(Xn+1)=F(X).
3. Проверяем условие F(Xn+1) > G; если оно выполняется, то идем к п. 2, если нет – к п. 4.
4. Полагаем D = –D/4. Проверяем условие | D | >Е/4, где Е — заданная погрешность вычисления Хn в точке максимума. Если она выполняется, идем к п. 2, то есть обеспечиваем поиск максимума в другом направлении с шагом в четыре раза меньше прежнего. Если данное условие выполняется, заканчиваем счет, принимая за максимум X.
В этом известном алгоритме не учитывается тот факт, что в заданном интервале [А, В] нет экстремума (максимума). В этом случае максимум будет на границе интервала либо в точке А, либо в точке В. Учитывая простоту функции F(X) и основной программы, приведем структурограмму только функции PRP(A, В, Е, F), которая осуществляет поиск максимума функции F в интервале [А, В] с погрешностью приближения Е.
Структурограмма функции PRP(A, В, Е, F):

PROGRAM PR4;
TYPE FUN = FUNCTION(X: REAL):REAL; {Спецификация функции}
VAR X, А, В, E: REAL; N: INTEGER;
{$F+} {Директива. Компиляция функций с дальним типом обращения }
FUNCTION F(Z: REAL): REAL; {Исследуемая на экстремум функция}
BEGIN
F:=((0.1*Z-2)*Z+10)*Z
END;
FUNCTION PRP(A, В, E: REAL; W: FUN): REAL;
CONST N = 10; {Число участков, на которые разбивается [А, В]}
VAR I: INTEGER; D, G, X: REAL;
BEGIN
D := (В - A)/N; X := A; {D - шаг поиска}
WHILE ABS(D) > Е DO BEGIN REPEAT
G := W(X); PRP:=X; X := X + D;
IF ((X > B) OR (X < A)) AND (W(X) > G) {Максимум на границе интервала}
THEN EXIT; {Досрочное завершение функции}
PRP:=X;
UNTIL W(X) < G;
D := -D/4
END
END;
{$F-}
BEGIN
WRITELN('Укажите границы диапазона А, В'); READLN(A,B);
WRITELN('Задайте погрешность расчетов E'); READLN(E);
X := PRP(A, В, E, F); {Вычисление Xmax}
WRITELN('Xmax = ', X:11:9,’F(Xmax) =', F(X):13:9);
END.
Задав значения [А, В] = [2,3], E = 10-9, получим X = 3,0; F(X) = 14.7. Очевидно, что экстремума в этом интервале нет, так как Хmax на границе интервала в точке В. Изменив исходные данные: [А, В] = [2, 5], Е = 10-9, получим Хmax = 3,333332149; F(Хmax)= 14.814814815.
В теле функции использован оператор EXIT, который обеспечивает нормальный выход из фун-ции в том случае, когда нет экстремума и максимальное значение — на границе интервала.
Замечание. Как правило, компилятор Паскаля автоматически подбирает метод адресации подпрограмм. Если подпрограмма находится в одном тексте с телом основной программы, то она компилируется с «ближним» (near) адресом входа и возврата, содержащим только величину смещения адреса внутри текущего сегмента памяти. Если подпрограмма находится в другом программном модуле, то генерируется «дальний» (far) адрес, содержащий адрес сегмента и смещения в сегменте. При передаче имени функции в качестве программы необходим «дальний» адрес, но компилятор этого не понимает. Поэтому необходимо использовать директиву компилятора {$F+}. Действие этой директивы распространяется на все подпрограммы, описанные ниже по тексту программы, или до директивы {$F-}.
Пример 5. Найти сумму
![]()
где Ui = F(i). Функция F(i) может быть различной: F1(i) = 1/i; F2(i) = i/(i + 1); F3(i) = Cos (?/i).
При решении этой задачи следует помнить, что передача в качестве параметров предопределенных (стандартных) функций, к которым относится и Cos(X), запрещена. Это ограничение обходится путем переопределения стандартной функции в пользовательскую функцию. Надежный сервис почтовых рассылок выполнит рассылку на электронные почтовые адреса быстро и недорого.
PROGRAM PR5;
TYPE FUN = FUNCTION(A: INTEGER): REAL;
VAR S1: REAL; M, N, K: INTEGER;
{$F+}
FUNCTION F1(I: INTEGER): REAL;
BEGIN Fl := 1/I
END;
FUNCTION F2(I: INTEGER): REAL;
BEGIN F2:= I/(I+1)
END;
FUNCTION F3(I: INTEGER): REAL; { Переопределение функции COS }
BEGIN F3 := COS(PI/I)
END;
FUNCTION SUM(F : FUN): REAL;
VAR I: INTEGER;
S: REAL;
BEGIN
S:=0;
FOR I:=M TO N DO S := S + F(I); SUM:=S END;
{$F-}
BEGIN
WRITELN('Задайте M, N и номер функции (1, 2, 3)');
READ(M, N, К);
CASE К OF
1:S1:= SUM(Fl);
2: Sl:= SUM(F2);
3:S1:=SUM(F3)
END;
WRITELN('S = ',S1:8:5)
END.
Параметры M и N передаются в функцию SUM в качестве глобальных переменных. Фактическим параметром для этой функции является идентификатор одной из трех функций Fl, F2, F3.
Предыдущая статья: Подпрограммы, определенные пользователем.
Оглавление: Лекции по Pascal. Часть 2.
Следующая статья: Рекурсивные вычислительные процессы.
Комментарии
ask if you do not mind. I was interested to find out how
you center yourself and clear your mind prior to writing.
I have had a difficult time clearing my mind in getting my thoughts out.
I truly do take pleasure in writing but it just seems like the first
10 to 15 minutes are generally wasted simply just trying to figure out how to begin. Any suggestions or
hints? Cheers!
Also visit my homepage bokep papaya live: https://www.performancemechanicalonline.com
website. Continue the good work!
Here is my site internetcasinog ame.net: https://internetcasinogame.net/
I actually like what you've acquired here, really like what you are stating and the way in which
you say it. You make it enjoyable and you still care for
to keep it smart. I cant wait to read much more
from you. This is really a wonderful website.
Here is my blog post; القرفة
للتنحيف: https://tichmarifa.blogspot.com/2025/08/blog-post.html
I'm experiencing some minor security issues with
my latest blog and I would like to find something more safeguarded.
Do you have any solutions?
Feel free to visit my blog - poker-welt.com: https://poker-welt.com/
which blog platform are you using for this site?
I'm getting sick and tired of Wordpress because I've had issues with hackers and I'm looking at alternatives for another platform.
I would be awesome if you could point me in the direction of a
good platform.
Also visit my homepage: videopokergames review.com: https://videopokergamesreview.com/
I wanted to write a little comment to support you.
my web blog ultimatepokerne ws.com: https://ultimatepokernews.com/
this wonderful paragraph at at this place.
my webpage; pokerhandrankin gs.net: https://pokerhandrankings.net/
keep it up!
Here is my website casinoculars.co m: https://casinoculars.com/
Also visit my webpage :: jackpotsprogres sive.com: https://jackpotsprogressive.com/
you're an expert on this subject. Fine with your permission allow me to
grab your RSS feed to keep updated with forthcoming post.
Thanks a million and please carry on the gratifying work.
Here is my site: licasinonight.c om: https://licasinonight.com/
My webpage ... playbestonlinep okergames.com: https://playbestonlinepokergames.com/
Here is my web blog :: onlinebingopick s.com: https://onlinebingopicks.com/
written article. I will make sure to bookmark
it and return to read extra of your useful info.
Thanks for the post. I will definitely comeback.
My webpage; luckyangelcasin o.net: https://luckyangelcasino.net/
get valuable facts regarding my study and knowledge.
Here is my web blog: more helpful
hints: https://sodentdental.com/service/x-ray-imagery/
паскаль. Regards
Also visit my webpage :: ussportsbook.or g: https://ussportsbook.org/
I will bookmark your site and take the feeds also? I'm satisfied
to seek out so many useful info right here in the publish, we want work out extra strategies on this regard,
thank you for sharing. . . . . .
Also visit my website: onlinepokersmar t.com: https://onlinepokersmart.com/
Thank you for providing this information.
Here is my web site; a-sportsbook.co m: https://a-sportsbook.com/
Also visit my web site :: onlinebingospel en.net: https://onlinebingospelen.net/
might test this? IE nonetheless is the marketplace chief and a large part of folks will leave out your
fantastic writing because of this problem.
my web-site: pika-casinot.co m: https://pika-casinot.com/
Short but very accurate information… Thanks for sharing this one.
A must read post!
Also visit my website :: apuestasdeporti vas365.com: https://apuestasdeportivas365.com
experts of this sector do not understand this. You should
continue your writing. I am sure, you've a huge readers' base already!
Have a look at my homepage; ukbets.org: https://ukbets.org
You must proceed your writing. I am confident, you have a huge readers' base already!
Feel free to visit my homepage apuestasmovil.o rg: https://apuestasmovil.org
appreciate you taking the time and effort to put this informative article together.
I once again find myself personally spending a lot of time both reading and commenting.
But so what, it was still worthwhile!
Feel free to surf to my webpage; free-casino-onl ine.com: https://free-casino-online.com
clear idea on the topic of from this paragraph.
Feel free to visit my website :: apuestasbrasill .com: https://apuestasbrasill.com
He was totally right. This post truly made my
day. You cann't imagine just how much time I had spent for this
info! Thanks!
my blog post - joueraupokerenl igne.org: https://joueraupokerenligne.org
When I look at your blog in Opera, it looks
fine but when opening in Internet Explorer, it has some overlapping.
I just wanted to give you a quick heads up!
Other then that, terrific blog!
Here is my homepage ... ranking-casino. com: https://ranking-casino.com
and test again right here frequently. I am somewhat certain I will learn a lot of new stuff proper right
here! Best of luck for the next!
My homepage huippuluokannet tikasinot.com: https://huippuluokannettikasinot.com
keep a reader amused. Between your wit and your videos, I was almost moved to start my
own blog (well, almost...HaHa!) Great job. I really enjoyed what
you had to say, and more than that, how you presented it.
Too cool!
my website: onlinebingoladi es.com: https://onlinebingoladies.com
Look complicated to far brought agreeable from you!
However, how could we communicate?
My web page: sportwettenandm ore.com: https://sportwettenandmore.com
I'll bookmark your blog and check once more here regularly.
I am somewhat certain I'll learn a lot of new stuff right here!
Best of luck for the following!
Here is my webpage :: robinhoodbingob log.com: https://robinhoodbingoblog.com
to pay a visit this blog, Keep up the good work.
Feel free to surf to my website - pokerrooms4us.c om: https://pokerrooms4us.com
paragraph on building up new website.
Feel free to surf to my website: fotbollsbloggen sto.com: https://fotbollsbloggensto.com
there any other web site which provides these kinds of things in quality?
my web site - jeux-casino-enl igne.com: https://jeux-casino-enligne.com
Получить больше информации - kapelnica-ot-za poya-cena-moskv a