Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл: Источник:
Скачиваний:
98
Добавлен:
04.03.2014
Размер:
593.92 Кб
Скачать

X, y : byte;

Procedure Proc1 (x : word; var y : byte); far;

begin

if x > 255 then y:= x mod 255 else y := byte (x)

end;

begin

ProcVar := Proc1;

for x := 150 to 180 do

begin

ProcVar (x + 100, y);

Write ( y : 8)

end

end.

Разумеется, такого рода присваивания допустимы и для параметров-функций, например:

Type

FuncType = Function ( i : integer) : integer;

Var

VarFunc : FuncType;

I : integer;

Function MyFunc ( count : integer) : integer; far;

begin

…….

end; {MyFunc}

begin {Основная программа}

……..

i : MyFunc ( i ); {Обычное использование результата функции}

……

VarFunc := MyFunc;{Присваивание переменной процедурного типа

имени функции MyFunc}

……

Отметим, что присваивание VarFunc:= MyFunc(1) будет недопустимым, так как слева и справа от знака присваивания используются несовместимые типы: слева – процедурный тип , а справа – Integer; имя функции со списком фактических параметров MyFunc(1) трактуется ТР как обращение к значению функции, в то время как имя функции без списка параметров рассматривается как имя функции.

Отличие от стандартного Паскаля, в ТР разрешается использовать в передаваемой процедуре (функции) как параметры-значения, так и параметры-переменные.

Основное предназначение процедурных типов – дать программисту гибкие средства передачи функций и процедур в качестве фактических параметров обращения к другим процедурам и функциям.

2.Задачи для самостоятельного решения

Задача 1.Разработать подпрограмму, которая возвращает массив значений произвольной функции при заданных интервале изменения аргумента [a,b] и количество точек n.

Задача 2.Разработать процедуру определения корня функции на заданном отрезке. Поместить процедуру в модуль. Разработать тестирующую программу.

Задача 3.Разработать подпрограмму, которая определяет корни уравнения y = x2 – 2 на заданном отрезке методом половинного деления.

Задача 4. Разработать программу с использованием подпрограммы-функции. Вычислить

Z = (Xm + Ym) / 2.

Xm ,Ym – наименьшие элементы массивов Х(25) и У(25).

Задача 5. Разработать программу с использованием подпрограммы-функции. Подсчитать число нулевых элементов для матриц А(m,n) и В(k,l).

Задача 6. Разработать программу с использованием подпрограммы-функции. Вычислить среднее арифметическое положительных элементов для массивов А(n), B(m), C(k).

Задача 7. Разработать программу с использованием подпрограммы-функции. Вычислить

Z = (V1 + V2 + V3) / 3.

V1,V2,V3объемы шаров с радиусами R1,R2,R3. Объемы вычислять в подпрограмме.

Задача 8. Выполнить на ПЭВМ программу с использованием подпрограммы-функции. Вычислить сумму положительных элементов для массивов X(N), Y(M), Z(К).

Задача 9. Cоставить подпрограмму-функцию TRAP для вычисления определенного интервала по формуле трапеций.

В основной программе использовать процедуру TRAP для вычисления интегралов:

2 + cos(x)) dx и ∫ (tg(x+1))/(x+1) dx

от –1 до 4 от 0 до 2

Задача 10.Составить подпрограмму-процедуру NEIBR отыскивания ближайшей из 10 точек, заданных массивом их декартовых координат, кривой F(x) при одной координате x.

В основной программе использовать процедуру NEIBR для функций cos(x) и sin(x).

Задача 11.Составить подпрограмму-процедуру MASSHTAB отыскивания масштаба графического изображения функции f(x) на экране размером В единиц растра по формуле M=B/max f(x).

В основной программе использовать процедуру для отыскания масштаба функций z2sin(x) и tg(x), при х<1.

Задача 12.Составить подпрограмму - процедуру RT для отыскания наименьшего положительного корня уравнения F(x)=0 c точностью =0.00001 методом итераций.

