Please to interact with this component.

{}

Muuttujat

Kurssin luentomonisteessa: https://tim.jyu.fi/view/1#WbRwxc1yrw0v

Muuttujat lyhyesti

  • Muuttuja on kuin varasto tiedolle.
  • Muuttujalla täytyy aina olla tyyppi, joka kertoo, mitä kyseinen varasto voi pitää sisällään, sekä nimi, joka yksilöi sen.
  • Tyyppi määritellään ainoastaan silloin, kun muuttuja esitellään ensimmäisen kerran.
  • Nimen avulla päästään käsiksi muuttujan varastoimaan tietoon.

Esitteleminen ja sijoittaminen

Ennen kuin muuttujaa voidaan käyttää, se täytyy esitellä. Esitteleminen tapahtuu koodissa seuraavasti:

<tyyppi> <nimi>


Esitellään muuttuja vuosilukua varten:

int vuosi;

Esittelemisen jälkeen muuttujaan tulisi sijoittaa arvo:

vuosi = 2020;

Esittelemisen ja arvon sijoittamisen voi myös tehdä samalla rivillä:

int vuosi = 2020;


Muista, että muuttuja esitellään vain kerran ja tyyppi mainitaan vain silloin.


Muuttujaan voidaan sijoittaa uusia arvoja tarvittaessa.

double lampotilaC = 5.8;
...
lampotilaC = 25.0;

Kurssilla yleisesti käytetyt tyypit

bool

  • Totuusarvo, jonka arvo voi olla joko true tai false.

int

  • Kokonaisluku. Ei voi sisältää desimaaleja.
  • Esimerkiksi -1, 0, 1, 2, 3, 4.

double

  • Desimaaliluku. Desimaaliluvuissa täytyy aina käyttää pistettä, ei pilkkua!
  • Esimerkiksi 1.5 tai -2.33.

char

  • Yksi merkki. Tätä voi ajatella yhtenä kirjaimena tekstissä.
  • Esimerkiksi 'a'.

string

  • Merkkijono, joka voi sisältää useampia (tai ei yhtään) merkkiä.
  • Esimerkiksi "Kissa", "m", "" (tyhjä merkkijono).

StringBuilder

  • Olio, joka voi pitää sisällään merkkijonon.
  • StringBuilder on kuin kone, jonka tehtävä on rakentaa ja muokata merkkijonoa.
  • Parametrina välitetty StringBuilder muokkaa alkuperäistä oliota.

Nimeäminen

  • Muuttujan nimi alkaa pienellä kirjaimella.
  • Nimissä ei saa käyttää välilyöntejä, erikoismerkkejä tai "ääkkösiä"!
  • Muuttujan nimen tulisi kuvata sen sisältöä.

Jos haluaisimme tehdä muuttujan, johon voimme laittaa jonottavien ihmisten lukumäärän talteen

int j;

on huono nimi. Sen sijaan

int ihmisiaJonossa;

kertoisi meille heti, mitä varten muuttuja on.

Demotehtäviä muuttujista:

Aliohjelmat ja funktiot

Kurssin luentomonisteessa: https://tim.jyu.fi/view/1#aliohjelmat

Aliohjelmat lyhyesti

  • Koodinpätkä, jota voidaan kutsua suoritettavaksi muualta koodista.
  • Jäsentävät ja selkeyttävät koodia huomattavasti.
  • Funktio on aliohjelma joka palauttaa arvon.

Aliohjelman esitteleminen

Kun tulee tarve uudelle aliohjelmalle, se tulee esitellä ennen kuin sitä voi alkaa kutsumaan koodissa.

Tämä pätkä kannattaa muistaa (ja kirjoittaa myös muistilappuun ylös)

public static PALAUTUSTYYPPI NIMI(TYYPPI PARAMETRI1, TYYPPI PARAMETRI2, ...)
{
    suoritettavaa koodia...
}

HUOM. parametrejä voi olla kuinka monta vaan: 0,1,2,3 jne. Huomaa myös, että parametri on muuttuja jota käytetään aliohjelman sisällä (eli se esitellään samalla tavalla kuin muuttuja!) public static tulee varmasti jokaiseen aliohjelmaan, jota kokeessa pitää esitellä.

Esimerkki haluttaisiin funktio, joka palauttaa kolmesta desimaaliluvusta suurimman.

  • Palauttaa desimaaliluvun eli PALAUTUSTYYPPI on double
  • Parametrejä on kolme, niiden tyyppi on desimaaliluku eli double
  • Hyvä nimi kuvaa aliohjelman toimintaa eli Suurin on hyvä nimi

Parametrit pitää vielä nimetä. Kyseessä on kolme yhtä tärkeää lukua, joten nimiksi voitaisiin valita vaikkapa a, b ja c. Saataisiin siis

public static double Suurin(double a, double b, double c)
{
    suoritettavaa koodia...
}

Suoritettava koodi sitten erikseen...

Ehtolauseet

Kurssin luentomonisteessa: https://tim.jyu.fi/view/1#ehtolauseet

Ehtolauseet lyhyesti

  • Käytetään kun halutaan suorittaa koodinpätkä vain tietyn ehdon pätiessä.

Yleinen muoto

Suomeksi ehtolause muotoillaan

Jos (ehto) pätee, niin suoritetaan {koodinpätkä}

Vastaava olisi C#-kielellä

If (ehto)
{
    koodinpätkä
}

Jos koodinpätkä on vain yksi suoritettava rivi, ei aaltosulkuja tarvita.

