3.3.2 Funktsioonide ja protseduuride kasutus. Väärtuse ja viite kaudu parameetrite edastamine.

iDevice ikoon 3.3.2 Funktsioonide ja protseduuride kasutus. Väärtuse ja viite kaudu parameetrite edastamine.

Protseduurid ja funktsioonid

Programmi struktuuri lihtsustamiseks on otstarbekas jagada suurem programmeerimisülesanne väiksemateks alamülesanneteks. Alamülesannete lahendamine jäetakse väiksemate terviklike alammoodulite - protseduuride ja funktsioonide ülesandeks. Selline lähenemisviis lihtsustab programmi silumist ja haldamist. Alammoodulite korduvkasutuse võimaluse tõttu vähendab selline meetod ka programmeerimistööd.

 

Protseduurid ja funktsioonid erinevad nende kasutusviisi poolest. Funktsiooni kasutatakse funktsiooniviite abil, protseduuri aga protseduurilause abil. Erinevalt protseduurist tagastab funktsioon alati väärtuse - mille võib küll mõnel puhul kasutamata jätta. Näiteks kui veakoodi ei kontrollita.

Seos alammoodulite ja neid väljakutsuva mooduli vahel organiseeritakse mooduli parameetrite abil. Parameetrite edastamisviisi poolest jagatakse nad kahte gruppi:

a) aadresskutse (ingl. k. call by reference) puhul saab kutsutav moodul muuta kutsuva mooduli salvestatud parameetrite väärtusi. Tehniliselt on selline kutse realiseeritud nii, et kutsuv moodul annab kutsutavale moodulile talle üleantavate parameetrite aadressid.

b) kutse väärtusega e. väärtuskutse (ingl. k. call by value) - kutsuv moodul annab kutsutavale moodulile talle üleantavate parameetrite tegelikud väärtused (nende koopiad). Väärtuskutses ei saa kutsutav moodul muuta kutsuva mooduli salvestatud või tema jaoks salvestatud parameetrite väärtusi.

Aadresskutse eeliseks on, et ka mahukate andmete puhul ei tule kopeerimisest tingitud lisakulu. Väärtuskutse puhul pole jälle karta, et keegi alamprogrammis etteantud muutujate sisu soovimatult muudaks.

Näide­:

Kui meil on defineeritud kahe parameetriga protseduur myproc ja ühe parameetriga funktsioon myfunc, siis on võimalik neid käivitada nii:

myproc (a, b);

d = myfunc( e/f );

Esimeses neist lausetest täidetakse protseduur myproc, teises aga arvutatakse funktsiooni myfunc väärtus ja salvestatakse see muutujasse d.

Protseduure ja funktsioone nimetatakse sageli ka alamprogrammideks (ingl. k. routine). Programmi, millest pöördutakse alamprogrammide poole, mis aga ise alamprogramm ei ole, nimetatakse põhiprogrammiks (ingl. k. main program) või siis väljakutsuvaks alamprogrammiks (sest mõnes keeles nt Java ongi kõik koodilõigud alamprogrammid).

Lisalugemist: http://enos.itcollege.ee/~jpoial/java/i200loeng2.html