Wiki Markup |
---|
h1. Vakiot
Sellaiset |
Vakiot
...
tiedot, joita ei haluta muuttaa ohjelman suorituksen aikana, kannattaa määritellä vakioiksi. Tällöin ei ole tarvetta huolehtia niiden muuttumattomuudesta. Kääntäjä tekee sen ohjelmoijan puolesta. Esimerkiksi piin arvo on tieto, joka ei muutu ikinä ohjelman ajon aikana. h2. |
...
Paljaat vakiot |
...
Paljaat vakiot voidaan ryhmitellä seuraavasti: |
...
* *Numeeriset vakiot*, joita ovat esim. 5, 5.0, \-5, 12.4 |
...
* *Merkkivakiot*, joita ovat esim. '5', 'A', 'a' |
...
* *Merkkijonovakiot*, jollainen on esim. "Turbo C" |
...
h2. Nimetyt vakiot |
...
Paljaalle vakiolle voidaan antaa nimi, jota voidaan käyttää ohjelmassa kuten paljasta vakiota. Tällöin on määritelty _nimetty vakio_. |
...
Nimetty vakio määritellään ohjelmassa esimerkiksi seuraavasti: |
...
{code |
} #define PII 3.14 |
...
{code} * Nimettyjen vakioiden määrittelyt kirjoitetaan ohjelman alkuun ennen void main(void)-riviä. |
...
* Nimet on tapana kirjoittaa suuraakkosin. |
...
{note |
...
}On huomattava, että #define-määrittelyn jälkeen ei kirjoiteta puolipistettä. |
...
{note} ---- *2. tapa: const-muuttuja |
...
* Toinen tapa luoda vakio on määritellä muuttuja *const*\-tyyppiseksi eli siis vakioksi. |
...
Etuna tässä on se että #define määrittelyllä ei ole tyyppiä (siis char, int, float) ja se saattaa aiheuttaa ongelmia joissain tilanteissa. |
...
*const*\-muuttujan määrittely: |
...
{code |
}
const int vakio1 = -7; // Kokonaislukuvakio
const float Pii = 3.14; // Reaalilukuvakio
const char merkki1 = 'x'; // merkkivakio
const char mjono1[] = "Tämä merkkijono on vakio"; // merkkijonovakio
|
...
{code} *const*\-määrittely saa aikaan sen, että yllä olevassa esim. Pii onkin nyt vakio, tyyppiä {{float |
...
Muuttuvan tiedon lukeminen
Kun tietoa luetaan esim. joltain laiteportilta, voidaan tehdä seuraavasti:
Code Block |
---|
}}. h1. Muuttuvan tiedon lukeminen Kun tietoa luetaan esim. joltain laiteportilta, voidaan tehdä seuraavasti: {code} const volatile unsigned char *port = 0x30; {code} Ohjelma lukee portilta, jonka heksadesimaalinen osoite on 0x30, arvon, jonka ohjelma ymmärtää vakiona ja siten se kykenee ainoastaan käyttämään ko. muuttujan arvoa muttei muuttamaan sitä. |