230 likes | 436 Views
Uvod u programiranje I. jesen/zima 2007. Strukture. Grupni tip podataka – kolekcija (grupa) elemenata posmatrana kao celina Nizovi – grupni tip podataka čiji elementi imaju isti tip Strukture – grupni tip podataka čiji elementi mogu biti različitog tipa. Strukture.
E N D
Uvod u programiranje I jesen/zima 2007
Strukture • Grupni tip podataka – kolekcija (grupa) elemenata posmatrana kao celina • Nizovi – grupni tip podataka čiji elementi imaju isti tip • Strukture – grupni tip podataka čiji elementi mogu biti različitog tipa Uvod u programiranje I
Strukture • Primer: podaci o studentima • Ime i prezime • Datum rođenja • Godina studija • Prosečna ocena Uvod u programiranje I
Strukture • Primer: podaci o auto delovima • Naziv • Šifra • Cena • Količina na lageru Uvod u programiranje I
Strukture • Primer: podaci o auto delovima struct auto_deo { char naziv[80]; char sifra[10]; int kol; floatcena; }; Uvod u programiranje I
Strukture • naziv, sifra, cena, kol– članovi (polja) strukture • Deklaracija strukture samo opisuje strukturu i ne dovodi do rezervisanja memorije • Rezervisanje memorije se obavlja pri definisanju promenljivih tipa struct auto_deo Uvod u programiranje I
Strukture • struct auto_deo deo1, deo2; • struct auto_deo { char naziv[80]; char sifra[10]; int kol; floatcena; } deo1, deo2; Uvod u programiranje I
deo2 deo1 naziv naziv sifra sifra kol kol cena cena Strukture Uvod u programiranje I
Strukture • Deklaracija strukture struct ime-strukture { tip1 polje1; tip2 polje2; ... tipn poljen; }; Uvod u programiranje I
Strukture • Polja strukture mogu biti bilo kod tipa osim funkcija • Polja strukture mogu biti pokazivači • Polja jedne strukture mogu biti neke druge strukture (ali ne iste strukture) Uvod u programiranje I
Strukture • Primer: podaci o radnicima struct datum { int dan; int mes; int god; }; struct radnik { char imeiprezime[50]; struct datum datum_rodjenja; struct datum datum_zaposlenja; }; Uvod u programiranje I
Strukture • struct radnik zaposleni; zaposleni imeiprezime dan datum_rodjenja mes god dan datum_zaposlenja mes god Uvod u programiranje I
Strukture • Korišćenje strukture • Pojedina polja strukture su obične promenljive odgovarajućeg tipa • Pojedina polja strukture se mogu koristiti bilo gde se promenljiva odgovarajućeg tipa može koristiti • Pojedina polja strukture se koriste upotrebom tačka-notacije Uvod u programiranje I
Strukture • Primer: struct auto_deo deo1, deo2; ... deo1.naziv = ”Karburator”; deo1.sifra = ”SJL-123”; deo1.kol = 23; deo1.cena = 99.9; deo2.naziv[0] = ’T’; scanf(”%d”, &deo2.kol); deo2.cena = 17.5; Uvod u programiranje I
Strukture • Primer: struct radnik zaposleni; ... printf(”Ime i prezime: %s”, zaposleni.imeiprezime); zaposleni.datum_rodjenja.dan = 13; zaposleni.datum_rodjenja.mes = 12; zaposleni.datum_rodjenja.god = 1960; zaposleni.datum_zaposlenja.dan = 1; zaposleni.datum_zaposlenja.mes = 1; zaposleni.datum_zaposlenja.god = 2000; Uvod u programiranje I
Strukture • Indirektno korišćenje struktura struct datum d; struct datum *p; ... p = &d; (*p).dan = 11; /* d.dan = 11; */ (*p).mes = 2; /* d.mes = 2; */ (*p).god = 2007; /* d.god = 2007; */ /* ekvivalentno */ p -> dan = 11; p -> mes = 2; p -> god = 2007; Uvod u programiranje I
deo1 deo2 naziv ”Volan” naziv ”ABC-000” sifra sifra 10 kol kol 195.0 cena cena Strukture • Inicijalizacija struktura struct auto_deo deo1={”Volan”, ”ABC-000”, 10, 195.9}, deo2; Uvod u programiranje I
deo1 deo2 naziv naziv ”Volan” ”Volan” ”ABC-000” ”ABC-000” sifra sifra 10 10 kol kol 195.0 195.0 cena cena Strukture • Kopiranje struktura struct auto_deo deo1={”Volan”, ”ABC-000”, 10, 195.9}, deo2; ... deo2 = deo1; Uvod u programiranje I
Strukture • Strukture mogu biti elementi nizova struct auto_deo lager[500]; lager 0 naziv 1 2 sifra . . . kol cena 498 499 Uvod u programiranje I
Strukture • Strukture mogu biti elementi nizova struct auto_deo lager[500]; ... lager[0].naziv = ”Auspuh”; lager[0].sifra = ”AAA-111”; lager[0].kol = 5; lager[0].cena = 299.9; ... lager[10].naziv[0] = ’A’; Uvod u programiranje I
Strukture • Struktura ne može sadržati samu sebe, ali može pokazivače struct auto_deo { char naziv[80]; char sifra[10]; int kol; floatcena; struct auto_deo *sled_deo; }; Uvod u programiranje I
Strukture • struct auto_deo deo1, deo2; deo1 deo2 naziv naziv sifra sifra kol kol cena cena sled_deo sled_deo Uvod u programiranje I
deo1 deo2 naziv naziv sifra sifra kol kol cena cena sled_deo sled_deo Strukture • deo1.sled_deo = &deo2; deo2.sled_deo = NULL; Uvod u programiranje I