You are on page 1of 7

REKURZIVNI POTPROGRAMI

Rekurzija = nain definiranja koncepta, gdje se tekst definicije poziva na sam koncept Rekurzivni potprogram = potprogram koji poziva samoga sebe primjer: Fibonaccijev niz --> 1 1 2 3 5 8 ... Rekurzivni potprogram mora imati: 1) UVJET PREKIDA = vrijednost za koju se potprogram vie nede rekurzivno pozivati, najmanje je jedna vrijednost, svi rekurzivni pozivi moraju zavravati uvjetom prekida 2) REKURZIVNI POZIV = poziv potprograma unutar potprograma koji definiramo, svaki rekurzivni poziv treba biti takav da vodi prema uvjetu prekida Kako gledati na rekurzije ? raunalo ne zna rijeiti problem traenoga opsega (n), ali zna rijeiti problem bilo kojeg drugog opsega ( n -1, n-2, n/2...) pronadi vezu izmeu problema traenoga opsega i nekog drugog opsega Rekurzivna obrada nizova: najede radnje s nizovima --> najvedi i najmanji element, traenje elemenata u nizu, sortiranje nizova... raunalo ne zna radnju obaviti za dani niz od n elemenata, ali za manji broj elemenata zna napraviti bilo koju radnju. Najvedi element niza - zadan je niz, raunalo ne zna pronadi najmanji element niza, ali zna nadi najvedi element od sljededeg, najvedi element niza a od n elemenata je vedi od sljededa dva broja, svaki od navedenih maximuma niza raunalo zna pronadi. Sortiranje niza metodom zamjene susjednog elementa niza: postupak kojim elimo bilo koju kombinaciju ulaznih podataka postaviti u uzlazni ili silazni redoslijed. postoje razni algoritmi koji se meusobno razlikuju po sloenosti i brzini brzina algoritma je vana kad moramo sortirati veliki broj podataka Binarno pretraivanje niza: zadan je cjelobrojni niz a od n elemenata koji su sortirani uzlazno, treba odrediti na kojem se mjestu nalazi zadani broj x. odredimo indeks srednjeg elementa, ako je vrijednost elementa na sredini jednaka x oito je pozicija elementa sredina ako je x vedi od broja na sredini, onda ga traimo u desnom dijelu niza ( od sredine + 1 do n) ako je x manji od broja na sredini, onda ga traimo u lijevom dijelu niza ( od 1 do sredina -1 ) voditi rauna kako de ovaj algoritam raditi kada x ne bude u nizu Uvjet prekida: ako je poetak > kraja: element ne postoji, rjeenje je -1 I ako je a*sredina+ = x : rjeenje je sredina Rekurzivna relacija: ako je a*sredina+<x : rjeenje je u desnom dijelu niza (od sredina + 1 do kraj) I ako je a*sredina+ >x : rjeenje je u lijevom dijelu niza Rekurzivno sortiranje niza - QuickSort: raunalo ne zna sortirati dani niz ali npr. zna sortiratti svaki od sljededih nizova.. preostaje nam na neki nain spojiti sortirane nizove

podijeliti niz na dva dijela tako da su svi elementi prvog dijela manji od svih elemenata drugog dijela, odabrati neki element niza, imati dvije kazaljke, prva(i) ide od poetka prema kraju niza ( od 1 do n), druga (j) ide od kraja prema poetku (od n prema 1), povedavamo kazaljku sve dok ne doemo do elementa vedeg od t, smanjujemo kazaljku j sve dok ne doemo do elementa koji je manji od k, ovo ponavljamo sve dok se kazaljke ne poklope (dok j ne postanje manji od i)

Algoritam: ovisi o: raunalo moe u 1 koraku usporeivati samo 2 broja, logino je krenuti od nekog poznatog algoritma, koristiti algoritam za traenje najmanje vrijednosti kod traenja najmanje vrijednosti pamtimo njeno redno mjesto nakon pregledanog intervala zamjenjujemo mjesta najmanjeg i onog na poetku intervala poetak intervala nam se u svakom koraku pomie za jedno mjesto for pocetak:= 1 to n-1 do begin i min:=pocetak for j= pocetak + 1 to n do begin if v[j] < v [i min] then imin:=j; end; t:=v[min]; v[min]:=v[pocetak]; v[pocetak]:=t; end. Permutacije: razmjetaj elemenata tog skupa za neki skup od n razliitih elemenata zanimaju nas sve permutacije tih elemenata, odnosno svi naini na koji se ti elementi mogu razmjestiti. raunalo ne zna pronadi sve permutacije od skupa n do elemenata ali zna pronadi permutacije skupa od neto manje elemenata, jedan po jedan element skupa dovodimo na prvo mjesto te ga fiksiramo a ostale elemente permutiramo. Parametri procedure su: niz koji elimo permutirati, broj elemenata niza, koliko elemenata je fiksirano. Uvjet prekida je kada je broj fiksiranih elemenata jednak broju elemenata i tada ispisujemo niz.

