3. Функції
Якщо результатом виконання деякої процедури є одне скалярне значення, то цю процедуру бажано оформити як функцію. Формат опису функції:
function <ім'я функції>(список формальних параметрів):<тип результату>;
Звернення до функції (обов'язково повинно бути включене у вираз як операнд) має такий вигляд :
<ім'я функції> (список фактичних параметрів).
Задача. Знайти значення числа комбінацій n!
Знаходження значення факторіалу числа оформимо у вигляді функції. Тоді програма розв'язання даної задачі матиме вигляд:
Program KOMBINACIJ;
var N,M,C:integer;
function FACT(K:integer):integer;
var i,F:integer;
begin
F:=l;
for i:=l to K do F:=F*i;
FACT:=F;
end;
begin
write('n=');
readln(N);
write('m=');
readln(M);
C:=FACT(N)Div(FACT(M)*FACT(N-M));
Writeln ('Кількість комбінацій з ',n,' no ',m,' = ',C);
end.
Зверніть увагу на те, що в самому тілі функції FACT необхідно змінній, ім'я якої співпадає з ім'ям самої функції, присвоїти значення результату виконання функції: FACT:=F.
Задача 1. Знайти площу п’ятикутника, у якого сторони дорівнють:
A
B
= 2м, BC
=a м,
CD = b м,
DE = c м,
AE = d м,
AC =4 м,
AD = 5 м.
Program Pyatukytnuk; Var
a,b,c,d,f,g,h: integer; S,S1,S2,S3 : real;
Function ploscha(x,y,z:integer):real;
Var
p,S:real;
begin
If (x+y>z) and (x+z>y) and (y+z>x) Then
begin
P:=(x+y+z)/2;
S:=sqrt(p*(p-x)*(p-y)*(p-z));
end
Else
begin
Writeln(‘Такий трикутник не існує’);
S:=0
end;
ploscha:=S
End; Begin
Write (‘Введіть сторону=BC> ‘); ReadLn(a); Write (‘Введіть сторону=CD> ‘); ReadLn(b); Write (‘Введіть сторону=DE> ‘); ReadLn(c); Write (‘Введіть сторону=AE> ‘); ReadLn(d);
f:=2;
g:=4;
h:=5;
S1:=ploscha(f,a,g);
S2:=ploscha(g,b,h);
S3:=ploscha(h,c,d);
if (S1<>0) and (S2<>0) and (S3<>0) then
begin
S:=S1+S2+S3;
Writeln(‘S=’,s:5:2)
end
else
begin
Writeln(‘Пятикутника не існує’);
Writeln(‘уведіть іншу величину сторін)’;
end;
ReadLn;
End.
Задача. За допомогою функції, що визначає, яке з двох чисел більше, визначити яке з чотирьох чисел більше.
Program max_4chucla;
Uses crt;
Var
a,b,c,d,max:real;
Function maximym(a,b,max:real):real;
begin
Max:=a;
If max<b then max:=b;
Maximym:=max;
end;
Begin
clrscr;
write('a=>');
readln(a);
write('b=>');
readln(b);
write('c=>');
readln(c);
write('d=>');
readln(d);
max:=maximym(maximym(maximym(a,b,max),c,max),d,max);
writeln('max=',max:4:2);
readln;
End.
Запитання для самоконтролю:
Для чого призначені процедури ?
Як описується заголовок процедури ?
Чим відрізняються формальні і фактичні параметри ?
Чим відрізняються локальні і формальні змінні ?
Для чого призначені функції ?
Як описується заголовок функції ?
Яка різниця між процедурою і функцією ?
Як викликаються процедури і функції ?
Завдання
Знайти довжину сторін трикутника АВС, якщо відомі координати його вершин А(х1,y1,z1), B(х2,y2,z2), C(х3,y3,z3). Необхідно скористатись формулою:
