Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СОД_Лабораторные работы.doc
Скачиваний:
7
Добавлен:
09.11.2019
Размер:
368.13 Кб
Скачать

2.2. Функции, определяемые программистом

Набор встроенных функций языка Паскаль достаточно широк (ABS, SQR, TRUNC и т.д.). Если в программу включается новая, нестандартная функция, то ее необходимо описать в тексте программы, после чего можно обращаться к ней из программы. Обращение к функции осуществляется в правой части оператора присваивания, с указанием имени функции и фактических параметров. Функция может иметь соб­ственные локальные константы, типы, переменные, процедуры и функции. Описание функций аналогично описанию процедур. Отличительные особенности функций:

- результат выполнения - одно значение, которое присваивается имени функции и передается в основную программу;

- имя функции может входить в выражение как операнд.

Пример 3. Написать подпрограмму-функцию степени а x ,где a, х – любые числа. Воспользуемся формулой а x =e x l n a

program p2;

var f, b, s, t, c, d : real; { глобальные параметры}

function stp (a, x : real) : real;

var y : real; { локальные параметры}

begin

y := exp (x * ln ( a)) ;

stp:= y;{присвоение имени функции результата вычислений подпр-мы}

end; { описание функции закончено }

begin {начало основной программы }

d:= stp (2.4, 5); {вычисление степеней разных чисел и переменных }

writein (d, stp (5,3.5));

read (f, b, s, t); c := stp (f, s)+stp (b, t);

writeln (c);

end.

2.3. Рекурсия

В языке Паскаль процедуры и функции могут вызывать сами себя, т.е. обладать свойством рекурсивности. Рекурсивная функция обязательно должна содержать в себе условие окончания рекурсивности, чтобы не вызвать зацикливания программы. При каждом рекурсивном вызове создается новое мно­жество локальных переменных. Т.о. переменные, расположенные вне вызываемой функции, не изменяются.

Пример 4. Составить рекурсивную функцию, вычисляющую факториал числа n следующим образом: n!= 1 , если n= 1 и n!= ( n -1 )! · n , если n > 1

function f ( n : integer): integer;

begin

if n = 1 then f :=l else f := n * f ( n -1 ) { функция f вызывает саму себя}

end;

3. Выполнение работы

3.1. Разобрать приведенные выше программы.

3.2. С использованием процедур выполнить свой вариант задания Л.р. Двумерные массивы.

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

, где .

Число отрезков деления принять равным n=10 и n=20, оба результата вывести на экран. Вычисление интеграла и f (x) оформить в виде функций. Найти погрешность вычисления интеграла.

Варианты заданий

1. f (x)=(sin2 x+cos x)/(2 x2 +8) ; a=0; b=1.

2. f (x)=(sh x + ch x)/(3 + x2) ; a=1; b=2.

3. f (x)=(sh2 x - e x )/(2+x); a=0; b=1.

4. f (x)=(e x -2)/(sin 2 x + 5) ; a=2; b=4.

5. f (x)=(3 sin x - cos x)/(ch 2 x +2) ; a=1; b=3.

6. f (x)=(ch x - sh 2 x)/(6+2 x2) ; a=0; b=1.

7. f (x)=(sin x + sh x)/ (x 2 +2 x +3) ; a=0; b=2.

8. f (x)=(x 3 + 4 x)/(sin 2 x +5) ; a=1; b=2.