Ohjelmointikurssi ei toimi kunnolla selaimessasi.
Ohjelmointikurssi ei valitettavasti toimi Internet Explorer -selailemella. Suosittelemme että teet kurssia joko uusimmalla Chromella tai uusimalla Firefoxilla.

Muuttujat

Muuttujia käytetään tiedon tallentamiseen. Niitä tarvitaan silloin, kun tietoa halutaan käsitellä useammassa kohdassa ohjelmaa. Ohjelma voi esimerkiksi aluksi arpoa käyttäjälle nimen, jota käytetään osana ohjelmaan liittyvää tarinaa.

Merkkijonomuuttujat

Edellisessä osiossa tulostettiin kaikenlaisia lauseita ja kuviota. Tulostuskomennolle piti antaa tulostettava asia lainausmerkeissä, jotta tietokone ymmärtäisi asian olevan merkkijono. Merkkijonoja voidaan tallettaa muuttujiin.

Jokaisella muuttujalla tulee olla nimi, ja muuttujaa luodessa nimeen liitetään sisältö eli muuttujan arvo. Nimeksi voi valita melkein minkä tahansa sanan.

Merkkijonomuuttujat luodaan kirjoittamalla: var muuttujanNimi = "Muuttujan sisältö". Kirjoitimme muuttujan sisällön lainausmerkkeihin, koska halusimme tietokoneen ymmärtävän sen olevan merkkijono. Kun olemme luoneet muuttujan, voimme käyttää sitä kirjoittamalla muuttujan nimen esimerkiksi tulostuskomennon sisään.

var nokkelastiNimettyMuuttuja = "Olen nokkelasti nimetty muuttuja!"
console.log(nokkelastiNimettyMuuttuja)

Yllä olevassa koodinpätkässä loimme muuttujan nimeltä nokkelastiNimettyMuuttuja ja tulostimme sen. Emme laittaneet tulostuskomennon sisään lainausmerkkejä, koska halusimme kertoa tietokoneelle, että tulostettava asia on muuttuja. Esimerkki tulostaa: Olen nokkelasti nimetty muuttuja!

Osa tehtävien koodista on lukittu. Voit muokata vain vapaita alueita. Lukituissa alueissa on harmaa tausta ja lukitsemattomassa on valkoinen tausta.

Tehtävä:
Muuttujan arvon vaihtaminen
Alla olevassa tehtäväpohjassa on luotu muuttuja nimeltä salainenViesti, joka luonnin jälkeen tulostetaan. Valitettavasti kuitenkin viesti on väärä. Muuta tehtävää siten, että viestiksi tulee: Ave Caesar!.
Tehtävä:
Kaksi muuttujaa
Tehtäväpohjassa on määritetty kaksi muutujaa. Muuta muuttujien arvoja siten, että tulostukseksi tulee:
Eilen oli poutaista.
Haloo? Ei kuulu mitään!

Tuntemattomat muuttujat

Jos ohjelmassa yritetään käyttää muuttujaa, jota ei ole ennen käyttöyritystä luotu, ohjelma ei tiedä mitä muuttujalla pitäisi tehdä. Tämä johtuu siitä, että tietokone ei voi käyttää muuttujia, joita ei ole vielä nimetty. Tällöin tietokone keskeyttää ohjelman suorituksen. Jos yritetään tulostaa mitä tahansa muuttujaa, jota ei ole luotu:

console.log(muuttujaJotaEiOleLuotu)

Tietokone antaa meille virheen: ReferenceError: muuttujaJotaEiOleLuotu is not defined. Tämä on tietokonen tapa sanoa, että ohjelmassa yritettiin käyttää muuttujaa nimeltä: muuttujaJotaEiOleLuotu, ja tietokone ei tunne tämän nimistä muuttujaa. Virheen voi korjata luomalla oikean nimisen muuttujan ennen sen käyttämistä.

var muuttujaJotaEiOleLuotu = "onpas!"
console.log(muuttujaJotaEiOleLuotu)
Tehtävä:
Väärin nimetty muuttuja
Alla olevassa tehtäväpohjassa yritetään tulostaa muuttuja nimeltä tulostettavaMuuttuja, mutta se ei onnistu koska muuttujan luonnissa muuttujan nimeen on tullut kirjoitusvirhe. Korjaa muuttujan nimi siten, että koodi toimii.
Tehtävä:
Muuttujan luonti
Tehtäväpohjassa on valmiina komento, joka tulostaa muuttujan etunimi sisällön. Ohjelma ei toimi, sillä etunimi-nimistä muuttujaa ei ole luotu. Luo muuttuja etunimi ja aseta sen sisällöksi merkkijono, joka on etunimesi.
Odotettu vastaus: Näytölle tulostuu etunimesi.

