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




Скачать 35.14 Kb.
Дата04.08.2016
Размер35.14 Kb.
Функции.

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

Второе отличие – в заголовке. Он состоит из слова FUNCTION.

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



Function <имя>[(<список формальных параметров>)]:<тип результата>;

<описательная часть>;

Begin

<тело функции>;

<имя>:=<значение>;

End;
Пример. Составить программу, подсчитывающую число сочетаний без повторения из N элементов по K элементов.

Число сочетаний без повторений считается по формуле:

Обозначим: n, k – введенные числа, С – переменная для хранения результата.

Опишем функцию, вычисляющую факториал числа n (n!=1*2*…*n).



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, начинающего эту часть.

Вся программа:


Program Example_8;

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(‘Input 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(‘The result is ’,c);

Readln;

End.

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



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

  • Присвоятся формальным параметрам значения фактических параметров: n:=n (n=5);

  • Выполнится функция, т.е. будет найден факториал числа 5;

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

Распределение памяти между переменными, используемыми в функции и основной программе.

Program Example_8;

n

5
Function factorial


k

3

a1

-
n

5


a2

-
i

-


A3

-
rez

120


c

-

a
Begin

End;
1:=factorial(n);

a2:=factorial(k);

a3:=factorial(n-k);

c:=a1 div (a2*a3);
Описание функции – это самостоятельная часть программы, имеющая собственные переменные, которым отводится отдельное, независящее от основной программы место памяти в ЭВМ. Этим объясняется тот факт, что переменные, именуемые одним именем и используемые как в описании функции, так и в основной программе, фактически являются разными переменными (в примере – переменная n в основной части программы и параметр n в описании функции). При выполнении программы машина не путает имена этих переменных.

Пример. Написать функцию, подсчитывающую количество цифр числа.

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;
Задания (решить с помощью функций).

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

  2. Найти сумму цифр n чисел.

  3. Среди чисел из интервала от А до В найти все простые.

  4. Найти все автоморфные числа из интервала от А до В. Число является автоморфным, если квадрат этого числа заканчивается этим же числом.. Например, число 6 – авоморфное (его квадрат 36 заканчивается на 6) или 25 (его квадрат 625).

  5. Дано 4 числа. Вывести на экран наибольшую из первых цифр заданных чисел. Например, если а=25, b=730, c=127, d=1995, то должна напечататься цифра 7.

  6. Дано натуральное число n. Выяснить, имеются ли среди чисел n, n+1, …, 2n близнецы, т.е. простые числа, разность между которыми равна двум.


База данных защищена авторским правом ©uverenniy.ru 2016
обратиться к администрации

    Главная страница