Процедурна змінна як параметрПроцедурний тип обов'язково використовується при описуванні процедури чи функції як формального параметру іншої процедури чи функції.
Приклад: вивести таблицю трьох арифметичних функцій
Program; type func=function(x1,x2:integer):integer; {$F+} { 1 } function f(x,y:integer):integer; begin f:=(x+y)+(x-y); end; { 2 } function add(x,y:integer):integer; begin add:=x+y; end; { 3 } function multiply(x,y:integer):integer; begin multiply:=x+y; end;
procedure printtable(w,h:integer; operation:func); var x,y:integer; begin for y:=1 to h do begin for x:=1 to w do write(operation(x,y):5); writeln; end; writeln; end; { головна програма, виведення трьох таблиць 10 x 10 } begin printtable(10,10,add); printtable(10,10,multiply); printtable(10,10,f) end.
Приклад: Обчислити інтеграл будьякої довільної функції на наданому інтервалі
а) Описування відповідного процедурного типу type realfunc=function(t:real):real; в) Описування функцій, для яких буде обчислено інтеграл {$F+} function name(tt:real):real; begin { дії, що виконуються } name:=sin(tt)*exp(tt); end; { стандартну функцію можна використати за допомогою переозначення } function sin2(x:real):real; begin sin2:=sin(x); end; {$F - } в) процедура, що обчислює інтеграл procedure integral(lowerlimit,upperlimit:real; var result:real;funct:realfunc); var t:real; begin { реалізація чисельного інтегрування lowerlimit<t<upperlimit, для отримання значення функції викликається funct, результат повертається у змінній result } end; г) виклик у головній програмі begin : integral(0,0.5,rez,sin2); : end. Завдання:
1. Написати функцію, що обчислює інтеграл а) методом прямокутників б) методом трапецій для довільної функції на інтервалі [a,b], наданої як параметр. 2. Написати рекурсивну функцію, що знаходить корень довільного рівняння f(x)=0 a) методом ділення інтервалу навпіл, маючи початковий інтервал [a,b] б) методом ітерацій, маючи початкове наближення Хо, f(x)передається як параметр 3. Описати рекурсивну процедуру перевелення десяткового числа z у вісімкову систему числення за допомогою ділення його на 8 та друку залишків у зворотньому порядку. 4. Використовуючи рекурсію, обчислити n-й член ряду Фібоначчі.
|