Tekstin yhdistäminen

Merkkijonoja voidaan yhdistellä toisiinsa. Se onnistuu ketjuttamalla halutut merkkijonot +-operattorilla. Esimerkiksi kaikki alla olevat koodinpätkät tulostavat: "Hei, mitä kuuluu?".

var hei = "Hei"
var kuuluu = ", mitä kuuluu"
var mitaKuuluu = hei + kuuluu
console.log(mitaKuuluu)
Tehtävä:
Lauseen muodostaminen
Tehtäväpohjassa on laitettu muuttujiin a ja b. Yhdistele muuttujia +-operaattorilla muuttujaan yhdistetty siten, että tehtävässä tulostuu järkevä lause. Sinun on siis pakko käyttää muuttujia a ja b.
Huom: Et saa kirjoittaa sanoja suoraan vaan joudut käyttämään muuttujia a ja b.

Saman tulostuksen voi saada aikaan erilaisilla tavoilla.

var hei = "Hei"
var kuuluu = ", mitä kuuluu"
console.log(hei + kuuluu)
console.log("Hei" + ", mitä kuuluu?")

Voimme yhdistellä niin monta asiaa kuin haluamme yhdellä rivillä. Voimme esimerkiksi yhidistellä 3, 4 tai 5 eri merkkijonoa toisiinsa ketjuttamalla ne peräkkäin. Esimerkiksi alla oleva esimerkki tulostaa: "Tämän päivän sää on ehkä poutainen".

var paivan = "Tämän päivän "
var saa = "sää on "
var poutainen = " poutainen "
var yhdistetty = paivan + saa + "ehkä" + poutainen
console.log(yhdistetty)
Tehtävä:
Pitkän lauseen muodostaminen
Tehtäväpohjassa on laitettu muuttujiin sanoja. Yhdistele muuttujia muuttujaan yhdistetty siten, että tehtävässä tulostuu järkevä lause.
Huom: Et saa kirjoittaa sanoja suoraan vaan joudut käyttämään muuttujia a, b ja c.
Tehtävä:
Vielä pidemmän lauseen mudodostaminen
Tehtäväpohjassa on määritelty muuttujia. Yhdistele näitä muuttujia muuttujaan yhdistetty siten, että tehtävään muodostuu järkevä lause.

Tyypillinen virhe merkkijonojen yhdistämisessä on se, että unohtaa +-operaattorin jostain kohdasta ohjelmakoodia. Esimerkiksi alla oleva koodi ei toimi.

var paivan = "Tämän päivän "
var saa = "sää on "
var poutainen = " poutainen "
var yhdistetty = paivan + saa + "ehkä" poutainen
console.log(yhdistetty)

Numeromuuttujat

Muuttujiin voidaan tallentaa muutakin kuin merkkijonoja. Eräs hyödyllisimmistä asioista, joita voidaan laittaa muuttujiin ovat numerot. Numeroiden etu merkkijonoihin on se, että niillä voidaan helposti tehdä laskutoimituksia ja niiden suuruutta on helppo vertailla keskenään.

Numeromuuttujat luodaan samaan tyyliin kuin merkkijonomuuttujat, paitsi lainausmerkkikohdan tilalle kirjoitetaan haluttu numero ilman lainausmerkkejä. Esimerkiksi alla olevassa esimerkissä luodaan numeromuuttuja nimeltä parasNumero, jonka arvo on 3.

var parasNumero = 3

Seuraavissa tehtävissä iso osa ohjelman koodista on piilossa. Näkyvissä on vain ne osat, joita sinun täytyy muokata.

Tehtävä:
Muuttujien kokeilemista

Kokeile ajaa tehtävä. Huomaat, että näytölle avautuu peli, joka on hieman hankala.

Tehtäväpohjassa on määritetty kaksi muuttujaa, jotka määräävät pelihahmon ja rubiinien liikkumisnopeuden. Muuta muuttujien arvoja siten, että pelistä tulee helpompi.

Tehtävä:
Muuttujien korjaaminen
Tässä tehtävässä pääset muokkaamaan ensimmäisestä tehtävästä tuttua peliä. Pelissä kuitenkin muuttujien arvot ovat hassusti. Korjaa peli niin, että rubiineja voi kerätä. Korjaa myös liikkuminen toimimaan järkevästi.
Odotettu vastaus: Peli toimii samalla tavalla kuin ensimmäisessä tehtävässä.

