6. Apstraktne tipovi podatka

Slides:



Advertisements
Similar presentations
Objektno orijentisano programiranje
Advertisements

Programiranje kroz aplikacije
1.6. Pohrana podataka.
Provisioning Windowsa 10 na IoT, mobilnim i desktop uređajima
Programi zasnovani na prozorima
Uvod u programiranje - matematika – VI predavanje
Petlje WHILE – WEND.
Implementacija stoga pomoću polja
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
Struktura i princip rada računara
Strukture, Unije, Upravljanje memorijom, C-Pretprocesor
B+ stablo Ramakrishnan Raghu, Gehrke Johannes - Database Management Systems (2000)(2nd ed.)
Programiranje - Blokovi naredbi i logički tipovi –
OSNOVE PROGRAMIRANJA U PROGRAMSKOM JEZIKU
Teorema o 4 boje(Four color theorem)
PROGRAMIRANJE MENIJA.
CheckBox RadioButton RadioGroup
Naredbe ciklusa.
Liste.
Projekat strukturnog kabliranja.
Upitni jezik SQL.
Microsoft Office 2007 MS Office je programski paket koji sadrži više programa: MS Word – program za obradu teksta MS Excel – program za izradu tabela sa.
Petlje FOR - NEXT.
PROGRAMSKE PETLJE Milenković Gabrijela.
Komponente izbora i kontejnerske komponente
Uvod u HTML Zoltan Geller 2017
Explore-plots Katarina Jeremić 143/2011 Jovana Vulović 33/2011
Klauzule GROUP BY i HAVING
KREIRANJE OBJEKATA.
Europski dan programiranja
Reference ćelije i opsega
LABORATORIJSKA VEŽBA VEŽBA 4
Elektrotehnički fakultet – Podgorica Operativni sistemi
14 UNUTRAŠNJE I ANONIMNE KLASE
Elementi programskog jezika PASCAL
Arrays and strings -1 (nizovi i znakovni nizovi)
Tipovi podataka.
Tabelarne kalkulacije 1
Pristup podacima Izvještaji
Naredba Case Višestruko grananje.
Element form Milena Kostadinović.
MessageBox.
Pojmovi digitalnog zapisa
Ključne reči,identifikatori, konstante i promenljive
Organizacija invertovano-indeksnih datoteka
PROGRAMSKI JEZIK PASCAL
MATEMATIČKI FAKULTET, UNIVERZITET U BEOGRADU
ELEKTRONIČKA POŠTA ( ) OTVARANJE RAČUNA.
Lazarus okruženje TIPOVI UNIT-a
Osnovni simboli jezika Pascal
Do While ... Loop struktura
Virtualizacija poslovnih procesa metodom „Swimlane“ dijagrama
Present and future tenses
Programiranje – Small Basic
Memorije Vrste memorija i osnovni pojmovi Ispisne memorije
Strukture podataka i algoritmi 5. VRIJEME IZVRŠAVANJA ALGORITMA
Nizovi.
C++ WORKSHOP Šimec Tino - FOI.
Skup instrukcija procesora
Naredbe u php-u.
Programski jezik C++ - Vježbe - 5. dio
Programski jezik Python
LimeSurvey Uvjetni prikaz pitanja Internetska istraživanja
7. Baze podataka Postavke MS Accessa.
Ponavljanje Pisana provjera
INTERPOLACIJA PO DIJELOVIMA POLINOMIMA
Vježbenica 2: struktura grananja – 2.dio
Presentation transcript:

6. Apstraktne tipovi podatka Pod ATP podrazumevamo skup elemenata od kojih svaki čuva nekakav podarak i povezan je sa jednim ili više drugih elemenata. ATP ima ugrađene unutrašnje operacije koje mogu biti izvršene na njemu ili pomoću njega. Korisnik ATP ne mora imati nikakve informacije o unutrašnjoj reprezentaciji podataka i operacija. ATP se prirodno realizuju kao dinamičke strukture podataka, međutim, mogu se koristiti i statičke strukture (npr. nizovi) za njihovu realizaciju.

Prilikom rada sa ATP u C-u potrebno je: opisati tip, na jedan apstraktan način, uključujući i opis operacija; definisati funkcijski interfejs (tj. način) za predstavljanje novog tipa podataka; opisati kod u C-u za implementaciju opisanog interfejsa. U ATP spadaju: povezane liste, stekovi redovi, grafoidne strukture (grafovi), drvoidne strukture (drveta) , ...

6.1. Povezane liste (obrađene!) Povezan1.cpp s1 s1

6.1. Povezane liste (obrađene!) Povezan1.cpp s1 s1

6.1. Povezane liste (obrađene!) Povezan1.cpp s1 s2 s1

6.1. Povezane liste (obrađene!) Povezan1.cpp s1 s2 s1

