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

3. Функции.

Функция, определяемая пользователем, состоит из заголовка и тела функции. Заголовок содержит зарезервированное слово function, идентификатор (имя) функции, заключенный в круглые скобки, необязательный список формальных параметров и тип возвращаемого функцией значения. Тело функции представляет собой локальный блок, по структуре аналогичный программе:

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

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

begin

<тело процедуры>

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

end;

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

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

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

Пример 3: Составить программу, подсчитывающую число сочетаний без повторения из n элементов по k элементов. Число сочетаний без повторения вычисляется по формуле:

.

Решение:

program pr3;

var n,k:integer;

a1,a2,a3,c:integer;

function f(n:integer);integer;

var i:integer;

rez:integer;

begin

rez:=1;

for i:=1 to n do rez:=rez*i;

f:=rez

end;

begin

writeln(‘Введите n и k для подсчета числа :’);

readln(n,k);

a1:=f(n);

a2:=f(k);

a3:=f(n-k);

c:=a1 div (a2*a3);

writeln(‘ =’,c:4)

end.

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

Решение:

program pr4;

var n1,n2:integer;

k1,k2:integer;

function qun(x:integer):integer;

var k:integer;

begin

k:=0;

while x<>0 do

begin

k:=k+1;

x:=x div 10

end;

qun:=k

end;

begin

writeln(‘Ввести два числа’);

readln(n1,n2);

k1:=qun(n1);

k2:=qun(n2);

if k1=k2 then writeln(‘Одинаковое количество цифр’)

else if k1>k2 then writeln(‘В первом числе цифр

больше’)

else writeln(‘Во втором числе цифр

больше’);

readln

end.

Пример 5: Дан массив действительных чисел { }, где i=1,2,3, … , m. Вычислить сумму элементов с 1-го по 12-й и сумму элементов с 8-го по 15-й:

Найти произведение этих сумм.

Решение:

program pr5;

const m=20;

var a:array[1..m] of real;

j:integer;

p,s1,s2:real;

function sum(n,k:integer):real;

var i:integer;

s:real;

begin

s:=0;

for i:=n to k do s:=s+a[i];

sum:=s

end;

begin

for j:=1 to m do

begin

writeln(‘a[‘,j:2,’]=’);

readln(a[j])

end;

s1:=sum(1,12);

s2:=sum(8,15);

p:=s1*s2;

writeln(‘S1=’,s1:8:2,’ S2=’,s2:8:2,’ P=’,p:8:2)

end.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]