Ero sivun ”Muuttuja (ohjelmointi)” versioiden välillä

Wikipediasta
Siirry navigaatioon Siirry hakuun
[arvioimaton versio][arvioimaton versio]
Poistettu sisältö Lisätty sisältö
Ei muokkausyhteenvetoa
Ei muokkausyhteenvetoa
Rivi 1: Rivi 1:
'''Muuttuja''' ''(variable)'' tarkoittaa imperatiivisessa [[ohjelmointi|ohjelmoinnissa]] nimettyä eli symbolista tietovarastoa, josta tietoa voidaan hakea ja johon tieta voidaan kirjoittaa, mikäli muuttuja ei ole ns. vakio (tällöin on tietenkin harhaanjohtavaa puhua muuttujasta). Muuttujia käytetään yleisesti [[ohjelmointi]]kielissä tiedon varastointipaikkana.
'''Muuttuja''' ''(variable)'' tarkoittaa imperatiivisessa [[ohjelmointi|ohjelmoinnissa]] nimettyä eli symbolista tietovarastoa, josta tietoa voidaan hakea ja johon tieta voidaan kirjoittaa, mikäli muuttuja ei ole ns. [[vakio]] (tällöin on tietenkin harhaanjohtavaa puhua muuttujasta). Muuttujia käytetään yleisesti [[ohjelmointi]]kielissä tiedon varastointipaikkana.


== Perusteet ==
== Perusteet ==

Versio 14. tammikuuta 2007 kello 04.00

Muuttuja (variable) tarkoittaa imperatiivisessa ohjelmoinnissa nimettyä eli symbolista tietovarastoa, josta tietoa voidaan hakea ja johon tieta voidaan kirjoittaa, mikäli muuttuja ei ole ns. vakio (tällöin on tietenkin harhaanjohtavaa puhua muuttujasta). Muuttujia käytetään yleisesti ohjelmointikielissä tiedon varastointipaikkana.

Perusteet

Muuttujia käytetään yleisesti matemaattisissa lausekkeissa ja algoritmeissä kuvaamaan symboleja, joiden arvoa ei etukäteen haluta sitoa mihinkään tiettyyn arvoon. Muttujien käyttö mahdollistaa yleiskäyttöisten proceduurien ja funktioiden luomisen. Esimerkiksi seuraava funktio palauttaa kahden luvun X ja Y yhteenlasketun summan:

funktio summa(x, y) {
  summa = x+y;
}

Koska muuttujien arvoa ei ole etukäteen sidottu, voidaan funktiota kutsua halutuilla arvoilla, esim. summa(10,29) palauttaisi arvon 39. Muuttujien sisältämät arvot voivat olla muutakin kuin numeroita. Tyypillisesti ohjelmistoissa muuttujilla käsitellään tekstiä, numeroita ja olioita.

Muuttujatyyppejä

Ohjelmointikielissä symbolinen muuttuja voi viitata lähes minkätyyppiseen tietoon tahansa. Ohjelmointikielissä voidaan kuitenkin määritellä minkä tyyppiseen tietoon muuttuja viittaa. Muuttujat voivat olla joko

  • etukäteen tiettyyn tietotyyppiin sidottuja
  • sisältää vapaasti mitä tahansa tietoa

Jos muuttujan viittaama tyyppi on etukäteen määritelty, kuten useimmissa käännetyissä ohjelmointikielissä tehdään, se ei saa viitata muun kaltaiseen tietoon. Esimerkiksi muuttuja, joka viittaa kokonaislukuarvoon määritellään C (ohjelmointikieli) -kielessä seuraavasti:

int x;

Tyypillisiä tietotyyppejä, joihin muuttujat ohjelmointikielissä voivat viitata ovat:

Osoittimet

Erityisen hyödyllisiä muuttujia ovat muistiavaruuden osoitteet, koska ilman niitä ei moderneja tietokoneohjelmia voitaisi rakentaa. Muuttujaa, joka sisältää muistiavaruuden osoitteen sanoitaan osoittimeksi (pointer). Osoittimen etuna on, että se tarvitsee itse vähän tilaa (esim. 32-bittisissä tietokoneissa 32-bittiä), mutta sen osoittama tietomäärä voi olla mielivaltaisen suuri. Osoittimen yhteydessä on yleensä hyödyllistä määritellä myös sen osoittaman tiedon tyyppi. Esimerkiksi C -kielessä määritellään osoitin merkkijonoon seuraavasti:

char *teksti;

Tekstin pituus voi olla mitä tahansa, mutta tietoa välitettäessä tarvitsee välittää vain osoittimen arvo. Osoittimiin liittyy myös vakavien ohjelmointivirheiden vaara, koska osoittimen arvon uudelleenasettaminen voi johtaa vakaviin virhetilanteisiin. Tästä syystä useissa uudemmissa ohjelmointikielissä ohjelmoija ei pääse itse asettamaan osoittimien arvoja, vaan kääntäjä / tulkki suorittaa suurempien tietoalkioiden ja olioiden käsittelyn osoittimilla ohjelmoijan "tietämättä".

Vakiomuuttujat

Jos muuttujan tietoa ei saa muuttaa, voidaan se määritellä ns. vakiomuuttujaksi. Muuttuja voi olla vakiomuuttuja myös, jos se sijaitsee muistialueella, johon ei voida kirjoittaa (ns. ROM -muisti)

Muistinvaraus

Muuttujien varaaminen tietokoneen muistista tapahtuu yleensä jollain seuraavista tavoista:

Suurin osa muuttujista luodaan ja talletetaan tietokoneen keskusmuistiin. Tällöin muuttuja säilyy tietokoneen muistissa niin kauan kuin virta katkaistaan tai sen päälle kirjoitetaan uusi arvo. Mikäli muuttuja talletetaan pysyväismuistiin, esim. kiintolevylle tai flash-muistiin, muuttujan arvo säilyy myös virran katkaisemisen jälkeen.

Rekisterihin ja pinoon muuttujalle varataan muistia yleensä vain silloin, jos muuttujaa käsitellään vain lyhytaikaisesti ja muuttujan tulosta ei tarvitse säilyttää kuin hetken aikaa. Tavallisesti mm. laskujen välitulokset talletetaan rekistereihin. Esimerkiksi Intelin prosessoreiden x86 -arkkitehtuurissa yhteenlasku voitaisiin suorittaa rekistereillä seuraavasti:

mov ax, 10
mov bx, 29
add ax, bx  ; ax sisältää nyt summan 10+29

Funktiokutsujen parametrit talletetaan yleensä tietokoneen pinoon, koska niitä ei tarvitse säilyttää kuin sen aikaa kun funktiokutsu on voimassa. Koska pino on käytettävissä useimmissa tietokone- tai mikroprosessoriarkkitehtuureissa, se on kätevä paikka väliaikaisen tiedon tallettamiseen.