6.2. Stekovi Stek je struktura podataka organizovana po principu LIFO (Last In First Out). Naime, poslednji unet podatak u stek prvi se uzima iz steka (ZUPI). Sreće se i naziv magacina (magacinska memorija) ili stog. Stekovi se često generišu pomoću povezanih lista. Postoje 2 osnovne operacije nad stekovima: ubaci (pop) u stek i izbaci (push) iz steka. One služe za smeštanje i uzimanje podatka. Kada se realizuju pomoćupokazivača, dovoljan je jedan pokazivač (u oznaci vrh, top, ...) koji ukazuje na vrh steka, tj. na poslednji uneti element u stek. Stekovi imaju veliku primenu u računarstvu: za relizacijeu rekurzije, kod prevodilaca, kod mikroprocesira, ...

6.2.1. Operisanje sa stekom Akcija Sadržaj steka push(A) A push(B) B A push(C) C B A pop( ) nalazi C push(F) F B A pop( ) nalazi F pop( ) nalazi B pop( ) nalazi A Prazan

6.2.2. Realizacija steka preko nizova (za cele brojeve) int stack[MAX]; int vrh=0; /* vrh steka */ /* Postavljanje elementa u stek */ void push(int i) { if(vrh >= MAX) { printf ("Stek je pun\n"); return; } stack[vrh] = i; vrh++; /* Uzimanje elemenata sa vrha steka */ int pop (void) { vrh--; if(vrh < 0) { printf("Potkoracenje steka\n"); return 0; } return stack[vrh]; Stekniz.cpp Srekpok.cpp

6.2.3. Postfiksni kalkulator implementiran preko steka Osnovu programa čine sledeće funkcije i promenljive: int *p;   /* will point to a region of free memory */ int *tos; /* points to top of stack */ int *bos; /* points to bottom of stack */ /* Store an element on the stack. */ void push(int i) {   if(p > bos) {     printf (''Stack Full\n");     return;   }   *p = i;   p++; } /* Retrieve the top element from the stack. */ int pop(void) {   p--;   if(p < tos) {     printf ("Stack Underflow\n");     return 0;   }   return *p; }

6.3. Redovi Red je struktura podataka organizovana po principu FIFO (First In First Out). To je lista koja ima dva bitna svojstva: novi podatak se dodaje na kraj liste. podatak se uklanja (uzima) iz liste samo ako je na poćetku- Dakle, redovi se mogu definisati pomoću povezanih listi. Dve osnovne operacije su: ubaci u red (eng. Put) i uzmi iz reda (eng. Get).                                                                                                                                                                                                                                   

6.3.1. Operisanje sa redovima Akcija Sadržaj reda ubaci(A) A ubaci(B) A B ubaci(C) A B C uzmi( ) vrati A B C ubaci(D) B C D uzmi( ) vrati B C D uzmi( ) vrati C D RasporedSast.cpp

6.4. Dvostruko povezane liste Dvostruko povezana lista je struktura podataka oblika: pod1 pod2 podn Dvostruko povezana lista može se implemetirati slično kao i jednostruko povezana lista. Najpre treba da se definiše čvor dvostruko povezane liste. On sadrži nekakav podatak i dva pokazivača (prethodni i sledeći) koji ukazuju na prethodni, odnosno na sledeći element. pod pred sled

6.5. Binarna drveta Definicija1. Drvo je konačan skup elemanata koji može biti prazan ili se sastojati iz jednog elementa nazvanog koren i nekoliko podskupova disjunktnih elemenata od kojih je svaki drvo za sebe. Alternativno: Drvo je povezan graf sa n čvorova i n-1 grana. Definicija2. Drvo čiji svaki čvor ima najviše dva poddrveta naziva se binarno drvo. Sreuktura za implementaciju binarnog drveta je slična strukturi za implementaciju dvostruko povezane liste. I ona će sadržati dva pokazivača, koje sada možemo nazavati levi i desni. (Ovako su mogli biti nazvani i kod dvostruko povezanih listi.)

Zadatak 1. Napisati program za: formiranje binarsnog drveta čiji čvorovi sadrže celobrojne vrednosti; prebrojavanje njegovih čvorova; računanje sume u čvorovima; računanje srednje vrednosti svih sadržaja čvorova drveta. Drvo1.cpp Koren drveta Listovi drveta

Zadatak 2. Napisati program za kreiranje binarnog drveta koje se sastoji iz niza celih, različitih brojeva. Ispitati da li se zadati broj nalazi u formiranom drvetu. Ako želimo završiti unos podataka u drvoidnu strukturu, unećemo broj -9999 koji s ene upisuje u drvo. Drvotrazi.cpp Zadatak 3. Napisati program za kreiranje binarnog drveta na isti način kao u zadatku 2, a zatim izvršiti sortiranje unetih podataka. Drvosort.cpp