Ero sivun ”C” versioiden välillä

Poistettu sisältö Lisätty sisältö
Tigru (keskustelu | muokkaukset)
→‎Merkkijonot: lohkaisen
Tigru (keskustelu | muokkaukset)
→‎Tietueet: lohkaisen
Rivi 35:
* [[/Merkkijonot/]]
 
==* [[/Tietueet ==/]]
 
Tietue on C-kielessä tapa koota useampia tietoalkioita yhdeksi loogiseksi kokonaisuudeksi.
Tietue määritellään varatulla sanalla '''struct''', jota seuraa tietueen nimi, sekä
lueteltuna tietueen kentät.
 
=== Tietueen määritteleminen ===
 
Määritellään uusi tietotyyppi 2d-avaruudessa sijaitsevaa pistettä varten:
 
struct point
{
double x;
double y;
};
 
Pistettä voidaan käyttää seuraavasti:
 
double distance;
struct point p1;
struct point p2;
p1.x = 1.1;
p1.y = 2.2;
p2.x = 3.3;
p2.y = 4.4;
distance = sqrt((p2.x - p1.x) * (p2.x - p1.x) + (p2.y - p1.y) * (p2.y - p1.y));
 
Tietueen kenttiin viitataan siis '''.''' - operaattoria käyttäen.
 
=== Tietueet ja abstraktit tietotyypit ===
 
Tietueiden avulla voidaan C-kielessä muodostaa abstrakteja tietotyyppejä (ADT = abstract data type).
On hyödyllistä määritellä edellä esitetyn pisteen käyttöä varten omat funktionsa:
 
struct point pointConstruct(double x, double y)
{
struct point p;
p.x = x;
p.y = y;
return p;
}
double pointDistance(struct point p1, struct point p2)
{
return sqrt((p2.x - p1.x) * (p2.x - p1.x) + (p2.y - p1.y) * (p2.y - p1.y));
}
 
Huomaa, että funktioissa on käytetty etuliitteenä (prefix) tietotyypin nimeä.
Tämä on hyvä käytäntö, sillä tällöin jo funktion nimestä käy ilmi
mitä abstraktia tietotyyppiä varten se on tehty.
 
Funktioita voidaan käyttää yksinkertaisesti seuraavasti:
 
double distance;
struct point p1;
struct point p2;
p1 = pointConstruct(1.1, 2.2);
p2 = pointConstruct(3.3, 4.4);
distance = pointDistance(p1, p2);
 
= Liitteet =
Noudettu kohteesta ”https://fi.wikibooks.org/wiki/C