Уводни део часа : 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 променљиви параметри. Пример : Написати програм којим се израчунавају збир и разлика два броја употребом процедуре 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. Шта могу бити стварни вредносни, а шта стварни променљиви параметри ?
|