1-ulotteiset taulukot
Yksiulotteinen taulukko on kuin rivitalo: selvittääksemme tietyn henkilön asunnon meidän tarvitsee tietää vain asunnon (järjestys-)numero.
Voimme esimerkiksi sanoa, että Pekka asuu rivitalon asunnossa nro 3, ja Maija asunnossa 0. Huomaa, että indeksit eli taulukon alkioiden laskeminen alkaa aina nollasta.
Jos taloja on useita, tarvitsemme talolle nimen, esim intola
. Jotta nyt voimme puhua Pekan osoitteesta, pitää meidän sanoa tavalla tai toisella sekä talon nimi että asunnon numero. Pelkkä 3
ei enää riittäisi (jos taloja voi olla monta), samoin kuin ei riittäsi pelkkä intola
(koska samassa talossa voi olla useita asuntoja). Niinpä jos joku kysyy misää Pekka asuu, voisimme sanoa
intola 3
Ohjelmointikielessä tarvitsemme tiukemman tavan yksilöidä tietty asunto. C#:issa tähän on valittu hakasulut:
intola[3]
Lisätietoa sulkumerkeistä kiinnostuneille: Hakasulkeiden käyttö taulukon indeksin ilmaisemiseksi voidaan katsoa olevan peräisin C-kielen kehityksestä ja valtavirtaistumisesta 1960-1970-luvuilla. Koska taulukon paikka pitää jotenkin erottaa muusta tekstistä, ja kirjoitusmerkkejä on kuitenkin näppäimistöllä rajallisesti, olivat hakasulkeet nähtävästi hyvä kompromissi. Esimerkiksi jos hakasulkeiden sijaan käytettäisiin kaarisulkuja, tulisi ongelmia erottaa taulukon indeksointi funktion kutsusta. Edelleen, aaltosulut on C#:issa varattu ohjelmalohkojen erottimiksi, joten nekään eivät käy taulukoihin. Nykyään kaikki suosituimmat ohjelmointikielet käyttävät indeksin ilmaisemiseen nimenomaan hakasulkeita.
1. Taulukon esittely
Taulukko esitellään sanomalla taulukon alkioiden tyyppi, hakasulut ja taulukon nimi. Esimerkiksi:
2. Taulukon luominen
Erona tavalliseen muuttujaan taulukkomuuttuja on "vain" viite itse taulukkoon joka on jossakin muualla. Itse taulukko pitää luoda new TYYPPI[koko]
kutsulla.
Ennen kuin taulukon alkioihin sijoitetaan arvot (kohta 3), ovat kaikki sen alkiot tyypin oletusarvossa. Lukujen (double, int, jne.) tapauksessa oletusarvo on nolla.
3. Taulukon alkioon sijoittaminen
Taulukon indeksit alkavat 0:sta. Taulukon alkioon voidaan sijoittaa uusi arvo
NIMI[INDEKSI] = LAUSEKE;
Esimerkiksi:
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:
Tässä ei kuitenkaan ole hirveästi järkeä ja siksi otetaan käyttöön silmukat:
Saman voi kirjoittaa myös muodossa:
ja tälle on lyhenteenä foreach
-silmukka:
6. Taulukkoja käsittelevien aliohjelmien testaaminen
6.1 Parametrina taulukko
Jos aliohjelmalle menee parametrina taulukko, voi tämän taulukon luoda etukäteen
Taulukko voidaan myös luoda ja alustaa samalla kun aliohjelmaa kutsutaan
Mikäli aliohjelman taulukko on esitelty params avainsanalla:
public static double Summa(params double[] luvut)
voidaan alkiot viedä taulukon lisäksi luettelona (toimii siis vain parametrilistan viimeisenä parametrina):
6.2 Tuloksena taulukko
Mikäli funktio palauttaa taulukon, on testaaminen helpointa kun muuttaa palautetun taulukon merkkijonoksi ja vertaa tätä jonoa:
Haasteita tulee jos on desimaaleja, koska desimaalimerkki vaihtelee. Tällöin pitää varmistaa tietty kulttuuri ennen testejä:
Toinen vaihtoehto on käyttää jotakin itse tehtyä Jonoksi
-aliohjelmaa, joka varmasti tuottaa haluttua desimaalisymbolia:
7. Linkkejä
- 2-ulotteiset taulukot
- 15. Taulukot
- Taulukot.cs - luennon 10 esimerkkejä taulukoista
- Luennon 12 esimerkkejä taulukoista
- Luento 10a, Luento 12a
These are the current permissions for this document; please modify if needed. You can always modify these permissions from the manage page.