Листинг основной программы.

Var n, k: Integer;

a1, a2, a3, c: Longint;

Function factorial (n:Integer): Longint;

Var i: Integer;

rez: Longint;

Begin

rez:=1;

For i:=1 To n Do rez:=rez*i;

factorial:=rez;

End;

Begin

Writeln('Ввод n и k:');

Readln(n,k) ;

a1:= factorial(n); {вычисление n!}

a2:= factorial(k); {вычисление k!}

a3:= factorial(n-k);{вычисление(n-k)!}

c:= a1 div (a2*a3) ; {результат}

Writeln(c);

Readln;

End.

 

Пусть n=5, k=3. Когда в программе встречается оператор a1:= factorial(n), выполняются следующие действия:

- выделяется память для переменных, описанных в функции factorial;

- формальному параметру присваивается значение фактического: n:=n (n=5);

- выполняется функция, вычисляется факториал числа 5;

- значение функции передается в место обращения к этой функции, то есть присваивается переменной а1.

В операторах a2:= factorial(k) и a3:= factorial(n-k) еще дважды вызывается функция factorial с пара­метрами k=3 и n-k=2. Всего в программе имеется 3 обращения к функции factorial, столько же раз выполняются и описанные выше действия.

Еще раз подчеркнем, что функция − это самостоя­тельная часть программы, имеющая собственные пере­менные, которым отводится отдельное место в памяти ЭВМ. Этим объясняется тот факт, что переменные с одинаковыми именами, используемые в функции и в ос­новной программе, являются разными (в рассмотрен­ном примере - переменная n основной программы и параметр n функции). При выполнении программы машина "не путает" имена этих переменных, так как области их действия не совпадают.

Это особенно важно при написании больших про­грамм.

Пример 2

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

Решение

Надо выделять последнюю цифру числа до тех пор, пока число не станет равным нулю. При этом каждый раз счетчик увеличивается на 1 (начальное значение счет­чика − 0).

Function Quantity(x: Longint): Byte;

Var k: Byte;

Begin

k:=0;

While x <> 0 Do

Begin

Inc(k) ;

x:=x div 10;

End;

Quantity:= k;

End;

В заголовке функции указано ее имя − Quantity. Функции передается только один параметр − целое число, количество цифр которого надо найти. Результат − тоже целое число. В разделе переменных описана перемен­ная k − счетчик цифр. В теле функции с помощью цикла While выполняются указанные выше действия (увели­чивается значение счетчика и удаляется последняя цифра).

Еще раз заметим, что память для переменной k, которая является локальной, выделяется только тогда, когда начинает свою работу функция. После заверше­ния работы функции эта часть памяти освобождается и значение k будет не определено.








Дата добавления: 2017-11-04; просмотров: 325;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.005 сек.