h1. Tietue, struct
Tietue (struct) on erilaisten tietojen joukko, joka on yhdistetty yhden nimen alle. Tietueita käytetään tietokantojen yhteydessä, kun samaan tietojoukkoon täytyy tallettaa erityyppistä tietoa. Seuraavassa on esimerkki tietuemäärittelystä työntekijälle.
{code}
struct TyontekijaTiedot
{
char Sukunimi[50];
char Etunimi[50];
char Sotu[15];
int Palkka;
};
{code}
TyontekijaTiedot tietuerakenne voidaan ottaa käyttöön seuraavasti:
{code}
struct TyontekijaTiedot Tyontekija;
{code}
Nyt voidaan antaa työntekijälle nimi
{code}
strcpy(Tyontekija.Sukunimi,"Jokunen");
{code}
ja palkka
{code}
Tyontekija.Palkka=15000;
{code}
Edellä olevassa tavassa on se ongelma, miten esitellä 1000 työntekijää? Seuraavassa kappaleessa on osittainen vastaus tähän.
----
h1. Tietuetaulukot
Tietuetaulukon avulla voidaan esitellä monta tietuetta sisältävä tietokokonaisuus seuraavasti:
{code}
struct Varastohyllyt
{
char Nimike[50];
int Kolliluku;
};
int main()
{
int Paikka=0;
struct Varastohyllyt Hylly[1000];
strcpy(Hylly[Paikka].Nimike,"Kossu");
Hylly[Paikka].Kolliluku=10;
return 1;
}
{code}
Esitetty taulukkomäärittely soveltuu tapauksiin, joissa etukäteen tiedetään, kuinka monta jäsentä taulukkoon kuuluu. Osoittimien avulla voidaan käsitellä tietuetaulukoita joustavammin, palaamme niihin myöhemmin.
----
h2. Union
union on vaihtoehtorakenne, jolla voidaan vaihtoehtoisesti tallettaa haluttuun tietueen kohtaan toisen tyyppistä tietoa, esim:
{code}
union Luku // esitellään union:
{
int iArvo;
double dArvo;
};
void JokuFunktio()
{
struct Luku Eka,Toka;
int iLuku=5;
double dLuku=10.45;
Eka.iArvo=iLuku;
Toka.dArvo=dLuku;
}
{code}
----
h1. Union tietueen osana
Sellaisissa tapaksissa, joissa samaan tietueen kenttään halutaan tallettaa erityyppistä tietoa,
unionia käytetään tietueen osana.
{code}
struct TyontekTiedot
{
char sSukunimi[50];
char sEtunimi[50];
union ID
{
char sSotu[15];
int HenkiloID;
};
int Palkka;
}
{code}
---- |