Подручја рада
Претрага
87. Процедуре.

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

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

procedure zbirraz(x,y : integer, var zbir, razlika : integer);
begin
       zbir:=x+y;
       razlika:=x-y
end;

Иза резервисане речи procedure наводи се име процедуре. После имена наводи се списак формалних параметара, који обухвата улазне или вредносне параметре и излазне или променљиве параметре. Пре извршавања процедуре вредносним параметрима се додељују вредности стварних параметара. Променљиви параметри се означавају резервисаном речи var. Поред сваког параметра наводи се његов тип. У примеру су x и y вредносни параметри, zbir и razlika променљиви параметри.

image086.gif

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

program procedura;
var a, b, z, r : integer;
procedure zbirraz(x,y : integer, var zbir, razlika : integer);
begin
       zbir:=x+y;
       razlika:=x-y
end;
begin
       zbirraz(5,1,z,r);
       writeln(z:4,r:4);
       read(a,b);
       zbirraz(a,b,z,r);
       writeln(z:4,r:4);
       zbirraz(a+1,2*b,z,r);
       writeln(z:4,r:4)
end.

Обраћање процедури врши се навођењем имена процедуре и списка стварних параметара. Прво обраћање процедури је наредбом : zbirraz(5,1,z,r); Вредносни параметри x и y добијају вредности x=5, y=1.Затим се израчунавају променљиви параметри zbir и razlika, а њихове вредности се додељују стварним параметрима z и r. При обраћању процедури могу се наводити константе (5,1), променљиве (a,b) и изрази (a+1,2*b) као стварни вредносни параметри. Стварни променљиви параметри могу бити само променљиве (z,r), а не смеју бити константе или изрази.

Имена параметара у процедури су " локална " за ту процедуру и нису повезана са именима која се користе изван процедуре. Због тога је могуће користити и у главном програму и у процедури иста имена променљивих.

Пример : Шта се исписује извршењем следећег програма ?

program primer;
var x : integer;
procedure raz(x : integer);
begin
       x:=x+1
end;
begin
       x:=4;
       raz(x);
       writeln('x=',x:4)
end.

Променљива x је описана и у програму и у процедури. Међутим, приликом резервисања меморијског простора за променљиве у програму ове две променљиве добиће различите меморијске локације. Практично, то значи да су то две различите променљиве. Извршавање програма почиње наредбом доделе, којом се глобалној променљивој x, у програму, додељује вредност 4. После тога позива се процедура raz, којом се повећава вредност локалне променљиве x, у процедури. Како вредност глобалне променљиве x остаје непромењена, добиће се испис x=4.


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