В основном программе использовать процедуру для решения уравнения x - tg(x) = 0 , используя обратную функцию x1 = arcing(x0) + k .

Задача 13. Составить подпрограмму-процедуру ВR для отыскания ближайшей из 10 точек, заданных массивом их декартовых координат, к кривой F(x) при одной и той же координате х.

В основном программе использовать процедуру ВR для функций cos(x) и sin(x).

Задача 14. Составить подпрограмму-процедуру MAXIM для отыскания максимального расстояния между двумя кривыми F(x) и G(x) при одной и той же абсциссе х на интервале от xmin до xmax.

В основном программе использовать процедуру MAXIM для функций sin(x)/x и tg(x+1)/(x+1) в интервале 0,5…1 с шагом 0,02.

Задача 15. Составить подпрограмму-процедуру ROOT отыскания минимального положительного корня уравнения f(x)=0 с точностью =0.0001 методом деления пополам отрезка, содержащего корень.

В основном программе использовать процедуру для решения уравнений x2 + sin(x/2)= 0 и arctg(x) + x = 1.

Задача 16. Cоставить подпрограмму-функцию INTG для вычисления определенного интервала по формуле прямоугольников.

В основной программе использовать процедуру INTG для вычисления интегралов:

(cos(х)/(x) dx и ∫ (ctg(x+1))/(x+1) dx

от –0,1 до 4 от 0 до 2

Задача 17. Cоставить подпрограмму-функцию INTGR для вычисления определенного интервала по формуле прямоугольников.

В основной программе использовать процедуру INTGR для вычисления интегралов:

ex/(x+1) dx и ∫ (sgrt(x-1)) dx

от –0 до 1 от 0 до 2

Задача 18. Cоставить подпрограмму-функцию INTEG для вычисления определенного интервала по формуле трапеций.

В основной программе использовать процедуру INTEG для вычисления интегралов:

sin(х)/(x) dx и ∫ (tg(x+1))/(x+1) dx

от –0,1 до 1 от 0 до 2

Задача 19. Cоставить подпрограмму-функцию INT для вычисления определенного интервала по формуле прямоугольников.

В основной программе использовать процедуру INT для вычисления интегралов:

sin(х)/(x) dx и ∫ (tg(x+1))/(x+1) dx

от –0,1 до 1 от 0.1 до 2

Задача 20. Cоставить подпрограмму-функцию INTGR для вычисления определенного интервала по формуле прямоугольников.

В основной программе использовать процедуру INTGR для вычисления интегралов:

ex /(x+1) dx и ∫ sgrt(x-1) dx

от –0 до 1 от 0 до 2

Задача 21. Cоставить подпрограмму-функцию TRAP для вычисления определенного интервала по формуле трапеций.

В основной программе использовать процедуру TRAP для вычисления интегралов:

2 + cos(x)) dx и ∫ (tg(x+1))/(x+1) dx

от –1 до 4 от 0 до 2

Задача 22. Разработать подпрограмму, которая определяет корни уравнения y = x2 – 2 на заданном отрезке методом половинного деления.

Задача 23. Cоставить подпрограмму-функцию Integr для вычисления определенного интервала по формуле прямоугольников.

В основной программе использовать процедуру INTGR для вычисления интегралов:

ex /(x+1) dx и ∫ sgrt(x-1) dx

от –0 до 1 от 0 до 2

Задача 24. Составить подпрограмму-процедуру Сoren отыскания всех корней уравнения f(x)=0 с точностью =0.0001 методом Ньютана-Рафсона.

В основном программе использовать процедуру для решения уравнения x3 – 1,473x2 - 5,738х + 6,763 = 0.

Задача 25. Составить подпрограмму-процедуру Сrn отыскания всех корней уравнения f(x)=0 с точностью =0.1; 0.01; 0,001; 0,0001 методом деления отрезка пополам.

В основном программе использовать процедуру для решения уравнения ch(x) + cos(x) – 3 = 0.