Aliohjelma

Wikipedia
Loikkaa: valikkoon, hakuun

Aliohjelma (kutsutaan eri yhteyksissä myös termeillä proseduuri, funktio, metodi tai rutiini) on ohjelmoinnissa itsenäinen ohjelman osa, joka suorittaa tietyn toiminnon ja jota voidaan kutsua eri puolilta pääohjelmaa tai muista aliohjelmista. Aliohjelman suorituksen jälkeen ohjelman suoritus jatkuu kutsuvassa ohjelmassa aliohjelmakutsua seuraavasta lauseesta.

Proseduraalisessa ohjelmointikielessä aliohjelmia kutsutaan funktioiksi, jos ne palauttavat jonkin arvon, ja muussa tapauksessa proseduureiksi. Olio-ohjelmoinnissa luokan (olion) funktioita nimitetään jäsenfunktioiksi tai metodeiksi.

Ohjelmoinnissa esiintyy usein tilanne, että samanlaista toimintoa tarvitaan ohjelman useassa eri kohdassa. Kirjoittamalla toiminto aliohjelmaksi voidaan se suorittaa useasta eri kohdasta. Näin säästetään työtä. Jos sama toiminto kirjoitettaisiin ohjelmaan yhä uudelleen, ohjelmakoodi pitenisi ja tulisi epäselväksi ja virheiden mahdollisuus kasvaisi. Mahdolliset korjaukset ohjelmakoodiin pitäisi tehdä useaan paikkaan. Aliohjelmat myös lisäävät ohjelman modulaarisuutta, koska ne mahdollistavat ohjelmakoodin jakamisen pienempiin itsenäisiin osiin ja parantavat siten ohjelmiston luettavuutta, testattavuutta ja ylläpidettävyyttä.

Aliohjelmaa voidaan kutsua useassa kohdassa ohjelmaa. Aliohjelmalle voidaan antaa argumenttina yksi tai useampi käsiteltävä arvo, tai joissakin kielissä (esimerkiksi C++-kielessä), viittaus käsiteltävään arvoon. Aliohjelman määrittelyn yhteydessä esitellään joukko muuttujia, joiden avulla aliohjelmakutsun yhteydessä annettuja argumentteja on aliohjelman ohjelmakoodista käsin mahdollista käsitellä. Näitä muuttujia kutsutaan aliohjelman parametreiksi. Lisäksi aliohjelmalla voi olla paikallisia muuttujia, jotka näkyvät ja ovat käytettävissä vain aliohjelman alueella.

Aliohjelman kutsu on toteutettu nykyisissä suorittimissa jo käskytasolla: konekielinen käsky tallentaa senhetkisen ohjelmalaskurin arvon pinoon ja hyppää toiseen kohtaan ohjelmaa. Kun aliohjelma päättyy, paluuosoite haetaan pinon päältä. Tilaa jonne osoite tallennetaan kutsutaan aliohjelman aktivaatiotietueeksi. Siihen tallennetaan lisäksi aliohjelman käyttämät paikalliset muuttujat. Jos aliohjelma kutsuu itseään useaan kertaan, eli toimii rekursiivisesti, aktivaatiotietueita on useampi pinon päällä.

Esimerkki[muokkaa | muokkaa wikitekstiä]

Esimerkki aliohjelmasta, joka saa parametriksi numeroarvon (int eli integer) nimeltä ika ja joka palauttaa boolean-arvon (true/false) sen mukaan, onko ika alle 18 vai ei.

public Boolean onkoHenkiloAlaikainen(int ika) {
  if(ika<18) {
      return true;
   } else {
      return false;
   }
}

Tämän jälkeen aliohjelmaa voitaisiin kutsua esimerkiksi seuraavasti:

if(onkoHenkiloAlaikainen(12) == true) {
   tulosta "Henkilö on alaikäinen!";
}

Olio-ohjelmoinnissa aliohjelman (metodin) eteen kirjoitetaan halutun olion nimi.

if(henkilo.onkoHenkiloAlaikainen() == true) {
   tulosta "Henkilö on alaikäinen!";
}

Jos ika-arvo on jo asetettu oliolle etukäteen, sitä ei tarvitse antaa metodille argumenttina.