Ero sivun ”Aliohjelma” versioiden välillä

Wikipediasta
Siirry navigaatioon Siirry hakuun
[arvioimaton versio][katsottu versio]
Poistettu sisältö Lisätty sisältö
MerlIwBot (keskustelu | muokkaukset)
p Botti poisti 35 Wikidatan sivulle d:q190686 siirrettyä kielilinkkiä
Rivi 9: Rivi 9:


[[Luokka:Ohjelmointi]]
[[Luokka:Ohjelmointi]]

[[ar:روتين فرعي]]
[[bn:সাবরুটিন]]
[[bs:Podrutina]]
[[ca:Subrutina]]
[[cs:Funkce (programování)]]
[[da:Funktion (programmering)]]
[[de:Funktion (Programmierung)]]
[[et:Alamprogramm]]
[[el:Διαδικασία (υπολογιστές)]]
[[en:Subroutine]]
[[es:Subrutina]]
[[fa:رویه (برنامه‌سازی رایانه)]]
[[fr:Fonction informatique]]
[[ko:함수 (프로그래밍)]]
[[hr:Potprogram]]
[[is:Undirforrit]]
[[it:Funzione (informatica)]]
[[he:שגרה (תכנות)]]
[[kk:Көмекші бағдарлама]]
[[hu:Függvény (programozás)]]
[[nl:Subprogramma]]
[[ja:サブルーチン]]
[[no:Funksjon (programmering)]]
[[mhr:Функций]]
[[pl:Podprogram]]
[[pt:Sub-rotina]]
[[ru:Функция (программирование)]]
[[sk:Podprogram]]
[[sr:Функција (програмирање)]]
[[sh:Функција (програмирање)]]
[[sv:Funktion (programmering)]]
[[tl:Tungkulin (agham pangkompyuter)]]
[[vi:Chương trình con]]
[[uk:Підпрограма]]
[[zh:子程序]]

Versio 8. maaliskuuta 2013 kello 05.50

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.

Ohjelmoinnissa esiintyy usein tilanne, että samanlaista toimintoa tarvitaan ohjelman useassa eri kohdassa. Jos sama toiminto kirjoitettaisiin ohjelmaan yhä uudelleen, ohjelmakoodi pitenisi ja tulisi epäselväksi, virheiden mahdollisuus kasvaisi ja 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ä.

Proseduraalisessa ohjelmointikielessä aliohjelmia kutsutaan proseduureiksi tai funktioiksi, jos ne palauttavat jonkin arvon. Olio-ohjelmoinnissa oliossa olevia funktioita nimitetään jäsenfunktioiksi tai metodeiksi. Aliohjelmaa voidaan kutsua useassa kohdassa ohjelmaa, ja antaa sille argumenttina 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 ja ovat jokaiselle kutsukerralle erillisiä.

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ä.