Ero sivun ”Muuttuja (ohjelmointi)” versioiden välillä
[arvioimaton versio] | [arvioimaton versio] |
Poistettu sisältö Lisätty sisältö
p w |
|||
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 [[
== Perusteet ==
Rivi 13:
=== Muuttujien käyttö ===
Muuttujia käsitellään ohjelmointikielissä operaattoreiden avulla. Esimerkiksi yhteenlaskussa käytetään yleensä "+" -operaattoria kahden muuttujan välissä merkitsemään yhteenlaskua. Operaattori voi sijaita myös muualla suhteessa muuttujaan. Esimerkiksi [[Lisp]]
(+ x y )
Rivi 35:
* sisältää vapaasti mitä tahansa tietoa
Jos muuttujan viittaama tyyppi on etukäteen määritelty, kuten useimmissa [[ohjelmointikielen kääntäjä|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;
Rivi 50:
=== 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]]
char *teksti;
Tekstin pituus voi olla mitä tahansa, mutta tietoa välitettäessä tarvitsee välittää vain osoittimen arvo. Osoittimiin liittyy myös vakavien [[ohjelmointivirhe|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 [[ohjelmointikielen kääntäjä|kääntäjä]] / [[ohjelmointikielen tulkki|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 ==
Rivi 64:
Muuttujien varaaminen tietokoneen muistista tapahtuu yleensä jollain seuraavista tavoista:
* muuttuja sijaitsee [[Rekisteri (tietokonetekniikka)|rekisterissä]]
* muuttuja sijaitsee tietokoneen [[pino]]ssa
* muuttuja varataan tietokoneen [[keskusmuisti]]in
Rivi 72:
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. [[kiintolevy]]lle tai [[flash-muisti]]in, 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 [[Intel]]in prosessoreiden [[x86]]
mov ax, 10
Rivi 78:
add ax, bx ; ax sisältää nyt summan 10+29
Funktiokutsujen parametrit talletetaan yleensä tietokoneen
[[Luokka:Ohjelmointi]]
|