- •Программирование с использованием подпрограмм
- •Структура программы с использованием подпрограмм
- •Классификация параметров подпрограмм
- •Программирование с использованием процедур
- •Задания для самостоятельной работы
- •Программирование с использованием функций
- •Задания для самостоятельной работы
- •Процедурные типы
- •Задания для самостоятельной работы
- •Примеры решения задач с использованием процедурных типов
Примеры решения задач с использованием процедурных типов
Пример 1. Разработать функцию проверки принадлежности точки плоскости с координатами (x,y) данной кривой y=f(x). Для задания кривой использовать процедурный тип. Использовать функцию для проверки принадлежности 5 различных точек кривым y=cos(x) и y=sin(x2).
Program TOCHKI;
{$APPTYPE CONSOLE}
Uses SysUtils;
Const nmax=5;
Type Func=Function (x:real):real;
//
Function Y1(x:real):real;
begin
Y1:=cos(x);
end;
//
Function Y2(x:real):real;
begin
Y2:=sin(x*x);
end;
//
Function Proverka(x,y:real;f:Func):boolean;
begin
if abs(y-f(x))<0.001 then Result:=true
else Result:=false;
end;
//
var // объявление глобальных параметров
i:integer;
x,y:real;
Begin
Writeln(’X’:5,’Y’:10,’Y=COS(X)’:20,’Y=SIN(X*X)’:20);
For i:=1 to nmax do
begin
writeln(’введите координаты точки:’);
readln(x,y);
write(x:10:2),y:10:2);
if Proverka(x,y,Y1)=true then write(’Принадлежит’:20)
else write(’Не принадлежит’:20);
if Proverka(x,y,Y2)=true then write(’Принадлежит’:20)
else write(’Не принадлежит’:20);
writeln;
end;
End.
Пример 2. Разработать процедуру для вычисления определенного интеграла функции f(x) по формуле прямоугольников с заданной точностью eps. Для задания функции использовать процедурный тип. Использовать процедуру для вычисления определенного интеграла одной из трех функций: y1=sin(x)/x, y2=exp(x)/(x+1), y3=x3+5x2-6.
Program INTEGRAL;
{$APPTYPE CONSOLE}
Uses SysUtils;
Type Func=Function (x:real):real;
//
Function Y1(x:real):real;
begin
Y1:=sin(x)/x;
end;
//
Function Y2(x:real):real;
begin
Y2:= exp(x)/(x+1);
end;
//
Function Y3(x:real):real;
begin
Y3:= x3+5x2-6;
end;
//
Procedure Integ(a,b,eps:real; n:integer; f:Func; Var s:real);
// Вычисление определенного интеграла. Значения a и b – границы отрезка
// n -начальное количество отрезков разбиения
Var h:real;
s1:real;
i:integer;
begin
s:=(b-a)*f(x);
repeat
s1:=s;
h:=(b-a)/n;
s:=0;
x:=a;
for i:=1 to n do
begin
s:=s+f(x);
x:=x+h;
end;
s:=s*h;
n:=n*2;
until abs(s-s1)<eps;
end;
//
var // объявление глобальных параметров
num,n:integer;
a,b,eps,opr_int:real;
y:Func;
Begin
writeln(’Введите номер функции для интегрирования:’);
writeln(’1 - y1=sin(x)/x’);
writeln(’2 - y2=exp(x)/(x+1)’);
writeln(’3 - y3=x3+5x2-6’);
readln(num);
case num of
1:y:=Y1;
2:y:=Y2;
3:y:=Y3
else writeln(’Недопустимый номер функции’);
exit;
end;
writeln(’Введите границы интервала интегрирования’);
readln(a,b);
writeln(’Введите начальное количество отрезков разбиения’);
readln(n);
writeln(’Введите точность’);
readln(eps);
Integ(a,b,eps,n,y,opr_int);
writeln(’Определенный интеграл = ’,opr_int:10:5);
readln;
end.
Задания для самостоятельной работы
Разработать 3 функции уточнения корней уравнения с заданной точностью eps:
методом половинного деления;
методом хорд;
методом простых итераций;
Для задания уравнения использовать процедурный тип. Использовать функции для уточнения корней трех уравнений.
Разработать процедуру для вычисления определенного интеграла функции f(x) по формуле трапеций с заданной точностью eps. Для задания функции использовать процедурный тип. Использовать процедуру для нахождения площади фигуры, ограниченной функциями y1=exp(x) и y2=x3+5x2-6.
