Процедуры Dec и Inc в Pascal.

При работе с целыми числами используются процедуры DEC и INC. Процедура Dec уменьшает число на определенное значение, а процедура Inc увеличивает число на определенное значение.

Функции Sqr, Abs, Sqrt, Sin, Cos, Arctan, Ln, Exp, Pi в Pascal.

Мы уже знаем, какие существуют функции для целых переменных. Это – нахождение модуля числа (Функция Abc), а также возведение числа в квадрат (Функция Sqr). В этом уроке мы рассмотрим функции, применяемые к дробным числам. Это функции Sqr - квадрат ...

Textcolor, Window, Textbackground в Pascal.

Текст, который мы выводим на экран с помощью процедуры Writeln или с помощью оператора Write можно изменять. Процедура Textcolor используется для изменения цвета выводимого текста. Процедура Textbackground изменяет цвет фона, на котором выводится ...

Циклы и массивы

Разветвляющийся вычислительный процесс.

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

Структурное программирование

Самое главное в программировании - это научиться писать четкие, логические и структурированные программы.

• Используйте осмысленные имена для переменных, процедур и функций.

• Используйте отступы ...

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

Использование массива в качестве параметра.

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

podprogrammih....

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

podprogrammih.....

Для описания этого примера понадобилось целых три структурограммы, однако они просты, наглядны, компактны и легки для понимания. Для составления текста программы сделаем предположение, что объемы выборок не превосходят целого числа 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):

podprogrammih......


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. Найти сумму

podprogrammih.......

где 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.
Следующая статья: Рекурсивные вычислительные процессы.


Комментарии  

 
0 # Rhea 28.02.2026 14:59
First off I want to say fantastic blog! I had a quick question in which I'd like to
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
 
 
0 # Mallory 13.05.2026 07:42
Very good write-up. I definitely love this
website. Continue the good work!

Here is my site internetcasinog ame.net: https://internetcasinogame.net/
 
 
0 # Christa 13.05.2026 07:43
Excellent goods from you, man. I've understand your stuff previous to and you're just extremely great.
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
 
 
0 # Antonio 13.05.2026 07:58
I am curious to find out what blog platform you're utilizing?

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/
 
 
0 # Alycia 13.05.2026 10:52
Hello! I know this is kind of off topic but I was wondering
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/
 
 
0 # Marisol 13.05.2026 10:56
Hello, I enjoy reading through your article.

I wanted to write a little comment to support you.

my web blog ultimatepokerne ws.com: https://ultimatepokernews.com/
 
 
0 # Meghan 13.05.2026 17:04
I am in fact thankful to the owner of this site who has shared
this wonderful paragraph at at this place.

my webpage; pokerhandrankin gs.net: https://pokerhandrankings.net/
 
 
0 # Shasta 13.05.2026 17:34
What's up, I check your blogs like every week. Your story-telling style is awesome,
keep it up!

Here is my website casinoculars.co m: https://casinoculars.com/
 
 
0 # Ingrid 13.05.2026 18:18
Nice respond in return of this question with firm arguments and explaining everything regarding that.


Also visit my webpage :: jackpotsprogres sive.com: https://jackpotsprogressive.com/
 
 
0 # Kandy 13.05.2026 22:30
Just desire to say your article is as astounding. The clearness in your post is simply great and i could assume
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/
 
 
0 # Andrew 14.05.2026 00:00
If some one wants expert view about blogging after that i propose him/her to pay a quick visit this blog, Keep up the good job.


My webpage ... playbestonlinep okergames.com: https://playbestonlinepokergames.com/
 
 
0 # Consuelo 19.05.2026 10:04
Keep on writing, great job!

Here is my web blog :: onlinebingopick s.com: https://onlinebingopicks.com/
 
 
0 # Dennis 19.05.2026 15:23
Hey There. I found your weblog the use of msn. This is an extremely neatly
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/
 
 
0 # Kindra 24.05.2026 22:27
Wow! At last I got a weblog from where I be capable of really
get valuable facts regarding my study and knowledge.


Here is my web blog: more helpful
hints: https://sodentdental.com/service/x-ray-imagery/
 
 
0 # Clay 28.05.2026 11:16
Thanks for sharing your thoughts about подпрограммы в
паскаль. Regards

Also visit my webpage :: ussportsbook.or g: https://ussportsbook.org/
 
 
0 # Olive 28.05.2026 11:29
Hey very cool blog!! Guy .. Beautiful .. Amazing ..

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/
 
 
0 # Wade 29.05.2026 04:14
Pretty! This has been an extremely wonderful article.
Thank you for providing this information.

Here is my web site; a-sportsbook.co m: https://a-sportsbook.com/
 
 
0 # Hermine 29.05.2026 05:23
Saved as a favorite, I love your site!

Also visit my web site :: onlinebingospel en.net: https://onlinebingospelen.net/
 
 
0 # Antwan 29.05.2026 07:22
Hi, Neat post. There is an issue together with your web site in web explorer,
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/
 
 
0 # Carin 18.07.2026 07:07
This is a very good tip particularly to those fresh to the blogosphere.

Short but very accurate information… Thanks for sharing this one.
A must read post!

Also visit my website :: apuestasdeporti vas365.com: https://apuestasdeportivas365.com
 
 
0 # Lacy 18.07.2026 08:20
fantastic publish, very informative. I wonder why the other
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
 
 
0 # Elizabet 18.07.2026 09:48
wonderful put up, very informative. I wonder why the other experts of this sector do not realize this.

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
 
 
0 # Jose 18.07.2026 10:05
Having read this I believed it was rather enlightening. I
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
 
 
0 # Rosaria 18.07.2026 12:22
Amazing! Its genuinely remarkable piece of writing, I have got much
clear idea on the topic of from this paragraph.


Feel free to visit my website :: apuestasbrasill .com: https://apuestasbrasill.com
 
 
0 # Andy 29.07.2026 10:19
My brother recommended I might like this website.
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
 
 
0 # Leatha 29.07.2026 16:08
Hey there, I think your blog might be having browser compatibility issues.
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
 
 
0 # Thelma 30.07.2026 00:08
I like the valuable info you provide for your articles. I'll bookmark your weblog
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
 
 
0 # Juliann 30.07.2026 00:43
This design is spectacular! You most certainly know how to
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
 
 
0 # Christoper 30.07.2026 00:45
Thanks for the auspicious writeup. It in reality was once a entertainment account it.
Look complicated to far brought agreeable from you!

However, how could we communicate?

My web page: sportwettenandm ore.com: https://sportwettenandmore.com
 
 
0 # Floyd 30.07.2026 04:25
I like the valuable information you provide in your articles.
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
 
 
0 # Denice 30.07.2026 07:25
If some one needs expert view concerning blogging afterward i propose him/her
to pay a visit this blog, Keep up the good work.

Feel free to surf to my website - pokerrooms4us.c om: https://pokerrooms4us.com
 
 
0 # Pamela 30.07.2026 07:28
I am sure this paragraph has touched all the internet visitors, its really really fastidious
paragraph on building up new website.

Feel free to surf to my website: fotbollsbloggen sto.com: https://fotbollsbloggensto.com
 
 
0 # Precious 30.07.2026 09:28
I know this web site gives quality based content and additional information, is
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
 
 
0 # Michaelswi 01.08.2026 02:26
Рекомендации строятся вокруг состояния человека, а не по универсальному шаблону для всех случаев.
Получить больше информации - kapelnica-ot-za poya-cena-moskv a
 
   ГлавнаяПаскальЛекции по Pascal. Часть 2.Структурное программирование