2.10.1 Yleistä

Kuvitellaan, että pitäisi tehdä ohjelma, jota käytetään hiihtokilpailun tuloslaskennassa. Kustakin kilpailijasta tarvitaan useita tietoja: nimi, numero, lähtöaika, loppuaika, jne. Näitä tietoja varten tarvitaan erilaisia muuttujia, merkkijonomuuttuja nimelle, kokonaislukumuuttuja numerolle, jne. Miten muuttujat pitäisi määritellä? Kaikille kilpailijoille ei voi käyttää täysin erillisiä muuttujia, sillä kilpailijoita voi olla jopa useita satoja.

Eräs ratkaisu olisi käyttää taulukoita seuraavaan tapaan:

#define MAXLKM 100
...
string nimi[MAXLKM];
int numero[MAXLKM];
...

Tällöin ensimmäisen kilpailijan tiedot löytyisivät muuttujista nimi[0], numero[0], ... , toisen kilpailijan tiedot muuttujista nimi[1], numero[1] , ... , jne. Mutta tällöin saman kilpailijan tiedot eivät liity mitenkään toisiinsa, sillä ne ovat täysin eri taulukoissa. Luonnollisempaa ja loogisempaa olisi yhdistää kunkin kilpailijan tiedot yhteen ja samaan tietorakenteeseen, jolloin yhtä kilpailijaa voitaisiin käsitellä yhtenä kokonaisuutena. Tietueet ovat olemassa tällaista tilannetta varten.

Tietue on kokoelma yhteen kuuluvia muuttujia aivan kuten taulukkokin. Erona on, että taulukon kaikki muuttujat ovat aina täsmälleen samantyyyppisiä, kun taas tietueessa voi olla useita erityyppisiä muuttujia. Taulukon tapauksessa sen yksittäisiin muuttujiin voitiin viitata indeksin (numeron) avulla, mutta tietueille tämä ei olisi järkevää. Sen sijaan jokaisella tietueeseen kuuluvalla muuttujalla, kentällä, on oma tunnuksensa, jonka avulla siihen viitataan.