Muuttujien käsittely on yksi ohjelmoinnin peruspilareista, riippumatta siitä, tehdäänkö peliä vai vaikkapa muistilappuohjelmaa. Tutkimme tässä oppaassa muuttujia WinUI-esimerkin kautta C#-kielellä, mutta sama asia pätee lähes jokaiseen ohjelmointikieleen.
Aluksi ohjelmasi saattaa olla hyvin yksinkertainen: ikkuna, jossa on vain yksi painike. Kun painiketta painetaan, ohjelma vain ilmoittaa, että painiketta on painettu. Mutta voimme tehdä paljon enemmän.
<StackPanel Orientation="Vertical" HorizontalAlignment="Center" VerticalAlignment="Center"> <TextBlock x:Name="tekstikentta" Text="Testataan jotain" /> <Button x:Name="myButton" Click="myButton_Click">Click Me</Button> </StackPanel>
WinUI:ssa painikkeella ja tekstikentällä on omat tapahtumakäsittelijät tai ”eventit.” Esimerkiksi painikkeen tapahtumakäsittelijä löytyy taustakoodista ja se on nimetty esimerkiksi "myButton_Click"
. Kun painiketta painetaan, tämä koodi suoritetaan.
Nyt päästään mielenkiintoiseen osaan: muuttujat. Tekstikentän teksti on muuttuja (tai tarkemmin sanottuna, se on objektin ominaisuus, joka käyttää muuttujaa). Koodissa voimme muuttaa tätä arvoa. Esimerkiksi, kun painiketta painetaan, voimme asettaa, että luomamme tekstikentän teksti muuttuu arvoon ”jotain tapahtui.”
private void myButton_Click(object sender, RoutedEventArgs e) { string teksti = "jotain tapahtui."; myButton.Content = teksti; }
Koko prosessi on melko yksinkertainen, mutta se näyttää hyvin, miten muuttujat toimivat. Ne ovat muistissa varattuja alueita, joita ohjelman suoritin osaa lukea ja muuttaa. Kun painiketta painetaan, koodi käy hakemassa muistista tekstikentän arvon ja muuttaa sen uudeksi arvoksi, joka sitten päivittyy näytöllä. Ohjelman ollessa käynnissä, voimme nähdä tämän arvon muuttuvan myös kehitysympäristön työkaluilla, kuten ”Watch”-ikkunassa (Debug > Windows > Watch) tai muistinäkymässä (Debug > Windows > Memory).
Vahvasti tyypitetyissä ohjelmointikielissä, kuten C#, on tärkeää tietää muuttujien tyypit. Tässä tapauksessa tekstikentän teksti on ”string”-tyyppiä. Tyyppitietoisuus auttaa meitä ymmärtämään, minkälaista tietoa muuttuja voi sisältää ja mitä operaatioita sillä voidaan suorittaa.
Voit luoda muuttujan, esimerkiksi kokonaislukumuuttujan, määrittämällä sen tyyppi ja nimi ja antamalla sille alkuarvon. Muuttujan tyyppi voi olla esimerkiksi int (integer eli kokonaisluku) ja sille voidaan antaa arvoksi vaikkapa 50.
private void myButton_Click(object sender, RoutedEventArgs e) { int kokopnaisluke = 50; myButton.Content = "Clicked"; }
Sitten siirrytään tietotyypin muuttamiseen. Kun yrität lisätä kokonaislukumuuttujan arvon suoraan esimerkiksi tekstikenttään, voi tulla ongelma. Tekstikenttä yleensä vaatii string-tyyppisen arvon, eli merkkijonon. Koodausympäristösi antaa tästä virheilmoituksen, koska se ei voi muuttaa int-tyyppistä muuttujaa suoraan stringiksi. Ratkaisu ongelmaan on kutsua metodia, kuten toString()
, joka muuttaa kokonaisluvun merkkijonoksi. Näin voit lisätä kokonaisluvun tekstikenttään.
Tietotyypit eivät ole pelkästään kokonaislukuja ja merkkijonoja. Esimerkiksi float on toinen yleinen tietotyyppi, joka sallii desimaaliluvut. Sen kanssa ei ole ongelmia kokonaislukujen kanssa, koska C#, osaa automaattisesti muuttaa kokonaisluvun float-tyyppiseksi. Kuitenkin sama sääntö pätee tässäkin: et voi lisätä float-tyyppistä muuttujaa suoraan tekstikenttään ilman, että muutat sen ensin string-tyyppiseksi.
Merkkijonojen kanssa tilanne on erilainen laskutoimituksissa. Jos sinulla on kaksi merkkijonoa, voit yhdistää ne plus-operaattorilla. Kuitenkin tämä ei ole laskutoimitus samassa mielessä kuin numeroiden kanssa. Esimerkiksi jos yhdistät merkkijonot ”Hei” ja ”taas”, tulos on ”Heitaas”. Tämä on täysin erilainen operaatio kuin numeroiden yhteenlasku.
private void myButton_Click(object sender, RoutedEventArgs e) { string teksti = "hei"; string teksti2 = "taas"; string teksti3 = teksti + teksti2; tekstikentta.Text = teksti3; myButton.Content = "Clicked"; }
Lopuksi puhutaan muuttujien hyödyllisyydestä laskutoimituksissa. Muuttujien avulla voidaan suorittaa monimutkaisiakin laskutoimituksia. Voit esimerkiksi sijoittaa uuden arvon desimaaliluku-muuttujaan lisäämällä siihen kokonaislukumuuttujan arvon ja jonkin toisen luvun. Tässä tapauksessa voisit kirjoittaa koodiin, että desimaaliluku = kokonaisluku + 200;
, jolloin desimaaliluvun uusi arvo olisi 250.
private void myButton_Click(object sender, RoutedEventArgs e) { int kokonaisluku = 50; float desimaaliluku = kokonaisluku; desimaaliluku = kokonaisluku + 200; myButton.Content = desimaaliluku.toString(); }
Näin ollen, muuttujien käyttö ja ymmärtäminen on perustavanlaatuista ohjelmoinnissa. On tärkeää tietää eri tietotyyppien väliset yhteydet ja rajoitukset, jotta voidaan tehdä toimivia ja tehokkaita ohjelmia.
Tietotyyppien arvoalueet
Tyyppi | Kuvaus | Koko (tavuissa) | .NET Tyyppi | Alue |
---|---|---|---|---|
int | Kokonaisluvut | 4 | System.Int32 | -2,147,483,648 – 2,147,483,647 |
long | Kokonaisluvut (suurempi alue) | 8 | System.Int64 | -9,223,372,036,854,775,808 – 9,223,372,036,854,775,807 |
float | Liukuluvut | 4 | System.Single | +/-3.4 x 10^38 |
double | Tarkka liukuluku | 8 | System.Double | +/-1.7 x 10^308 |
decimal | Raha-arvot | 16 | System.Decimal | 28 merkitsevää numeroa |
char | Yksittäinen merkki | 2 | System.Char | N/A |
bool | Boolen-arvo | 1 | System.Boolean | Tosi tai epätosi |
DateTime | Ajankohta | 8 | System.DateTime | 00:00:00 01/01/0001 – 23:59:59 12/31/9999 |
string | Merkkijono | 2 per merkki | System.String | N/A |