Пример оформления подпрограммы-процедуры
Задача: поиск корней квадратного уравнения вида x2+ax+b=0.
Program NNN;
{ Обязательное пояснение (прагматика) процедуры:
Подпрограмма Q2 решает квадратное уравнение x2+ax+b=0 ,
Параметры:
Входные данные: a, b – коэффициенты уравнения,
Выходные (результат): x1, x2 – найденные корни уравнения,
i - признак выполнения процедуры:
i=0 – нет действительных корней
i=2 - найдены действительные корни}
Procedure Q2(a, b: real; Var x1, x2: real; Var i: integer);
< Семантика оператора:
Запомни: Q2 – имя процедуры, которая использует параметры:
a, b – передают в процедуру только «значения»,
x1, x2 , i – являются общими переменными для процедуры
и головной программы ! >
Var d: real;
{ d -рабочая переменная процедуры для вычисления дискриминанта уравнения }
Begin
d:=a*a-4*b;
If d<0 then i:=0 { если дискриминант отрицателен, то вырабатываем
признак отсутствия действительных корней уравнения }
else begin x1:=(-a-sqrt(d))/2; x2:=(-a+sqrt(d))/2; i:=2 end;
End; {оператор завершающий описание нововведенной подпрограммы-процедуры}
{Описание (отведение места в памяти) переменных головной программы:
koef2 – второй коэффициент квадратного уравнения,
k1, k2 – искомые корни,
Res – признак разрешимости уравнения }
Var koef2, k1, k2: real; Res: integer;
{исполнимые операторы головной программы}
BEGIN
Koef2:=random-0.5; {значение второго коэффициента решаемого уравнения
задаем случайным образом из диапазона (-0.5, +0.5) }
Writeln(‘Решается уравнение x*x-2.34x+’,Koef2:2:4,’=0’);
q2(-2.34, koef2, k1, k2, Res); {вызов процедуры решающей уравнение x*x-2.34x+b=0}
<Семантика: выполнить операцию с именем q2 !
Передать в нее фактические (реальные) параметры: -2.34, koef2, k1, k2, Res ! >
if Res=0 then Writeln(‘Нет действительных корней !’)
else Writeln(k1,k2);
END.
Подпрограммы класса FUNCTION
Подпрограммы типа function это - прямые аналоги математического понятия «функция многих переменных».
Синтаксис и структура операторов описывающих новообразуемую операцию:
Function ИмяF( P1; P2; …; Pn): ТипF;
< <Блок описания вспомогательных переменных подпрограммы > >
Begin
< <Блок исполнимых операторов подпрограммы> >
End;
где:
Function– ключевое слово оператора,
ИмяF – название (идентификатор) новообразуемой операции типа - функция,
( P1; P2; …; Pn)– формальные переменные-параметры подпрограммы.
ТипF – тип переменной с именем ИмяF, в которой возвращается один из результатов выполнения подпрограммы-функции.
Особенность данной конструкции подпрограмм в том, что одно и тоже имя ИмяF используется для наименования двух разных, но взаимосвязанных, информационных объектов: как название подпрограммы, и как название переменной (ячейки памяти), которая заполняется содержимым (информаций) в этой подпрограмме.
Эта особенность конструкции позволяет вызывать подпрограмму типа - функция (активизировать выполнение функции) в любых операторах, которые используют переменные типа- ТипF. К подпрограммам рассматриваемого типа относятся стандартные функции языка Pascal: Sin(x), Cos(x), Ln(x), Random(n), Ord(c).
Дата добавления: 2021-12-14; просмотров: 305;