Strukturni tipovi podataka

Slides:



Advertisements
Similar presentations
Predavanje br. 7 Formiranje GIS-a II Relacione klase.
Advertisements

Programiranje kroz aplikacije
1.6. Pohrana podataka.
Programi zasnovani na prozorima
v.as.mr. Samir Lemeš Univerzitet u Zenici
Računarstvo i informatika
Operativni sistemi.
RP3/predavanje08 Ugniježdeni tipovi Iznimke 10/11/2018
Java Hello world !.
PONAVLJANJE CheckBox Koristi se za rešavanje zadataka gde je potrebno omogućiti uključivanje ili isključivanje jedne ili više opcija. Važna svojstva: –Checked.
TCP/IP Poglavlje-10.
Algoritamske/programske strukture
Strukture, Unije, Upravljanje memorijom, C-Pretprocesor
Programi,Podaci,Varijable,Računanje- Uvod
C++ funkcije, stringovi, imenski prostor, memorija i fajlovi
Programiranje - Blokovi naredbi i logički tipovi –
OSNOVE PROGRAMIRANJA U PROGRAMSKOM JEZIKU
Pojam DBMS. Relacione baze podataka
Teorema o 4 boje(Four color theorem)
PROGRAMIRANJE MENIJA.
Naredbe ciklusa.
Liste.
Klauzule GROUP BY i HAVING
Programiranje u VB Uvod
Programiranje u VB Osnove
BAZA PODATAKA (Database) je skup međusobno povezanih podataka koji se čuvaju zajedno, tokom dužeg vremenskog perioda, i među kojima ima samo onoliko ponavljanja.
Uvod u programiranje - matematika – XI predavanje
Upitni jezik SQL.
Petlje FOR - NEXT.
REPEAT…UNTIL Naredbe ciklusa.
PROGRAMSKE PETLJE Milenković Gabrijela.
Komponente izbora i kontejnerske komponente
Uvod u HTML Zoltan Geller 2017
Објектно орјентисано програмирање
Klauzule GROUP BY i HAVING
KREIRANJE OBJEKATA.
Java Script.
Uvod u programiranje - matematika – X predavanje
Izrada web-stranica.
Arrays and strings -2 (nizovi i znakovni nizovi)
Reference ćelije i opsega
Elektrotehnički fakultet – Podgorica Operativni sistemi
Binarne datoteke u Pascalu
14 UNUTRAŠNJE I ANONIMNE KLASE
Elementi programskog jezika PASCAL
Arrays and strings -1 (nizovi i znakovni nizovi)
Vežba 1. Formatiranje teksta korišćenjem stilskih šablona
Struktura MAC adrese i Ethernet okvira
Besplatni softverski alati
Naredba Case Višestruko grananje.
M-datoteke.
Element form Milena Kostadinović.
MessageBox.
Pojmovi digitalnog zapisa
Ključne reči,identifikatori, konstante i promenljive
PROGRAMSKI JEZIK PASCAL
MATEMATIČKI FAKULTET, UNIVERZITET U BEOGRADU
Lazarus okruženje TIPOVI UNIT-a
6. Apstraktne tipovi podatka
Osnovni simboli jezika Pascal
Do While ... Loop struktura
Default konstruktor struct C{ int i; }; struct D{ D( ):i(1){ }
Programiranje - Uvod - Kolegij: Programski jezik C++
Strukture podataka i algoritmi 5. VRIJEME IZVRŠAVANJA ALGORITMA
Nizovi.
Naredbe u php-u.
Programski jezik Python
Mehanizmi agregacije *.
7. Baze podataka Postavke MS Accessa.
Ponavljanje Pisana provjera
Presentation transcript:

Strukturni tipovi podataka Programski jezici Strukturni tipovi podataka

Strukturni tipovi podataka Polja Zapisi Skupovi Datoteke

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

Polja 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 type VEKTOR = array[1 .. 10] of integer;

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

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

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

Memorijski prostor Polja se realizuju kao statičke strukture podataka Unapred se rezerviše potreban memorijski prostor u memoriji računara 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 type VEKTOR1 = array[1 .. N] of float; type VEKTOR2 = array[N .. N+M] of float;

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

Dodeljivanje i eksplicitna ekvivalentnost 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 Obično važi strukturna ekvivalentnost na nivou naredbi dodeljivanja, a u novije vreme eksplicitna ekvivalentnost

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

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

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

Definisanje višedimenzionalnih polja

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

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

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 Pristup elementima preko selektora danas, sutra : DATUM; danas.mjesec := dec; sutra.dan := 14; danas.dan := sutra.dan;

Dodela vrednosti zapisu 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 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 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 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 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) U programskim jezicima pojam skupa je nešto uži u odnosu na matematiku Definisanje skupova pomoću struktura podataka i odgovarajućih strukturnih tipova (Pascal)

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

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

Unija skupova Sboja1 := [ crvena, zuta, violet ]; Sboja2 := [ plava, zelena ]; Sboja := Sboja1 + Sboja2; Sboja := [ crvena, zuta, violet ] + [ plava, zelena ];

Presek skupova Sboja1 := [ crvena, zuta, violet ]; Sboja2 := [ plava, zelena, zuta ]; Sboja := Sboja1 * Sboja2;

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

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

Podskupovi Sboja1 := [ crvena, zuta ]; Sboja2 := [ crvena, zuta, violet ]; B := Sboja1 < = Sboja2; B := Sboja2 > = Sboja1;

Pripadnost skupu Sboja1 := [ crvena, zuta ]; Sboja2 := [ crvena, zuta, violet ]; Jednaboja := violet; B := Jednaboja in Sboja1; B := Jednaboja in Sboja2;

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 ]

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

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 EOF(F) – Funkcija kraja datoteke

GET i PUT

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 B^ := A^; GET (A); PUT(B); end; end.

Read i Write

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

Tekstualne datoteke

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.h Definicija pokazivača datoteke FILE *pok_dat; Korišćenjem ovog pokazivača ostvaruje se pristup datoteci

Procedure u C-u FILE *fopen(char* ime_datoteke, char* modus) modus – znakovni niz koji pokazuje dozvoljeni način pristupa datoteci 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 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 Standardna funkcija za čitanje jednog znaka (bajta) iz datoteke int fgetc(FILE *pok_dat) Funkcije za upis jednog znaka (bajta) u datoteku int fputc(char c,FILE *pok_dat) Rezultat funkcije je upisani znak. 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. Funkcija za upis jednog reda u tekstualnu datoteku char *fputs(char *s, FILE *pok_dat)

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

Procedure u C-u 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. 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 ???