4.6. Taulukot ja listat

Taulukkoon (engl. array) voi tallentaa arvoja samalla tavalla set-komennolla kuin tavalliseen muuttujaan laitetaan arvo. Arvoja tallennettaessa on annettava taulukon nimi ja paikka, johon arvo t aulukossa laitetaan.

Esimerkissä

set taulu(0) "nolla"

set taulu(1) "yksi"

set taulu(0)

=> nolla

sijoitetaan taulu-taulukkoon kaksi arvoa: paikkaan 0 sijoitetaan arvo nolla ja paikkaan 1 arvo yksi.

Tavallisesti muissa ohjelmointikielissä taulukon paikan pitää olla kokonaisluku, mutta Tcl-kielen taulukoissa paikka voi olla tavallinen merkkijono. Seuraavassa esimerkissä sijoitetaan taulu -taulukon paikkaan paikka_nolla arvo nolla.

set taulu(paikka_nolla) "nolla"

set taulu(paikka_nolla)

=> nolla

Taulukoita voidaan käyttää kuten moniulotteisia taulukoita (engl. multidimensional array), seuraavan esimerkin mukaisesti:

set taulukko(matti,nimi) "Matti Meikkis"

set taulukko(matti,osoite) "Mattilankuja 55"

set taulukko(maija,nimi) "Maija Meikkis"

set taulukko(maija,osoite) [set taulukko(matti,osoite)]

Nyt Matin tietojen voidaan vaikka sanoa olevan paikoissa (0,0) ja (0,1), jos ajatellaan esimerkiksi perinteistä C-kielen taulukkoa. Vastaavasti ajateltuna Maijan tiedot ovat paikoissa (1,0) ja (1,1). Taulukossa 4.1 on esitet ty taulukon taulukko sisältö edellisen esimerkin jälkeisten sijoituksien jälkeen.

 

 

nimi

Osoite

matti

Matti Meikkis

Mattilankuja 55

maija

Maija Meikkis

Mattilankuja 55

Taulukko 4.2. Tcl-kielen taulukko ajateltuna fyysisenä taulukkona.

Taulukoita voi käsitellä array-komennolla, jolle annetaan parametrina taulukon nimi ja optio. Se kertoo, mitä taulukolle halutaan tehdä. Komennolla array vo i tutkia taulukon olemassaoloa, alkioiden määrää ja etsiä arvoja taulukosta. Seuraavassa esimerkissä saadaan tietää optiolla size, kuinka monta alkiota (engl. elements) taulukossa taulukko on.

array size taulukko

=> 4

Listoihin (engl. list) voi tallentaa yksittäisiä alkioita (arvoja) määrättömän määrän. Listat ovat tavallaan alkioiden joukkoja, joita voidaan hallita kokonaisuuksina. List a voidaan tallentaa tavalliseen muuttujaan käyttämällä kaarisulkeita, kuten seuraavassa esimerkissä:

set listanen {aatami beetami ceetami}

=> aatami beetami ceetami

Listan alkioina voi olla yksittäisten arvojen lisäksi myös toisia listoja seuraavan esimerkin tapaan:

set listanen {aatami beetami ceetami {a b c} }

=> aatami beetami ceetami {a b c}

Listoille on useita komentoja, joilla niitä voi muokata. Komento lindex palauttaa alkion listasta määrätystä kohdasta. Listan ensimmäinen alkio on paikassa 0. Täm&aum l; on hyvä muistaa, jotta osaa viitata listassa oikeaan alkioon. Esimerkissä

set ruoka_lista {juustoo maitoo leipää}

set listan_kolmas [lindex $ruoka_lista 2]

=> leipää

ruoka_lista-listasta saadaan arvo leipää listan paikasta 2.

Komennolla concat voi listoja yhdistää yhdeksi listaksi ja linsert-komennolla listaan voi lisätä alkion määrättyyn kohtaan. Esimerkissä

set karkki_lista {lakua jädeä}

set ruoka_lista {juustoo maitoo leipää }

set kauppa_lista [concat $karkki_lista $ruoka_lista]

=> lakua jädeä juustoo maitoo leipää

linsert $kauppa_lista 2 suklaata

set kauppa_lista

=> lakua jädeä suklaata juustoo maitoo leipää

liitetään ensin karkki_lista ja ruoka_lista listaksi kauppa_lista, jonka jälkeen siihen vielä lisätään su klaata.

Muita listoja koskevia komentoja ovat join, lappend, list, llength, lrange, lreplace , lsearch, lsort ja split, joista löytyy lisätietoa mm. lähteestä [WEL97W].


previous gif next gif
Luk-tutkielma: Tcl/Tk -opiksi ja iloksi.