SLOG
Slog (eng. record) je sloena vrsta podataka koja se sastoji od komponenata razliitih vrsta, u polju ima samo jedna vrsta naredbi. Skup svih polja u jednom redu, svaki slog ima istru strukturu, ali razliit sadraj. (Polje se nalazi u presjeku reda i stupca tablice) Opdi oblik:

Type slog = record Komponenta 1 vrsta 1 Komponenta 2 vrsta 2 End; Var s:slog;

DATOTEKE
Skup binarnih podataka koji su spremljeni na medij, dostupni u programu za itanje ili za pisanje. Postoje tekstualne i binarne datoteke. Slui za uvanje podataka. Datoteka je sa svojim sadrajem fiziki smjetena van programa i nalazi se na permanentnom mediju (Hard Disk npr) Razlika u tekstualnoj i binarnoj datoteci ovisi samo o standardnoj oznaci za kraj linije u odgovarajudem operacijskom sustavu Tekstualne datoteke o Poseban tip podataka, postoji posebno ime za taj tip, to je text. o Osnovni element tekstualne datoteke je znak. Datoteka sadri tekst, u nju se pie i iz nje se ita pomodu stringova. o Tekstualne datoteke postoje neovisno od programa, imaju vlastite identifikatore i u programu se moraju povezivati s vlastitim imenom koje je nezavisno od programa (assign) 1. Najava varijable koja de nam sluiti za rad s tekstualnom datotekom var f:text; 2. Spajanje s fizikom datotekom koja se negdje nalazi var f:text; assign(f,'c:\dokument.txt'); 3. Naini otvaranja datoteke I. reset(f); otvaramo novu datoteku za itanje, koristi se pod pretpostavkom da datoteka vec postoji nezavisno od toga sadri li neke podatke ili je prazna. Ona potencijalne podatke ne dira i postavlja prvi element za tekuci element. Procedura reset datoteku otvara u ''read-only'' formatu. II. rewrite(f); ako datoteke nema, stvara se nova, prazna datoteka; ako otvorimo punu datoteku, obrisat de je. Poslije izvrenja ove procedure datoteka se sastoji od jedne prazne lokacije koja je tekuda. Otvara datoteku u ''write-only'' rezimu, tj. kada otvorimo datoteku ovom procedurom, u nju je mogude samo upisivanje. III. Append(f); dodavanje teksta, mijenjanje teksta. Otvara datoteku kao da je izvrena procedura reset, ali se marker tekudeg elementa postavlja na kraj datoteke i u nju sada moemo upisivati nove podatke iza postojedih. Datoteka mora prije postojati. 4. Naredbe za itanje/pisanje: I. Write(f,x); x je varijabla koja se zapisuje u datoteku

II. Writeln(f,x); III. Read(f,x); IV. Readln(f,x); 5. Funkcije: I. Eoln(f); provjerava je li kraj reda II. Eof(f); provjerava je li kraj datoteke. Ugraena je funkcija koja vrada promjenjivu logikog tipa. Vrijednost vradene promjenjive je true, ali je kao tekudi element oznaen element iza posljednjeg nepraznog. U suprotnom se vrada false. 6. Zatvaranje: I. Close(f); Binarne datoteke: o Zapisani identino onom koje su varijable zapisane u memoriji o Imaju izravan pristup podacima o Niz podataka tipa chat, tj. tip char standardno odgovara jednome byteu 1. Najava varijabli: I. Var f:file of vrsta_podataka; 2. Pridruivanje: I. Assign(f,'put_do_datoteke'); 3. Otvaranje: I. Rewrite(f); nova prazna datoteka de se stvoriti II. Reset(f); otvaranje postojede datoteka, nalazimo se na prvom slogu datoteke. 4. Naredbe za itanje i pisanje: =uvijek se ita jedan po jedan podatak I. Read(f,varijabla); II. Write(f,varijabla); 5. Posebne funkcije i naredbe: I. Filesize(f); vrada ukupan broj zapisa u datoteku kao veliinu, polje slogova= jedan cijeli zapis, nema funkcije za kraj datoteke, krede se od 1.do zadnjeg zapisa II. Filepos(f); vrada trenutanu vrijednost pokazivaa (mjesto na kojem se nalazi) III. Seek(f,m); postavlja pokaziva na mjesto s oznakom m 6. Zatvaranje I. Close(f); Binarne datoteke i slog: o Dobijemo bazu podataka koju kasnije moemo mijenjati.