Ehto ja boolean-tyyppi

Ehtolauseen ehto on boolean-tyyppinen muuttuja eli totuusarvo. Siispä koodinpätkä suoritetaan, kun ehto on true. Ehto voi siis olla vaikkapa

  • false
  • 1>0
  • "kissa" == "kissa"
  • 'a'.IsUpper()

Pohdi suoritettaisiinko koodinpätkä edellisillä ehdoilla!

Taulukot

Kurssin monisteessa: https://tim.jyu.fi/view/1#taulukot

Usein ohjelmassa voi olla tarve määritellä useita samantyyppisiä muuttujia. Voisimme vaikka haluta tallentaa viiden eri sääaseman lämpötilat. Tällöin taulukko osoittautuu hyödylliseksi.

Taulukot lyhyesti

  • Tietorakenne, johon voi tallentaa useita samantyyppisiä muuttujia

Taulukon esittely

Taulukon määrittelyssä ilmoitetaan taulukon alkioiden tyyppi ja taulukon nimi. Periaatteessa esittely toimii kuten minkä tahansa muuttujan esittely. Taulukon voi määritellä monella eri tavalla, esimerkiksi yllä olevalle lämpötilataulukolle:

  1. double[] lampotilat;
  2. double[] lampotilat = new double[] {5.1, 4.2, 6.3, 10.0, 4.1};
  3. double[] lampotilat = new double[5];

Selitykset edellisille:

  1. Alustetaan desimaalilukuja sisältävä taulukko. Sen arvo on null eli taulukkoa ei ole vielä olemassa, mutta sillä on nimi johon voi viitata.
  2. Alustetaan desimaalilukuja sisältävä taulukko jossa on viisi alkiota: 5.1, 4.2, 6.3, 10.0, 4.1
  3. Alustetaan viisipaikkainen desimaalilukuja sisältävä taulukko. Jokaisessa paikassa on 0.0 eli double-tyypin oletusarvo.

Taulukkoon viittaaminen

Taulukon alkioiden indeksointi alkaa nollasta. Yllä olevassa 2.-kohdan taulukossa kuhunkin alkioon viitattaisiin seuraavasti:

  • lampotilat[0] == 5.1
  • lampotilat[1] == 4.2
  • lampotilat[2] == 6.3
  • lampotilat[3] == 10.0
  • lampotilat[4] == 4.1

Millä tahansa muulla int-arvolla hakasulkeiden välissä tulisi IndexOutOfBounds-poikkeus, koska sellaista indeksiä ei ole olemassa kyseisessä taulukossa.

Silmukat

Kurssin monisteessa https://tim.jyu.fi/view/1#WbRwxc1yrw0v

Silmukoiden avulla voidaan toistaa osa ohjelmasta useita kertoja. Toistoja suoritetaan niin kauan, kuin annettu ehto on tosi.

Silmukan esittelyssä esiintyy yleensä 3 asiaa: apumuuttuja, ehto ja kasvatuslause.

Jos ehto täyttyy aina, voidaan päätyä ikuiseen silmukkaan. Tällöin suoritus "jää jumiin", eikä pääse jatkamaan eteenpäin silmukasta.

Joissain tapauksissa apumuuttujat ja niiden kasvatuslauseet voidaan jättää pois ja poistua silmukasta esimerkiksi break-lauseen avulla.

Silmukan sisällä voidaan käyttää seuraavia erikoislauseita:

  • break (lopettaa koko silmukan suorittamisen)
  • continue (keskeyttää kierroksen ja hyppää seuraavaan)

For

Esitellään seuraavasti:

for (apumuuttujien esittely; ehto; kasvatuslauseet)
{
    // ...
}

For-silmukassa mahdolliset apumuuttujat sekä kasvatuslauseet ovat osa silmukan esittelyä.

Alla esimerkki silmukasta, joka suorittaisi saman asian 10 kertaa ("niin kauan, kuin i <= 10").

for (int i = 1; i <= 10; i++)
{
    // Jokaisella kierroksella suoritettavat lauseet tänne.
    // ...
}

While

Esitellään seuraavasti:

while (ehto)
{
    // ...
}

While-silmukka ottaa vain ehdon -- apumuuttujat ja kasvatuslauseet täytyy sijoittaa aina itse. Tässä kannattaa olla tarkkana, ettei tule vahingossa ikuista silmukkaa.

Alla esimerkki silmukasta, joka suorittaisi saman asian 10 kertaa ("niin kauan, kuin i <= 10").

int i = 1;
while (i <= 10)
{
    // Jokaisella kierroksella suoritettavat lauseet tänne
    // ...
    
    // Kasvatuslause laitetaan tässä tapauksessa silmukan sisään.
    i++;
}

Do while

Esitellään seuraavasti:

do
{
    // ...
}
while (ehto);

Do while-silmukka toimii samalla tavalla, kuin while-silmukka. Merkittävin ero on se, että do-osio suoritetaan ennen ehdon katsomista. Tämän vuoksi do-osio suoritetaan yhden kerran, vaikka ehto ei täyttyisikään.

Alla esimerkki silmukasta, joka suorittaisi saman asian 10 kertaa ("niin kauan, kuin i <= 10").

int i = 1;
do
{
    // Jokaisella kierroksella suoritettavat lauseet tänne
    // ...
    
    // Kasvatuslause laitetaan tässä tapauksessa silmukan sisään.
    i++;
}
while (i <= 10);

These are the current permissions for this document; please modify if needed. You can always modify these permissions from the manage page.