Подручја рада
Претрага
84. Потпрограми. Функције.

Уводни део часа :
1. Да ли један програмер пројектује и програмира цео програм ?
2. Како можемо убрзати израду програма ?
-------------------------------------------------------------------------------------------------------------------
Главни део часа : 

ПОТПРОГРАМИ

Када се пројектује неки сложен програм потребан је тим програмера од којих сваки добија одређени задатак. На овим задацима сви програмери раде истовремено што убрзава израду целог програма. Због тога је потребно да постоји могућност повезивања различитих модула у сложену целину. Поред тога, програмерима стоји на располагању и велика библиотека већ готових програма који се могу једноставно убацити у основни програм.
Да би се омогућио тимски рад и коришћење већ готових програма у PASCAL - у се користе функције и процедуре. Њиховим коришћењем постиже се да :
- различити људи могу радити на различитим деловима програма у исто време;
- исти структурни блок ( функција или процедура ) може се употребити на више места у програму иако је написан само једном;
- програм постаје једноставнији, прегледнији и краћи.

ФУНКЦИЈЕ


Поред унапред дефинисаних стандардних функција, програмер може креирати и своје функције.
Одлика функције је да даје само једну излазну вредност, која се придружује имену функције.
Синтаксни дијаграм функције је :

image083.gif

Пример : Написати функцију која даје део броја иза децималне тачке.

function fdec(x:real):real;
begin
         fdec:=x - trunc(x)
end;

Функција има исту структуру као и програм, осим што функција почиње резервисаном речи function уместо program и нема тачке после end, већ се завршава тачком и зарезом. Иза резервисане речи function долази име функције, а затим списак формалних параметара. Уз сваки параметар се наводи и његов тип. У овом примеру то је параметар x:real, што значи да функција узима један параметар реалног типа из програма. Иза списка параметара наводи се тип резултата који функција враћа у програм, тако да је fdec реалног типа. После заглавља функције следи блок наредби, који описује начин добијања резултата. У примеру је то наредба : fdec:=x - trunc(x), којом се израчунава вредност која ће се доделити имену функције. Без обзира на број наредби, једна од њих је увек наредба доделе којом се имену функције додељује нека вредност. То је вредност која се враћа у програм на место позива функције.

Пример : Написати програм којим се израчунава збир делова иза децималне тачке 5 реалних бројева.

program funkcija;
var i : integer;
     a, suma : real;
function fdec(a:real):real;
begin
       fdec:=a - trunc(a)
end;
begin
       suma:=0;
       for i:=1 to 5 do
       begin
              read(a);
              suma:=suma + fdec(a)
       end;
       writeln('zbir je',suma:5:2);
end.

Функције које корисник пише користе се на исти начин као и стандардне функције.
Наредбом suma:=suma + fdec(a) врши се обраћање функцији fdec, навођењем имена функције и списка стварних параметара - fdec(a).
Стварни параметри су вредности које се додељују формалним параметрима.
Тип формалног и стварног параметра мора бити исти.
Стварни параметри могу бити променљиве, константе и изрази.

Одговорити на питања :
1. Која је одлика функције ?
2. Објаснити какву структуру има функција.
3. Како се користе функције које пише корисник ?
4. Шта су стварни, а шта формални параметри и ког су типа ?
5. Шта може бити стварни параметар ?