GRAFIKA
Inicijalizacija grafikog naina rada Modul graph Naredbe: o DetectGraph(GraphDriver,Graphmode) --> omoguduje da pascal koliko ima pixela po irini i duini o InitGraph(GraphDriver,GraphMode,Paths); o CloseGraph; o delay => usporava rad raunala, t u milisekundima o setcolor(c) o floodfill --> za bojanje Koordinate ekrana: o Getmaxx, Getmaxy : vrada maks koordinatu na x odnosno y osi ekrana o Getx, Gety: vrada trenutnu poziciju o Moveto(x,y:integer): pozicioniranje na toku s kordinatama x,y Toke, duine, pravokutnici: o Putpixel(x,y:integer, color:word); [color je 8bitna vrijednost] o Line(x1,y1,x2,y2:integer); o LineTo(x,y:integer); [uzastopne linije] o Rectangle(x1,y1,x2,y2:integer); [pravokutnik, prazan] o Bar(x1,y1,x2,y2:integer); [pun pravokutnik] o SetFillStyle(Pettern, Color:word); [da bi postavili nekakav stil ispunjen nam oznaka uzorka] o Circle(x,y,r:integer); DINAMIKO PROGRAMIRANJE Tehnika oblikovanja rjeenja Rastavljanje kompliciranog problema na manje potprobleme/korake Stanje, relacije, inicijalizacija, poredak elemenata ''mijenja'' prostor za vrijeme kod kratak, jako ga je teko smisliti vrijeme smiljanja je due od vremena kodiranja Zadaci pogodni za rjeavanje dinamikim programiranjem: oni koji su rjeivi na taj nain i za rjeavanje statikih problema postoje ogranienja, to ako radimo s jako velikim brojevima ? Primjeri zadataka: problem ruksaka mnoenje matrica --> moe i preko polja, ali bolje preko dinamikog programiranja pretraga --> podaci sloeni da ukazuju na neke druge podatke, razgranata u dva smjera ili vie

Dinamike varijable: memorijski prostor se rezervira i oslobaa po potrebi pokazivai (^) heap high stach bss data, text (nes tamo nacrtano) Kreiranje dinamike varijable: o Dinamika varijabla ne postoji sve dok se ne kreira u tijeku izvrenja programa o Naredba new(); rezervira memorijsko prostor za dinamiku varijablu, pokazivakoj varijabli dodjeljuje adresu dinamike varijable o Vrijednost nil Ukidanje dinamike varijable

Pokazivai

sadre adresu memorijske lokacije na kojoj se nalazi vrijednost druge varijable dinamika vrsta podataka znak ^ primjena: aritmetika pokazivaa, vezane liste, redovi, binarna stabla NAJAVA POKAZIVAA: Type naziv_pokazivaca:^tip_podataka; Var pok:naziv_pokazivaca; Ili Var pok:^tip_podataka; Primjeri: o Pokaziva koji pokazuje na adresu memorijske lokacije na kojoj se nalazi cjelobrojna vrijednost: Type intpok:^integer; Var pok:intpok; Ili Var pok:^integer; o Pokaziva koji pokazuje na sloenu strukturu tipa slog: Type pokazivac=1 ucenik; ucenik=record ime=stringM sljedeci:pokazivac; end; var pok:pokazivac;

Vezane liste Dinamike linearne strukture povezane pomodu pokazuvaa Element vezane liste je zapis(record) Svaki element sadri pokaziva na sljededi element liste Kraj liste oznaava pokaziva NIL Jednostruko i dvostruko vezane liste, redovi (binarna stabla)

Primjer deklaracije: type pokazivac=^ucenik; Ucenik=record Ime:string[20] sljedeci:pokazivac; End; Var pocetak, trenutni:pokazivac; Opracije s elementima vezane liste: dodavanje i brisanje elemenata, ispisivanje vrijednosti elemenata, pretraivanje liste, sortiranje elemenata liste

You might also like