Подпрограммы с параметрами процедурного типа - Turbo Pascal
Формулировка задачи:
С погрешностью 0.001 вычислить по методу прямоугольников
Решение задачи: «Подпрограммы с параметрами процедурного типа»
textual
Листинг программы
type func = function(x: real): real; function sinx(x: real): real; begin sinx := sin(x) end; function cosx(x: real): real; begin cosx := cos(x) end; function integral(a, b: real; f: func): real; const eps = 0.0005; var n, i: integer; s, h: real; begin h := b - a; n := trunc(sqrt(h * h * h / 24 / eps)) + 1; h := h / n; a := a + h / 2; s := 0; for i := 0 to n - 1 do s := s + f(a + i * h); integral := s * h end; begin writeln(integral(0, 1, cosx) + integral(1, pi, sinx) :0:3); readln end.
Объяснение кода листинга программы
В этом коде реализованы три функции:
- sinx(x: real): real; Вычисляет синус числа x.
- cosx(x: real): real; Вычисляет косинус числа x.
- integral(a, b: real; f: func): real; Вычисляет приближенное значение определенного интеграла от функции f на отрезке [a, b]. В основной части кода вызываются функции integral() с разными аргументами и выводится результат. Вот список действий, которые выполняются в коде:
- Задаются константа eps и типы переменных n, i, s, h, a, b, f.
- Вычисляется количество отрезков, на которые будет разбита область под графиком функции f.
- Задаются начальные и конечные значения для переменной a.
- Переменная h устанавливается равной (b-a)/n.
- Переменная a сдвигается в начало отрезка.
- Переменная s устанавливается равной нулю.
- Цикл for выполняется n раз. При каждой итерации значение переменной a увеличивается на h, вызывается функция f с этим значением и результат прибавляется к переменной s.
- Переменная integral устанавливается равной произведению s на h.
- Вызывается функция integral() с аргументами (0, 1, cosx), (1, pi, sinx).
- Результат выводится на экран.
- Программа ожидает ввода с клавиатуры, чтобы пользователь мог увидеть результат.