Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Параметры - процедуры и параметры - функции




 

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

Параметр процедурного типа - это параметр-значение.

Таким параметрам в заголовке подпрограммы должен приписываться процедурный тип.

Задание процедурного типа - это просто заголовок процедуры (функции), из которого изъято имя процедуры (функции).

 

Например: Type func = function (x: real): real;

proc = procedure (x: real; Var y: real);

В этом примере тип func описывает функцию одной вещественной переменной, имеющую вещественный результат; тип proc определяет процедуру с двумя вещественными параметрами, первый параметр - значение, второй - переменная.

При обращении к подпрограммам, имеющим параметры процедурного типа, на место таких параметров подставляются имена подпрограмм, соответствующих описанным типам. Эти подпрограммы не должны быть стандартными и должны компилироваться с использованием дальней модели памяти. Т.е. перед текстом подпрограмм должна стоять директива компилятору {$F+}, а в конце директива - {$F-}.

 

Рассмотрим пример программы, в состав которой входит процедура приближенного решения нелинейного уравнения методом половинного деления. Решить приближенно уравнение - значит найти на оси х отрезок

заданной длины, на котором находится корень. Метод состоит в том, что исходный отрезок (известно, что на нем есть корень) делится пополам и выбирается для дальнейшего рассмотрения половина, содержащая корень. Процесс деления продолжается до тех пор пока длина отрезка не станет меньше требуемой точности.

Program uravn;

type ur = function(x:real):real;

var a,b,x_cor:real;

rez:boolean;

{ процедура решения уравнения }

procedure cor(g:ur;lgr,rgr,eps:real;var x:real; var pr:boolean);

{ входные параметры: g - имя функции, задающей вид уравнения;

lgr, rgr - границы отрезка;

eps -точность;

выходные параметры: х -середина отрезка, содержащего корень;

pr -признак, принимающий значение true,

если корень найден и - значение false,

если корня на отрезке нет }

Begin

{ проверка, есть ли корень на заданном отрезке }

if g(lgr) * g(rgr) > 0 then pr:=false

Else

Begin

pr:=true;

Repeat

x:=(lgr + rgr)/2;

{ выбор половины отрезка, при помощи изменения

значения левой илиправой границы }

if g(lgr) * g(x) > 0 then lgr:=x

else rgr:=x;

until abs(lgr - rgr) <= eps;

x:=(lgr + rgr)/2;

End

end;{ конец процедуры }

{$F+}

{ функция, задающая уравнение }

function f(x:real):real;

Begin

f:=sin(x) - 0.5

end;{ конец функции }

{$F-}

Begin

a:=0;

b:=pi/2;

{ вызов процедуры решения уравнения }






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных