This is an old revision of the document!


Strukture

Struktura (slog) podataka je skup više promenljivih koje su grupisane pod zajedničkim imenom radi lakše manipulacije. Strukture pomažu u organizovanju složenih podataka tako što omogućavaju grupisanje međusobno povezanih promenljivih na takav način da se one posmatraju kao celina, a ne kao pojedinačni entiteti.

Primer strukture može biti dosije studenta koji sadrži ime, prezime, adresu, broj indeksa itd. Elementi struktura mogu biti takođe strukture. Na primer, dosije studenta može da sadrži i podatke o položenim ispitima i ostvarenim ocenama. Drugi primer može biti tačka u ravni koja sadrži x i y koordinatu ili pravougaonik koji sadrži dve tačke.

Osnovno o strukturama

Da bismo pokazali neke osnovne osobine struktura 1) kreiraćemo nekoliko struktura pogodnih za korišćenje u grafici.

Osnovni objekat u grafici je tačka (posmatraćemo tačku u ravni), za koju ćemo pretpostaviti da je definisana celobrojnim koordinatama x i y.

Slika ### Tačka u ravni

Ovi podaci mogu biti smešteni u strukturu koja je definisana kao struct tacka { int x; int y; }

Slika ### Shematski prikaz strukture tacka

Struktura se deklariše korišćenjem rezervisane reči struct iza čega, unutar vitičastih zagrada, sledi spisak promenljivih koje pripadaju strukturi (u ovom slučaju celobrojna x i y koordinata). Neposredno iza reči struct može stajati i naziv strukture, takozvani strucure tag (u našem slučaju tacka). Ovaj naziv se može kasnije koristiti kao skraćenica za deklaraciju strukture.

Promenljive navedene unutar strukture se nazivaju promenljive članicama ili samo članice. S obzirom da su promenljive članice zatvorene unutar strukture, dve članice unutar različitih struktura mogu imati iste nazive.

Rezervisana reč struct definiše složeni tip podatka. Međutim, iza zatvorene vitičaste zagrade može biti navedena i lista promenljivih tog tipa, baš kao što je to slučaj i sa deklarisanjem promenljivih bilo kog drugog tipa. Na primer:

struct … { … } a, b, c;

deklariše a, b i c kao promenljive navedenog tipa i obezbeđuje memorijski prostor za njih, isto kao što linija

int a, b, c;

deklariše x, y i z kao promenljive tipa int.

Definicija strukure koja nije praćena promenljivama ne zauzima nikakav memorijski prostor, već samo opisuje sadržaj navedene strukture. Ukoliko definicija sadrži tag, ona se kasnije može koristiti za deklarisanje instanci te strukture. Tako se neka konkretna tačka može deklarisati kao:

struct tacka t;

čime je naznačeno da je promenljiva t struktura tipa struct tacka. Struktura može biti inicijalizovana tako što se iza njene deklaracije navodi znak dodele, a zatim u vitičastim zagradama lista inicijalnih vrednosti promenljivih unutar strukture:

struct tacka max_t = {1024, 768};

Struktura se takođe može inicijalizovati dodeljivanjem vrednosti neke druge strukure istog tipa. Članicama neke strukure se pristupa tako što se navodi naziv strukture iza koje sledi naziv promenljive članice odvojen tačkom:

naziv_strukture.clanica

Na primer, sledeća linija štampa koordinate tačke t:

printf(”%d,%d”, t.x, t.y);

a rastojanje između dve tačke bi se računalo kao:

rastojanje = sqrt( (double)t.x*t.x + (double)t.y*t.y );

Kao što smo ranije pomenuli, članice strukture mogu biti i druge strukture. Kao primer navodimo pravougaonik koji je definisan pomoću dve tačke (donje levo i gornje desno teme).

Slika ### Pravougaonik definisan pomoću dve tačke

Struktura koja opisuje pravougaonik se može definisati na sledeći način:

struct pravougaonik { struct tacka t1; struct tacka t2; }

Struktura pravougaonik sadrži dve strukture tacka. Ukoliko deklarišemo promenljivu slika kao

struct pravougaonik slika;

onda

slika.t1.x

označava x koordinatu donjeg levog temena slike.

Uzeto iz literature za predmet SPA2

Vrati se nazad 8-) Octave

 
nikola.andric.1328647410.txt.gz · Last modified: 2012/02/07 21:43 by milos.furtula
 
Except where otherwise noted, content on this wiki is licensed under the following license:CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki