русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Відмінні особливості функції в порівнянні з


Дата додавання: 2013-12-23; переглядів: 1307.


ФУНКЦІЇ.

 

Відмінні особливості функції від процедури заключаються в тому, що вона має тільки один результат виконання, але може мати декілька вхідних параметрів. Результат визначається ім'ям функції і передається в основну програму.

Структура функція має наступний вигляд:

 
 
Заголовок; Розділ опису; Begin Розділ операторів; End;  


Заголовок функції складається із службового слова Function, після якого вказується ім’я функції, а в круглих дужках формальні параметри разом зі своїм типом. Закінчується заголовок типом результату функції.

 

Наприклад:

Function Sum(a,b:integer):Integer;

 

Розділ опису подібний до розділу процедури.

Всі останні розділи подібні до розділів опису в процедурі.

Викликається функція за її ім'ям з вказівкою фактичних параметрів. Якщо функція змінює значення формальних параметрів, або значення глобальних параметрів- змінних по відношенню до даної функції, то це говорить про те, що функція має побічний ефект. Застосування такої функції порушує структуру програми, тому її використання небажано.

Серед операторів, що входять в функцію, повинен обов'язково бути присутнім

хоч би один оператор присвоєння, в лівій частині якого стоїть ім'я даної функції. Цей оператор визначає значення, яке виробляється функцією.

Виклик та виконання функції виконується при обчисленні значення вказівника функції, який входить в деякий вираз. Після виконання функції, вироблений нею результат використовують в якості значення вказівника функції в тому виразі, в який входить цей вказівник. При виклиці функції передача фактичних параметрів здійснюється так само, як і при виклиці процедури.

 

Приклад: знайти помилки в наступній програмі:

 

Program b;

Var a: real;

Function z (x: real): real;

Begin

Z: =x;

If x<0 then z:=z+x; {тут в правій частині використовується оператор присвоєння імені функції.}

End;

Procedure w(var x:real; у: real);

Begin

X: =cos (у);

End;

Begin

W (a,z(5)); {невідповідність типів)

Writeln;

End.

процедурами:

 

1. В заголовку вказується службове слово Function і закінчується він їм’ям того типу, якому належить значення функції.

2. Складений оператор, який розміщується в опису функції., повинен обов'язково містити в середині себе оператор присвоєння, в якому зліва від присвоєння розміщується ім'я функції. Таких операцій може бути декілька. Але при кожному конкретному зверненні до функції спрацьовувати повинен тільки один. Це присвоєння і визначає значення функції.

 

Приклад2: Написати програму знаходження максимального елементу одновимірного масиву, який містить не більше п дійсних чисел. Пошук оформити в вигляді функції.

 

Program fu1;

Uses crt;

Type mas=array[1..100] of real;

Var mas1:mas;

і,п: integer;

function sirch ( mas2:mas; n2: integer): real;

var max: real;

begin

max:=mas2[1];

for i: =1 to n2 do

if max<mas2[i] then max:=mas2[i];

sirch: =max;

writeln(‘максимальний елемент : ', max: 4:2);

end;

begin

clrscr;

write ('Введіть кількість елементів ');

readln(n);

writeln('Bведіть елементи : ');

for і: =1 to n do read(masl[i]);

sirch (mas1,n);

end.

 

Параметрами-процедурами або параметрами-функціями називають параметри, які в свою чергу являються процедурами або функціями. Для параметра-процедури в заголовку вказується тільки ім'я формального параметру. А для параметра-функції вказується також і тип результату. При виклиці підпрограми формальним параметрам-процедури і параметрам - функції, вказаним в середині процедури повинні відповідати фактичні параметри, які співпадають з ними по кількості і по типу.

При використанні імен процедур та функцій в якості фактичних параметрів треба пам'ятати: якщо процедура, яка передається має параметри, то вони повинні бути значимі. При звертанні передається тільки ім'я процедури або функції, але не їх параметри.

Приклад1 Обчислити k=( vl+v2+v3 ) / 3; де vl,v2,v3 - це об'єми куль з радіусами rl,r2,r3. Об'єми обчислювати з використанням функцій..

 

Program ju2;

Var k, rl, r2, r3: real;

Function W(k:real):real;

ConstPI=3.14159;

Var v: real;

Begin

v:=4/3*PI*sqr(r) *r;

W: =v;

End;

Begin

Write ('Введіть радіуси rl,r2,r3 ');

Readln(rlr2,r3);

K: =(W(rl)+W(r2)+W(r3))/3;

Writeln('k= ‘,k:5:2);

End.

 

Приклад: Скласти програму для визначення числа комбінацій, використовуючи функцію для обчислення факторіала.

 

C=

 

program Ju3;

uses crt;

var f: real;

nm,n,m: integer;

function fact(n: integer):integer;

var p,i: integer;

begin

P:=1;

for i: =1 to n do

p:=p*i;

fact:=p;

end;

begin

clrscr;

write(‘Введіть n та m: ‘);

readln(n,m);

nm:=n-m;

f:=fact(n)/fact(m)*fact(nm);

writeln(‘Число сходжень з n по m:’f:4:2);

end.

 

Приклад: Дани відрізки a,b,c,d. Для кожноі трійки цих відрізків, з

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

 

program fu4;

var a,b,c,d,k,l,m: integer;

s,p:real;

function figure(k,l,m: integer): integer;

begin

if((k+l+m)/2 <=k) or ((k+l+m)/2<=l) or ((k+l+m)/2<=m) then

writeln('для даних сторін побудувати трикутник неможливо');

else begin

р: ={k+l+m)/2;

s: =sqrt(p*(p-k) *(p-l) *(p-m));

writln(‘площа=',s: 5:2);

end;

end;

begin

witeln(‘введіть сторони a,b,c,d’);

readln(a,b,c,d);

figure(a,b,c);

figure(b,c,d);

figure(c,d,a);

figure(d,a,b);

end.

 


<== попередня лекція | наступна лекція ==>
Параметри-значення та параметри-змінні. | РЕКУРСИВНІ СТРУКТУРИ.


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн