Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УМКД-Паскаль-2012.docx
Скачиваний:
38
Добавлен:
01.05.2015
Размер:
561.45 Кб
Скачать

Лабораторная работа 11 функции

Цель работы:

1. Получить практические навыки написания подпрограмм в виде функций.

2. Научиться использовать рекурсию.

Краткие сведения из теории

Функция отличается от процедуры тем, что результат ее работы возвращается в виде значения этой функции и, следовательно, вызов функции может использоваться наряду с другими операндами в выражениях.

Рекурсия - такой способ организации вычислительного процесса, при котором подпрограмма в ходе выполнения составляющих ее операторов обращается сама к себе.

ПРИМЕР 1: Даны действительные числа a,b,c. Вычислить

П р о г р а м м а

program vur;

var z,a,b,c: real;

function max (x.y:real):real;

begin

if x > y

then max:=x

else max:=y

end;

{головная программа}

begin

writeln (' ввести a,b,c');

readln (a,b,c);

Z:=(max(a,b+c) + max(a+b,c*c))/(1+ max(a+b*c,12));

writeln ('Z=',Z)

end.

ПРИМЕР 2: Найти N число последовательности Фибоначчи. Использовать рекурсивную функцию. Числа Фибоначчи образуют последовательность, у которой каждый очередной член равен сумме двух предыдущих: 0 1 1 2 3 5 8 13 . . . Обозначив N-й член ряда Фибоначчи посредством символа F(N), можно записать следующую рекурсивную зависимость:

F(N)=F(N-1)+F(N-2), n >= 3,

F(1)=1 и F(2)=1

П р о г р а м м а

program FIBON;

var N: integer;

fuction F(k: integer): integer;

begin

if (k=1) or (k=2)

then F:=1

else F:=F(k-1)+F(k-2)

end;

{головная программа}

begin

writeln ('N=');

readln (N);

writeln ('число =', F(N))

end.

Порядок работы

1. Составить алгоритм и программу с использованием подпрограммы-функции (табл.17).

2. Составить алгоритм и программу, включающую рекусивную функцию (табл.18).

Содержание отчета

Отчет по лабораторной работе должен содержать условия двух задач, алгоритмы, программы, исходные данные для контрольного примера, результаты.

ТАБЛИЦА 17

НОМЕР

ВАРИАНТА

УСЛОВИЕ

1

Вычислить число сочетаний из n по m(n>m) по формуле:

2

Вычислить:

3

Вычислить:

4

Найти все трехзначные числа, равные сумме факториалов своих цифр.

5

Два треугольника заданы координатами своих вершин. Вычислить площади треугольников с помощью формулы Герона и определить, какой треугольник имеет большую площадь.

6

Решить уравнение ax+b=0, где

Значения k,l,m вводятся.

7

Даны действительные числа s,t. Вычислить:

,

где

8

Вычислить число сочетаний с повторениями по формуле:

9

Найти наибольший общий делитель целых положительных чисел a,b,c.

10

Даны действительные числа х,у. Вычислить:

,

где

11

Решить уравнение

,

где

Значения r,m,n вводятся.

12

Используя функцию нахождения наибольшего общего делителя, найти наименьшее общее кратное двух чисел.

13

Вычислить:

14

Вычислить:

ТАБЛИЦА 18

НОМЕР

ВАРИАНТА

УСЛОВИЕ

1

Найти НОД двух неотрицательных целых чисел m и n с использованием первого алгоритма Евклида:

2

Найти НОД двух неотрицательных целых чисел m и n c использованием второго алгоритма Евклида:

3

Вычислить функцию Аккермана A(n,m) для неотрицательных целых чисел m и n по формуле:

4

Вычислить числа Каталана K(n) для натурального n по формуле:

K(1)=K(2)=1

K(n)=K(n-1)*(4*n-6)/n, при n 3

5

Вычислить n-ый член арифметической прогрессии. Заданы первый член а 1 и разность d.

6

Вычислить n-ый член геометрической прогрессии. Заданы первый член а1 и знаменатель геометрической прогрессии q.

7

Вычислить сумму n членов арифметической прогрессии. Заданы первый член а1 и разность d. Для вычисления члена арифметической прогрессии использовать формулу варианта 5.

8

Вычислить сумму n членов геометрической прогрессии. Заданы первый член а1 и знаменатель геометрической прогрессии q. Для вычисления члена геометрической прогрессии использовать формулу варианта 6.

9

Вычислить:

Для вычисления факториала воспользоваться формулой

10

Найти максимум из двух величин НОД(a,b) и НОД(c,d). Для вычисления наибольшего общего делителя воспользоваться формулой варианта 1.

11

Вычислить a! + b!. Для вычисления факториала воспользоваться формулой варианта 9.

12

Вычислить F(k)-F(m), где F(k) - k-ый член последовательности Фибоначчи, F(m) - m-ый член последовательности фибоначчи.

F(1)=F(2)=1

F(n)=F(n-1)+F(n-2) для n >= 3

13

Вычислить:

Для вычисления наибольшего общего делителя воспользоваться формулой варианта 2.

14

Вычислить величину pow(x,n) для вещественного х0 и целого n по формуле: