Programski jezici Strukturni tipovi podataka Strukturni tipovi podataka

  • Slides: 50
Download presentation
Programski jezici Strukturni tipovi podataka

Programski jezici Strukturni tipovi podataka

Strukturni tipovi podataka Polja n Zapisi n Skupovi n Datoteke n

Strukturni tipovi podataka Polja n Zapisi n Skupovi n Datoteke n

Strukturni tipovi n Prisutni u svim višim programskim jezicima Nizovi n Slogovi n Skupovi

Strukturni tipovi n Prisutni u svim višim programskim jezicima Nizovi n Slogovi n Skupovi n Datoteke n Pascal uvodi pojam strukturnih tipova podataka n Jednorodne ili raznorodne strukture podataka n

Polja n n Jednodimenzionalne ili višedimenzionalne strukture podataka koje obuhvataju više vrednosti istog tipa

Polja n n Jednodimenzionalne ili višedimenzionalne strukture podataka koje obuhvataju više vrednosti istog tipa Jednodimenzionalna polja – vektori Višedimenzionalna polja – matrice Ključna reč array za opis polja n type VEKTOR = array[1. . 10] of integer;

Definisanje polja n Definisanje polja VEKTOR od 10 elemenata tipa float n n type

Definisanje polja n Definisanje polja VEKTOR od 10 elemenata tipa float n n type VEKTOR = array[1. . 10] of float; Definisanje dve varijable tipa VEKTOR n var A, B: VEKTOR; Varijable A i B odgovaraju strukturama podataka sa po 10 elemenata tipa float n Pristup komponentama vektora pomoću indeksa n A(I) – opšti slučaj n A[I] – Pascal n

Pristup elementima polja Pristup pomoću indeksa koji određuje element u okviru strukture n Indeks

Pristup elementima polja Pristup pomoću indeksa koji određuje element u okviru strukture n Indeks je u opštem slučaju celi broj n Indeks može da bude definisan i kao celobrojni izraz n n n A(2*I+1) Indeksirane promenljive se koriste u programu kao i proste promenljive odgovarajućeg tipa A(3): =0. 0; n X: =A(3); n

Indeksni tip n Tip indeksa u jeziku Ada može biti bilo koji diskretni tip

Indeksni tip n Tip indeksa u jeziku Ada može biti bilo koji diskretni tip n Intervalni tipovi u funkciji indeksa

Memorijski prostor Polja se realizuju kao statičke strukture podataka n Unapred se rezerviše potreban

Memorijski prostor Polja se realizuju kao statičke strukture podataka n Unapred se rezerviše potreban memorijski prostor u memoriji računara n Granice indeksa u definiciji tipa mogu biti date i preko promenljivih i izraza čija vrednost mora biti poznata u tački definicije tipa u programu n type VEKTOR 1 = array[1. . N] of float; n type VEKTOR 2 = array[N. . N+M] of float; n

Dodeljivanje na nivou polja n Vektori istog strukturnog tipa mogu se dodeljivati jedan drugom,

Dodeljivanje na nivou polja n Vektori istog strukturnog tipa mogu se dodeljivati jedan drugom, na nivou strukture ili pojedinačnih komponenti

Dodeljivanje i eksplicitna ekvivalentnost n Ako su dva vektora definisana u okviru različitih tipova

Dodeljivanje i eksplicitna ekvivalentnost n Ako su dva vektora definisana u okviru različitih tipova koji su strukturno jednaki, sva međusobna dodeljivanja su nekorektna u slučaju eksplicitne ekvivalentnosti

Anonimne definicije strukturnih tipova Definicija strukturnih tipova bez eksplicitnog definisanja i imenovanja tipa n

Anonimne definicije strukturnih tipova Definicija strukturnih tipova bez eksplicitnog definisanja i imenovanja tipa n Obično važi strukturna ekvivalentnost na nivou naredbi dodeljivanja, a u novije vreme eksplicitna ekvivalentnost n

Neograničena polja Mogućnost definisanja polja sa neograničenim opsegom indeksa (Ada) n Definisanje klase strukturnih

Neograničena polja Mogućnost definisanja polja sa neograničenim opsegom indeksa (Ada) n Definisanje klase strukturnih tipova koja se u konkretnoj definiciji tipa bliže određuje n

Neograničena polja i podtipovi Definisanje konkretnih tipova podataka, kao podtipova tipa sa neograničenim indeksom

Neograničena polja i podtipovi Definisanje konkretnih tipova podataka, kao podtipova tipa sa neograničenim indeksom n Podtipovi međusobno kompatibilni jer potiču od istog roditeljskog tipa n

Višedimenzionalna polja Potreba za višedimenzionalnim strukturama podataka pri rešavanju mnogih problema n Jednorodne strukture

Višedimenzionalna polja Potreba za višedimenzionalnim strukturama podataka pri rešavanju mnogih problema n Jednorodne strukture podataka n Pojedinačnim elementima se pristupa pomoću dva ili više indeksa n Dvodimenzionalne strukture – matrice za rešavanje široke klase problema sa matričnom reprezentacijom podataka n

Definisanje višedimenzionalnih polja

Definisanje višedimenzionalnih polja

Atributi polja Postoje u pojedinim programskim jezicima i koriste se za bliže određivanje strukture,

Atributi polja Postoje u pojedinim programskim jezicima i koriste se za bliže određivanje strukture, slično kao kod elementarnih tipova podataka n Isti skup atributa se koristi za strukturni tip i za pojedinačne strukture (Ada) n A_TIP'LENGTH i A'LENGTH daju broj elemenata strukture n A_TIP'RANGE i A'RANGE daju opseg indeksa n A_TIP'FIRST i A_TIP'LAST daju prvu i zadnju vrednost indeksa n A(A_TIP'FIRST) prvi element strukture A n

Zapisi (slogovi) su strukture podataka koje se, za razliku od polja, sastoje od komponenti

Zapisi (slogovi) su strukture podataka koje se, za razliku od polja, sastoje od komponenti (segmenata) različitog tipa. n Definišu se preko eksplicitnih definicija odgovarajućih strukturnih tipova podataka ili preko anonimnih opisa tipova. n

Definisanje zapisa type DATUM is record mesec : (jan, feb, mar, apr, maj, jun,

Definisanje zapisa type DATUM is record mesec : (jan, feb, mar, apr, maj, jun, jul, avg, sep, nov, dec); dan : integer range 1. . 31; godina : integer range 1900. . 2100; end record;

Pristup elementima zapisa n Pristup elementima preko selektora danas, sutra : DATUM; danas. mjesec

Pristup elementima zapisa n Pristup elementima preko selektora danas, sutra : DATUM; danas. mjesec : = dec; sutra. dan : = 14; danas. dan : = sutra. dan;

Dodela vrednosti zapisu n Obično postoji mogućnost dodele vrednosti celom zapisu danas : =

Dodela vrednosti zapisu n Obično postoji mogućnost dodele vrednosti celom zapisu danas : = (dec, 13, 1994); -- Najčešće se koristi danas : = DATUM(dec, 13, 1994); -- Pascal danas : = (mesec => dec, god => 1994, dan => 13); --Ada

Nizovi zapisa n Jednom definisani strukturni tipovi mogu se koristiti za definisanje novih strukturnih

Nizovi zapisa n Jednom definisani strukturni tipovi mogu se koristiti za definisanje novih strukturnih tipova type PRAZNIK is array (1. . 10) of DATUM; Raspust : PRAZNIK; Raspust(1) : = (29, dec, 2011);

Zapisi preko zapisa n Preko već definisanih zapisa mogu se definisati novi zapisi type

Zapisi preko zapisa n Preko već definisanih zapisa mogu se definisati novi zapisi type OSOBA is record Ime : String(1. . 10); Prezime : String(1. . 15); Dan_rodj : DATUM; end record; Student, Ja, Ti : OSOBA; Student : = ("Ana", "Petrovic", (14, maj, 1970)); Ja. Dan_rodj. godina : = 1953;

Zapisi sa varijantama n Definisanje zapisa sa segmentima koji se uključuju u strukturu zapisa

Zapisi sa varijantama n Definisanje zapisa sa segmentima koji se uključuju u strukturu zapisa zavisno od vrednosti nekog drugog segmenta zapisa

Naredba with u Pascalu Student : OSOBA; with Student do with Dan_rodj do begin

Naredba with u Pascalu Student : OSOBA; with Student do with Dan_rodj do begin mesec : = maj; dan : = 14; godina : = 1983 end; Student : OSOBA; with Student, Dan_rodj do begin mesec : = maj; dan : = 14; godina : = 1983 end;

Skupovi Skup - više elemenata objedinjenih nekim zajedničkim svojstvom (matematika) n U programskim jezicima

Skupovi Skup - više elemenata objedinjenih nekim zajedničkim svojstvom (matematika) n U programskim jezicima pojam skupa je nešto uži u odnosu na matematiku n Definisanje skupova pomoću struktura podataka i odgovarajućih strukturnih tipova (Pascal) n

Skupovi – primer program Skupovi(input, output); type Osnovne. Boje = (crvena, oranz, zelena, zuta,

Skupovi – primer program Skupovi(input, output); type Osnovne. Boje = (crvena, oranz, zelena, zuta, plava, violet); Boje = Set of Osnovne. Boje; var Sboja, Sboja 1, Sboja 2 : Boje; Jednaboja : Osnovne. Boje; B : Boolean; begin Sboja 1 : = [ crvena, zuta, violet ]; Sboja 2 ; = [ ]; Sboja 1 : = [ crvena, zuta, violet, oranz, zelena, plava ]; Sboja 2 : = [ plava ]; end.

Operacije nad skupovima Unija skupova n Presek skupova n Razlika skupova n Jednakost i

Operacije nad skupovima Unija skupova n Presek skupova n Razlika skupova n Jednakost i nejednakost skupova n Podskupovi n Pripadnost skupu n

Unija skupova Sboja 1 : = [ crvena, zuta, violet ]; Sboja 2 :

Unija skupova Sboja 1 : = [ crvena, zuta, violet ]; Sboja 2 : = [ plava, zelena ]; Sboja : = Sboja 1 + Sboja 2; Sboja : = [ crvena, zuta, violet ] + [ plava, zelena ];

Presek skupova Sboja 1 : = [ crvena, zuta, violet ]; Sboja 2 :

Presek skupova Sboja 1 : = [ crvena, zuta, violet ]; Sboja 2 : = [ plava, zelena, zuta ]; Sboja : = Sboja 1 * Sboja 2;

Razlika skupova Sboja 1 : = [ crvena, zuta, violet ]; Sboja : =

Razlika skupova Sboja 1 : = [ crvena, zuta, violet ]; Sboja : = Sboja 1 - [ zuta, violet ];

Jednakost i nejednakost skupova Sboja 1 : = [ crvena, zuta, violet ]; Sboja

Jednakost i nejednakost skupova Sboja 1 : = [ crvena, zuta, violet ]; Sboja 2 : = [ crvena, zuta, violet ]; Sboja : = [ crvena, zuta, violet, zelena ]; B : = Sboja 1 = Sboja 2; B : = Sboja 1 < > Sboja;

Podskupovi Sboja 1 : = [ crvena, zuta ]; Sboja 2 : = [

Podskupovi Sboja 1 : = [ crvena, zuta ]; Sboja 2 : = [ crvena, zuta, violet ]; B : = Sboja 1 < = Sboja 2; B : = Sboja 2 > = Sboja 1;

Pripadnost skupu Sboja 1 : = [ crvena, zuta ]; Sboja 2 : =

Pripadnost skupu Sboja 1 : = [ crvena, zuta ]; Sboja 2 : = [ crvena, zuta, violet ]; Jednaboja : = violet; B : = Jednaboja in Sboja 1; B : = Jednaboja in Sboja 2;

Definisanje uslova preko skupova if (I = 215) or (I = 220) or. .

Definisanje uslova preko skupova if (I = 215) or (I = 220) or. . . or (I = 275) or (I = 280) then. . . if I in [ 215, 220, 225, . . . , 280 ] then. . .

Datoteke Sekvencijalne strukture jednorodnih zapisa n Jednorodne strukture slične poljima n Broj elemenata se

Datoteke Sekvencijalne strukture jednorodnih zapisa n Jednorodne strukture slične poljima n Broj elemenata se ne definiše unapred n Podrazumeva se da datoteke fizički postoje van programa na nekom eksternom medijumu n Opisuju se sa file i postali su standardni u programskim jezicima nakon pojave ovog koncepta u Pascalu n

Primeri definicija const Limit = 10; type Opseg = 1. . Limit; Skup =

Primeri definicija const Limit = 10; type Opseg = 1. . Limit; Skup = set of Opseg; Vektor = array [Opseg] of real; Complex = record Re, Im : integer; end; Intdat = file of integer; Redat = file of real; Chdat = file of char; Skupdat = file of Skup; Vekdat = file of Vektor; Komdat = file of Complex;

Procedure F^– Baferska promenljiva n EOF(F) – Funkcija kraja datoteke n

Procedure F^– Baferska promenljiva n EOF(F) – Funkcija kraja datoteke n

GET i PUT

GET i PUT

Primer Program kojim se sadržaj datoteke A preslikava u datoteku B: program Datoteke: type

Primer Program kojim se sadržaj datoteke A preslikava u datoteku B: program Datoteke: type Dat = file of integer; var A, B : Dat; begin reset (A); rewrite (B) ; while not EOF(A) do begin B^ : = A^; GET (A); PUT(B); end.

Read i Write

Read i Write

Tekstualne datoteke n Datoteke čiji su elementi znaci ASCII kodirani n type Text =

Tekstualne datoteke n Datoteke čiji su elementi znaci ASCII kodirani n type Text = file of char;

Tekstualne datoteke

Tekstualne datoteke

Standardne datoteke INPUT i OUTPUT WRITE(CH) ekvivalentno sa WRITE(OUTPUT, CH) READ(CH) ekvivalentno sa READ(INPUT,

Standardne datoteke INPUT i OUTPUT WRITE(CH) ekvivalentno sa WRITE(OUTPUT, CH) READ(CH) ekvivalentno sa READ(INPUT, CH) WRITELN ekvivalentno sa WRITELN(OUTPUT) READLN ekvivalentno sa READLN(INPUT) EOF ekvivalentno sa EOF(INPUT) EOLN ekvivalentno sa EOLN(INPUT)

Datoteke u C-u FILE struktura koja je kao specijalan tip podataka definisana u stdio.

Datoteke u C-u FILE struktura koja je kao specijalan tip podataka definisana u stdio. h n Definicija pokazivača datoteke n FILE *pok_dat; n Korišćenjem ovog pokazivača ostvaruje se pristup datoteci

Procedure u C-u n FILE *fopen(char* ime_datoteke, char* modus) n modus – znakovni niz

Procedure u C-u n FILE *fopen(char* ime_datoteke, char* modus) n modus – znakovni niz koji pokazuje dozvoljeni način pristupa datoteci n Funkcija vraća pokazivač na datoteku koja je otvorena, ili NULL ako datoteka nije mogla da bude otvorena FILE *pok_dat; pok_dat = fopen("datul", "r");

Procedure u C-u n int fclose(FILE *pok_datoteke) Ovom funkcijom se prekida veza koja postoji

Procedure u C-u n int fclose(FILE *pok_datoteke) Ovom funkcijom se prekida veza koja postoji između pokazivača datoteke i imena datoteke. Ukoliko je zatvaranje izvršeno uspešno, povratna vrednost ove funkcije je 0.

Procedure u C-u n Standardna funkcija za čitanje jednog znaka (bajta) iz datoteke int

Procedure u C-u n Standardna funkcija za čitanje jednog znaka (bajta) iz datoteke int fgetc(FILE *pok_dat) n Funkcije za upis jednog znaka (bajta) u datoteku int fputc(char c, FILE *pok_dat) Rezultat funkcije je upisani znak. n Funkcija za čitanje jednog reda iz tekstualne datoteke char *fgets(char *s, int maxbr, FILE *pok_dat) Učitava jedan red (niz znakova do znaka ‘n’) iz datoteke na koju ukazuje pok_dat. s je niz u koji se smešta učitani red, a maxb-1 je maksimalni broj znakova koji se mogu učitati. n Funkcija za upis jednog reda u tekstualnu datoteku char *fputs(char *s, FILE *pok_dat)

Procedure u C-u n Funkcija za formatirano čitanje podataka iz tekstualne datoteke int fscanf(FILE

Procedure u C-u n Funkcija za formatirano čitanje podataka iz tekstualne datoteke int fscanf(FILE *pok_dat, char *format [, arg]…) n Funkcija za formatirani upis podataka u tekstualne datoteke int fprintf(FILE *pok_dat, char *format [, arg]…)

Procedure u C-u n Funkcija za binarno čitanje int fread(void *ulaz, long vel, long

Procedure u C-u n Funkcija za binarno čitanje int fread(void *ulaz, long vel, long br, FILE *uldat) Iz binarne datoteke na koju ukazuje pok_dat učitava se br podataka veličine vel bajtova i to smešta počev od lokacije na koju ukazuje pokazivač ulaz. n Funkcija za binarni upis int fwrite(void *izlaz, long vel, long br, FILE *izdat) U binarnu datoteku na koju ukazuje pok_dat upisuje se br podataka veličine vel bajtova. izlaz je početna adresa od koje su smešteni podaci koji se prenose u datoteku.

Pitanja ? ? ?

Pitanja ? ? ?