1-ulotteiset taulukot

Yksiulotteinen taulukko on kuin rivitalo: selvittääksemme tietyn henkilön asunnon meidän tarvitsee tietää vain asunnon (järjestys-)numero.

https://trac.cc.jyu.fi/projects/ohj1/attachment/wiki/taulukot2D/rivitalo.png?format=raw

Voimme esimerkiksi sanoa, että Pekka asuu rivitalon asunnossa nro 3, ja Maija asunnossa 0. Huomaa, että indeksit eli taulukon alkioiden laskeminen alkaa aina nollasta.

1. Taulukon esittely

Taulukko esitellään sanomalla taulukon alkioiden tyyppi, hakasulut ja taulukon nimi. Esimerkiksi:

int[] kuukausienPituudet;
double[] keskilampotilat;

2. Taulukon luominen

Erona tavalliseen muuttujaan taulukkomuuttuja "vain" viite itse taulukkoon joka on jossakin muualla. Itse taulukko pitää luoda new TYYPPI[koko] kutsulla.

 kuukausienPituudet = new int[12];
 keskilammot = new double[31];  // tammikuun keskilämmöt.

Kun taulukko on luotu, ovat sen kaikki alkiot 0:ia.

3. Taulukon alkioon sijoittaminen

Taulukon indeksit alkavat 0:sta. Taulukon alkioon voidaan sijoittaa uusi arvo NIMI[INDEKSI] = LAUSEKE; Esimerkiksi:

 kuukausienPituudet[0] = 31  // laitetaan tammikuun pituus
 kuukausienPituudet[1] = 28; // laitetaan helmikuun pituus
 kuukausienPituudet[11] = 31; // laitetaan joulukuun pituus
 keskilammot[0] = -20.7; // Tammikuun 1. päivän keskilämpö
 keskilammot[4] = -16.7; // Tammikuun 5. päivän keskilämpö

4. Taulukon alustaminen luonnin yhteydessä

Taulukko voidaan alustaa myös jo luomisen yhteydessä:

  double[] keskilammot = {-20.7,-18.2,-10.3,-14.2,-16.7,-10.9};
  string[] kuukausienNimet = {"tammi","helmi","maalis",...,"marras","joulu"};

5. Taulukon alkioiden summa

Taulukon alkioiden summa voitaisiin laskea:

  int vuodenPituus = 0;
  vuodenPituus  +=  kuukausienPituudet[0];
  vuodenPituus  +=  kuukausienPituudet[1];
  vuodenPituus  +=  kuukausienPituudet[2];
  vuodenPituus  +=  kuukausienPituudet[3];
  vuodenPituus  +=  kuukausienPituudet[4];
...
  vuodenPituus  +=  kuukausienPituudet[9];
  vuodenPituus  +=  kuukausienPituudet[10];
  vuodenPituus  +=  kuukausienPituudet[11];

Tässä ei kuitenkaan ole hirveästi järkeä ja siksi otetaan käyttöön silmukat:

  int vuodenPituus = 0;
  for (int i=0; i < kuukausienPituudet.Length; i++)
  {
      vuodenPituus  +=  kuukausienPituudet[i];
  } 

Saman voi kirjoittaa myös muodossa:

  int vuodenPituus = 0;
  for (int i=0; i < kuukausienPituudet.Length; i++)
  {
      int pituus = kuukausienPituudet[i];
      vuodenPituus  +=  pituus;
  } 

ja tälle on lyhenteenä foreach-silmukka:

  int vuodenPituus = 0;
  foreach (int pituus in kuukausienPituudet)
  {
      vuodenPituus  +=  pituus;
  } 

Linkkejä