Numeroilla laskeminen

Merkkijonoilla voi yrittää tehdä laskuja, mutta niiden tulokset ovat harvoin haluttuja. Esimerkiksi alla oleva esimerkki tulostaisi: 12, koska merkkijonoja yhdistellessä merkkijot laitetaan aina peräkkäin.

var eka = "1"
var toka = "2"
console.log(eka + toka)

Jos laskemme saman laskutoimituksen luvuilla, tulostuu oikea vastaus 3.

var eka = 1
var toka = 2
console.log(eka + toka)

Numeroita voidaan laskea yhteen +-merkillä, niitä voidaan vähentää toisistaan --merkillä, niitä voidaan kertoa *-merkillä ja niitä voidaan jakaa /-merkillä.

Tehtävä:
Laskutoimituksen korjaus
Alla olevassa tehtäväpohjassa on luotu kaksi muuttujaa a ja b. Tehtäväpohjassa olevan tulostuskomennon sisällä tehdään laskutoimitus. Korjaa laskutoimitus sellaiseksi, että tulokseksi tulee 12.
Huom: Älä kirjoita lukuja suoraan vaan käytä muuttujia a ja b.

Muuttujia voidaan käyttää niin monta kertaa kun halutaan. Esimerkiksi alla oleva koodi tulostaa: 6.

var a = 2
console.log(a + a + a)
Tehtävä:
Operaatioden harjoittelua
Alla olevassa tehtäväpohjassa on luotu kaksi muuttujaa a ja b. Tee tulostuskomennon sisään joku laskutoimitus, jonka tulos on 37. Voit käyttää muuttujia niin monta kertaa kun haluat.
Huom: Et saa kirjoittaa lukuja suoraan vaan joudut käyttämään muuttujia a ja b.

Numeromuuttujiin voidaan myös lisätä suoraan lukuja. Alla oleva esimerkki tulostaa luvun 12.

var a = 2
console.log(a + 10)
Tehtävä:
Luvun lisääminen suoraan muuttujaan
Alla olevassa tehtäväpohjassa on luotu muuttuja a. Tehtäväpohjassa on myös tulostuskomento, missä tulostetaan laskutoimituksen a * 2 tulos. Muuta luku 2 sellaiseksi luvuksi, että laskutoimituksen tulokseksi tulee 45.

Uusi arvo muuttujaan

Kun muuttuja on luotu var-sanan avulla, sen arvoa voidaan vielä myöhemmin muutttaa. Uuden arvon asettaminen muuttujalle onnistuu koodilla muuuttujanNimi = uusiArvo. Alla olevassa esimerkissä asetetaan muuttujalle uusi arvo. Esimerkki tulostaa 14.

var a = 6
a = 14
console.log(a)
Tehtävä:
Muuttujalle uusi arvo
Alla olevassa tehtäväpohjassa on luotu muuttuja a. Aseta sen uudeksi arvoksi 42.
Tehtävä:
Usealle muuttujalle uusi arvo
Tehtäväpohjassa on määritetty muuttujat a ja b. Määritä niille uudet arvot siten, että tulostukseksi tulee: Paras numero on 7.

Ohjelmoinnissa tulee usein vastaan tilanne, jossa haluame muuttaa nykyistä arvoa siten, että uusi arvo tuleekin osittain muuttujan nykyisestä arvosta. Esimerkiksi jos meillä on muuttuja a, jonka arvo on 2, voimme haluta kasvattaa a:n arvoa 5:llä. Tämä onnistuu käyttämällä muuttujan nimeä uudestaan arvoa asetettaessa. Alla oleva esimerkki nostaa a:n arvoa lukuun 7.

var a = 2
a = a + 5
Tehtävä:
Muuttujan arvon kasvatus
Alla olevassa tehtäväpohjassa on luotu muuttuja a. Kasvata sen arvoa 214-kertaiseksi.
Tehtävä:
Muuttujan arvon nosto
Tehtäväpohjassa on luotu muuttuja x. Kasvata sen arvoa 351:llä.
Tehtävä:
Muuttujan arvon muuttaminen useasti
Tehtäväpohjassa on määritetty muuttuja numero. Muuta muuttujaa kaksi kertaa niin että ensiksi pienennät muuttujan arvoa kolmasosaan ja sitten pienennät muuttujan arvoa 451:llä. Tehtäväpohjassa on merkitty kommenteilla, missä arvon muutokset tulee tehdä.
Valmis?
Jatka seuraavaksi
ehtoihin.