Пример оформления подпрограммы-процедуры


Задача: поиск корней квадратного уравнения вида 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; просмотров: 249;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.008 сек.