Professional Documents
Culture Documents
1
•-programiranje-
GENERACIJE
PROGRAMSKIH JEZIKA
I. GENERACIJA
• nastala je u ranim 50-tim godinama 20.st.
• strojni programski jezik koji se piše u binarnom obliku u
kakvom se nalazi i u memoriji za vrijeme njegovog
izvođenja
• stroj razumije takav jezik bez ikakvih tumačenja i točno
izvršava takve naredbe
• nema potrebe ni za kakvim prevođenjem ili
interpretiranjem
• međutim postoje velike teškoće u pisanju strojnog
programa koji je sastavljen od velikog broja 0 i 1
2
•-programiranje-
GENERACIJE
PROGRAMSKIH JEZIKA
• pri programiranju je potrebna izuzetna pažnja
• velike su mogućnosti pogrešaka
• pisanje programa traje vrlo dugo.
3
•-programiranje-
GENERACIJE
PROGRAMSKIH JEZIKA
II. GENERACIJA
• nastala je polovicom 50-ih godina 20. st.
• motiv: sastavljanje programa u strojnom jeziku vrlo
složeno i teško
• nastaje simbolički programski jezik
• programiranje se znatno olakšalo
• kôdovi operacija pišu se simbolima umjesto binarnog
načina pisanja
• simboli su obično kratice engleskih riječi koje označuju
operacije
4
•-programiranje-
GENERACIJE
PROGRAMSKIH JEZIKA
• adrese su također dobile simbolička imena, obično prema
značenju podatka koji se u njima smještaju
• takvi se simboli lakše pamte
• pisanje programa postalo je lakše, brže i sigurnije
• glavni predstavnik ove generacije je assembler
• assembler je niži simbolički jezik programiranja orijentiran stroju
(tj. prilagođen radu stroja)
• svaka instrukcija na strojnom jeziku ima svoj par u assembleru
(odnos 1:1)
• svaki se program napisan na assembleru mora prije unošenja u
stroj prevesti
• operaciju prevođenja izvršava poseban program prevoditelj
(translator-assembler)
5
•-programiranje-
GENERACIJE
PROGRAMSKIH JEZIKA
III. GENERACIJA
• karakteristike
• nezavisnost jezika o stroju (program se može izvoditi na različitim
strojevima)
• usmjerenost problemu (raznolikost zahtjeva koji se postavljaju
pred jezik)
6
•-programiranje-
GENERACIJE
PROGRAMSKIH JEZIKA
• predstavnici
• FORTRAN
• mali opseg ulaznih i izlaznih podataka
• vrlo kompleksne i komplicirane računske operacije
• COBOL
• vrlo velik broj podataka
• jednostavne računske operacije
• PL/1
• modularan
• slobodnog formata
• predviđen samo za velike sustave jer je bila
potrebna - za ono vrijeme - velika glavna memorija:
64 KB ili 256 KB
7
•-programiranje-
GENERACIJE
PROGRAMSKIH JEZIKA
IV. GENERACIJA
• pojavili su se početkom 80-tih godina
• potpuno novi principi i logika
• to su zapravo generatori aplikacija - ekspertni sustavi za
programiranje
• ne treba toliko poznavati programski kôd, ali treba jako
dobro poznavati procese
• važno je utvrditi što se traži, kakva informacija ili pregled
• stroju se prepušta da sam utvrdi kako će doći do željenog
rezultata
8
•-programiranje-
GENERACIJE
PROGRAMSKIH JEZIKA
• za većinu jezika IV. gen. pretpostavlja se da je
organizacija, memoriranje i imenovanje podataka već
izvršeno i to obično u obliku relacijske baze podataka
• nema standarda
9
•-programiranje-
GENERACIJE
PROGRAMSKIH JEZIKA
• svojstva programskih jezika IV. gen.
• orijentiranost korisniku (prijateljski odnos korisnika i
računala)
• dijaloški odnos (računalo odgovara na postavljena
pitanja i upućuje korisnika - meni)
• jednostavnost i veliko povećanje produktivnosti
programiranja
• manje mogućnosti pogrešaka, te brže i bolje
dotjerivanje
• kratkoća učenja (neki se jezici mogu naučiti za dva
dana)
• velika brzina obrade uz stvaranje maksimalnog opsega
rezultata
10
•-programiranje-
GENERACIJE
PROGRAMSKIH JEZIKA
V. GENERACIJA
11
•-programiranje-
TEHNOLOGIJE DANAŠNJICE
• generatori aplikacija
• objektne tehnologije
• otvoreni sustavi
• Organizacija
• manje, lako prilagodljivi timovi (SWAT = Specialists With
Advanced Tools)
• rad u timovima
• organizacija rada oko vrijednosnih tokova
• Oruđa
• repozitorij rješenja (Repository-Based Team Development)
• integriranost (razvoja, okoline, zbirki podataka)
13
•-programiranje-
VRSTE PROGRAMSKIH JEZIKA
• strojni
• simbolički
• neproceduralni
• proceduralni
• generatori aplikacija
14
•-programiranje-
VRSTE INSTRUKCIJA
• najvažnije vrste instrukcija:
• instrukcije ulaza/izlaza (npr. čitanje i pisanje)
• pomoću njih dolazi do izmjene informacija između
računala i okoline
• instrukcije grananja
• prekidaju slijedno izvršavanje programa
• instrukcije računanja
• +, -, /, *, **, …
• logičke instrukcije
• njima se ispituje neka vrijednost, uspoređuju dvije
veličine, utvrđuje predznak i sl.
• instrukcije prijenosa
• njima se izvršava prijenos podataka unutar
središnje jedinice s jednog mjesta na drugo
15
•-programiranje-
PREVODITELJI I TUMAČI
• prevođenje je postupak kojim se simbolički (izvorni)
program kao cjelina prevodi uz pomoć programa
prevoditelja u program na strojnom jeziku
PREVODITELJI, COMPILERS
• kod viših programskih jezika za stvaranje strojnog jezika
potrebni su programi prevoditelji
• jedna simbolički napisana naredba u višem programskom
jeziku prevodi se u veći broj naredbi napisanih binarno
• te naredbe nisu vezane uz programski sklop računala
• program napisan u nekom višem programskom jeziku
može se izvesti na bilo kojem drugom računalu (ako za
njega postoji program prevoditelj)
16
•-programiranje-
PREVODITELJI I TUMAČI
• faze prevođenja
• učitavanje cijelog programa u memoriju
• ispitivanje postojanja formalnih tj. pravopisnih (sintaktičkih)
grešaka
• gruba logička kontrola ispravnosti programa
• prevođenje:
• odvija se zamjenom svake linije jednom ili čitavim nizom
strojnih naredbi
• povezivanje ili linkanje
• kod nekih prevoditelja provodi se i optimizacija koda
• rezultat: izvršni program u strojnom jeziku koji računalo
"razumije" i redom izvršava sve naznačene operacije
• prednosti prevođenja
• brže izvođenje programa u odnosu na interpreter
• zaštićen izvorni kôd programa
• nedostaci prevođenja
• odvojenost prevedenog i izvornog oblika programa 17
•-programiranje-
PREVODITELJI I TUMAČI
TUMAČI (INTERPRETERS)
• većina današnjih viših programskih jezika može raditi i na
konverzacijski način
• njihovi se prevoditelji nazivaju interpreteri (tumači)
• interpreter prevodi program iz simboličkog jezika u strojni
u toku rada, instrukciju po instrukciju
• Faze:
• interpreter se unese u računalo
• unošenje programa u računalo
• pokretanje programa uz istodobno tumačenje interpretera
(naredbu po naredbu uz dobivanje rezultata operacije izvedene
upravo izdanom naredbom)
18
•-programiranje-
PREVODITELJI I TUMAČI
• Prednost interpretiranja
• jednostavniji su
• ne zauzimaju toliko prostora u memoriji za zapis kao
prevoditelji
• većina ima mogućnost otklanjanja detektiranih
programskih grešaka
• dijagnostičke poruke ukazuju na stvarni problem
• automatsko prevođenje pri izmjeni programa
• Nedostaci interpretiranja
• nisu efikasni (sporiji su) ako se naredbe/programi
moraju izvoditi više puta jer prevoditeljski programi
prevode samo jednom
19
•-programiranje-
PROCES PREVOĐENJA PROGRAMA
• unos programa (tekst editorom) – izvorni program
• pohrana programa na medij (diskovi, diskete, trake
itd.) u obliku datoteke
• prevođenje rezultira objektnim programom (uz
prethodno javljanje pogrešaka) u binarnom obliku
• objektni program je ulaz u linker (sistemski program,
koji ima zadatak da objektni program, objektne
programe iz sistemske biblioteke, kao i ranije
prevedene programe poveže u izvršni program, koji
računalo može izvršiti
• izvršni program se pokreće komandom OS-a,
prihvaća ga punjač koji ga smješta u radnu
memoriju, rezervira resurse računala i predaje izvršni
program OS-u pod čijom kontrolom i ostaje
• ako program u toku izvođenja ne daje željene
rezultate (logičke pogreške), potrebno je ispraviti
izvorni program i ponovno izvršiti prevođenje i
povezivanje
• postoje neki programski jezici koji se ne prevode u
strojni jezik prevođenjem, nego interpretiranjem
(interpreter je također program prevoditelj koji
prevodi program iz simboličkog jezika u strojni, u
toku rada instrukciju po instrukciju)
20
•-programiranje-
KRITERIJI OCJENE KVALITETE
PROGRAMA
• Čitljivost - razumljivost programske logike
• Integritet - korektnost obrade
• Jednostavnost - korištenje najjednostavnijih programskih
struktura
• Efikasnost - vrijeme potrebno za izvršavanje programa i veličina
potrebne memorije
• Modularnost - podijeljenost programa u više logičkih cjelina sa
svrhom povećanja čitljivosti programa i uporabe modula za druge
programe u budućnosti
• Univerzalnost - primjenjivost programa na opće slučajeve
• Dokumentiranost - postojanje velikog broja programskih
komentara, a kod većih programskih sustava i programske
dokumentacije
21
•-programiranje-
FAZE (KORACI) PROGRAMIRANJA
(FORTRAN)
1. RAZUMIJEVANJE PROBLEMA / DOBRO DEFINIRANJE
PROBLEMA
• prvo treba u potpunosti razumjeti postavljeni problem
• potrebno je odgovoriti na nekoliko pitanja:
• što je nepoznato?
• što su podaci?
• kakvi su uvjeti?
• je li moguće zadovoljiti uvjete?
• jesu li uvjeti dovoljni, ili redundantni ili kontradiktorni?
• je li već bio viđen sličan problem?
• ...?
• dva su osnovna pitanja:
• što treba raditi?
• kako treba raditi?
22
•-programiranje-
KORACI PROGRAMIRANJA
(FORTRAN)
2. IZBOR METODE RJEŠAVANJA
• često je put očigledan, a može postojati i više rješenja
• “pravo” rješenje se bira na temelju postavljenog(ih) kriterija (npr.
kraće vrijeme izvršavanja)
• ako rješenje nije očigledno, najbolje je problem podijeliti na
nekoliko potproblema i tražiti njihovo rješenje
• takav način rješavanja problema naziva se modularizacija
• dva su (glavna) pristupa
• odozgo (top-down)
– rješavanje problema od općenitog prema detalju
– prvo načinimo funkcionalni opis čitavog problema, a završavamo
formiranjem jednostavnih funkcija i procedura
• odozdo (bottom-up)
– počinje nekim skupom osnovnih funkcija i procedura, a završava
realizacijom željenog cilja
• ako se oni isprepliću, dobivamo kombiniranu tehniku
• postoji još i step by step tehnika
23
•-programiranje-
KORACI PROGRAMIRANJA
(FORTRAN)
3. OPIS ULAZNIH I IZLAZNIH PODATAKA
(“SPECIFICIRANJE”)
• precizno specificiranje neophodno je za uspješan program
24
•-programiranje-
KORACI PROGRAMIRANJA
(FORTRAN)
5. PREVOĐENJE
• prevođenje je faza rješavanja problema u toku koje se
program prevodi u oblik koji računalo razumije
• izvodi se compilerom – programom prevoditeljem
• u praksi ima dvije funkcije
• ispravljanje formalnih (sintaktičkih) pogrešaka
• stvaranje radne verzije u strojnom jeziku
• pored tih pogrešaka u formi pisanja programa, postoje
i logičke pogreške koje traže da se ispravi program “jer
je nešto krivo”
• debugging je proces ispravljanja pogrešaka.
25
•-programiranje-
KORACI PROGRAMIRANJA
(FORTRAN)
6. IMPLEMENTACIJA (PRIMJENA PROGRAMA)
• razlika između prave obrade i testiranja (kod
implementacije): za računalo se pripremi mali skup
podataka koje možemo relativno lako ručno provjeriti
27
•-programiranje-
OSNOVNE STRUKTURE
PSEUDOJEZIKA
• SEKVENCA (SLIJED) je skup jednog ili više koraka
(naredbi, operacija) koji se odvijaju sekvencijalno, u nizu
/ slijedu, jedan za drugim
• SELEKCIJA (ODABIR, GRANANJE) upotrebljava se kada je
potrebno odlučiti koju od dvije ili više sekvenci treba
izvršiti s obzirom na postavljeni uvjet
• PONAVLJANJE ILI ITERACIJA je sekvenca koraka koja se
odvija izvjestan broj puta, sve dok je postavljeni uvjet
ispunjen ili dok nije ispunjen
• SKOKOVI mogu biti sa odredištem (bezuvjetne operacije
koje se moraju izvršiti (GO TO), izlazak iz potprograma te
izlaz iz programa
28
•-programiranje-
PSEUDOKÔD
Pseudokôd je rješenje problema napisano u obliku
programa ali ima uže značenje od algoritma. On
za svaki programski jezik izgleda isto
(“esperanto”). Lako se prevodi u bilo koji
programski jezik. Pseudojezikom stvaramo
pseudokôd.
29
•-programiranje-
STRUKTURIRANO
PROGRAMIRANJE
• svaki problem, algoritam i program promatramo kao
hijerarhijsku strukturu
• svaki zadatak može se podijeliti na više manjih zadataka, a
oni, ponovo, na još manje itd.
• svi procesi mogu se svesti na 4 (3) osnovne logičke
(ALGORITAMSKE) strukture:
• slijed (sekvencija, sekvenca)
• odabir (selekcija)
• ponavljanje (iteracija)
• (uvjetno) skokovi (u strukturiranom su programiranju zabranjeni!)
• prvo treba napraviti rješenje koje onda pretočimo u oblik
programa
• glavni dio programa je slijed
30
•-programiranje-
STRUKTURNI TEOREM
• ST s tri kontrolne strukture
Svaki pravilno napisan strukturirani program može se
transformirati u ekvivalentan strukturirani program koji sadrži tri
kontrolne strukture i to: slijed, odabir i ponavljanje uz moguću
primjenu jedne dodatne selektorske varijable. To je moguće jer se
skokovi mogu izvesti i preko ponavljanja.
31
•-programiranje-
KORACI OBLIKOVANJA
STRUKTURIRANIH PROGRAMA
1. formuliranje problema u oblik pogodan za rješavanje
računalom
2. formuliranje osnovne ideje u obliku algoritma odnosno
pseudokôda
3. napisati osnovne komponente programskog rješenja u
obliku niza komentara
4. izdvajanje komentara kao pogodnih manjih cjelina te
njihovo raščlanjivanje na detaljnije cjeline
5. ponavljanje 4. koraka dok se ne dođe do
najjednostavnijih segmenata rješenja koji se dalje ne
mogu raščlanjivati
32
•-programiranje-
KORACI OBLIKOVANJA
STRUKTURIRANIH PROGRAMA
6. u pseudojeziku realizirati pseudokôd koristeći pri tome
jedino kontrolne strukture i usvojene baze
10.testiranje
33
•-programiranje-
KORACI OBLIKOVANJA (DIJKSTRA)
Edgser Dijkstra – osnovni postulati strukturnog
programiranja (“Strukturno programiranje”,
1968.)
1. analiza
2. rastavljanje
3. ponavljanje koraka 2
4. algoritam
5. strukturiranje
6. pseudokôd
7. testiranje
34
•-programiranje-
DEBUGGING
• prevođenje (kompilacija)
• prevoditelj na ulazu prihvaća izvorni program
• proizvodi semantički ekvivalentan niz strojnih instrukcija
• prevođenje se odvija u niz faza
• izvorni program prolazi kroz leksičku analizu
• sintaktičku analizu
• generiranje međukôda
• optimiziranje kôda
• generiranje kôda
• rezultat je ciljni program
• greške mogu biti
• formalne
• leksičke - pisanjem znaka koji ne pripada alfabetu jezika
• sintaktičke - kršenje sintaktičkih pravila
• logičke – ispravljaju se testiranjem
• proces ispravljanja pogrešaka naziva se DEBUGGING
35
•-programiranje-
OBLICI PROGRAMA
• sa stajališta ekstenzija i manipulacije OS-a
• .exe
• .com
• .bat
• .dll
36
•-programiranje-
LEKSIKA, SINTAKSA, SEMANTIKA I
HIJERARHIJA PROG. JEZIKA
• programski jezici visoke razine (ipak) su znatno
jednostavniji od prirodnih ☺
37
•-programiranje-
LEKSIČKA STRUKTURA JEZIKA
• leksička struktura:
• alfabet
• skup svih znakova koji se smiju koristiti u tom jeziku
• slova, brojevi i posebni znakovi
• rječnik
• skup riječi (simbola) definiranih nad tim jezikom
• riječ je niz znakova iz alfabeta koji se promatra kao
jedinstvena, nedjeljiva cjelina
38
•-programiranje-
SINTAKTIČKA STRUKTURA
Sintaktička struktura
Sintaksa jezika
39
•-programiranje-
HIJERARHIJSKA STRUKTURA
Programski jezik (def.)
40
•-programiranje-
HIJERARHIJSKA STRUKTURA
• operacije i podaci u većini programskih jezika
mogu se grupirati hijerarhijski
42
•-programiranje-
UVOD U PROGRAMIRANJE
NAREDBE
• elementarne operacije računanja, dodjeljivanja i kontrole
redoslijeda izračunavanja zadaju se naredbama
(komandama) jezika za programiranje
• naredbe mogu imati različite oblike i značenja
• uobičajena podjela (prema sintaksi)
• primitivne (jednostavne)
• strukturirane (složene)
• podjela na temelju svog značenja
• naredbe za izračune
• naredbe za kontrolu toka izvršavanja
• naredbe za deklariranje
• ulazno/izlazne naredbe
43
•-programiranje-
UVOD U PROGRAMIRANJE
POTPROGRAMI
PROGRAMI
44
•-programiranje-
PROGRAMIRANJE
• proces zadavanja skupa naredbi u nekom programskom
jeziku kako bi se izvršila neka aktivnost, odnosno, riješio
određeni problem
• proces rješavanja problema upotrebom računala obično
se sastoji od više koraka
1. razumijevanje problema koji se treba riješiti i analiza ulaznih
podataka koje računalo mora obraditi, kao i izlaznih podataka ili
rezultata koje treba dobiti iz računala
2. smišljanje algoritma, tj. definiranje postupka koji se obično
sastoji od nekoliko koraka, na osnovu kojih će računalo proizvesti
zahtijevani izlaz iz odgovarajućeg ulaza
3. programiranje u užem smislu
• utvrđivanja programske strukture i logike
4. pisanje programa
5. prevođenje programa
6. izvršavanje programa
7. testiranje i ispravljanje programa
8. kompletiranje programske•-programiranje-
dokumentacije 45
RAČUNALSKI MODEL - ALGORITAM
• algoritam predstavlja skup akcija sa definiranim
redoslijedom njihovog obavljanja, koji primijenjen
na polazni skup podataka, dovodi do traženih
rezultata
46
•-programiranje-
ELEMENTARNE ALGORITAMSKE
STRUKTURE
• postoje tri elementarne algoritamske strukture
• Linijska (SLIJED)
• sve akcije se izvršavaju točno jednom u redoslijedu u kome su
navedene
• Razgranata (SELEKCIJA)
• omogućava da se od više grupa akcija, koje se nalaze u
različitim granama razgranate strukture, izabere ona koja će
se izvršiti jednom, dok se sve ostale grupe akcija neće izvršiti
ni jednom
• Ciklička (ITERACIJA)
• skup akcija može se izvršiti više puta
47
•-programiranje-
KANONSKE I NEKANONSKE
ALGORITAMSKE STRUKTURE
• kombinacijom elementarnih struktura formiraju
se kanonske, kvazi-kanonske i nekanonske
algoritamske strukture
48
•-programiranje-
KANONSKE ALGORITAMSKE
STRUKTURE
• kanonske strukture imaju slijedeće osobine:
• postoji obostrana veza između njih i odgovarajućih im
matematičkih model
• ne raščlanjuju se na sastavne dijelove
• može se napisati pseudokôd za svaku od njih samo na
temelju naziva
49
•-programiranje-
KVAZI-KANONSKE ALGORITAMSKE
STRUKTURE
• kada se u kanonskim strukturama javljaju pozivi
potprograma, radi se o kvazi-kanonskim
strukturama
50
•-programiranje-
NEKANONSKE ALGORITAMSKE
STRUKTURE
• nemaju ni jednu od navedenih osobina, tako da
ih treba postepeno razlagati do nivoa kanonskih
51
•-programiranje-
KANONSKA LINIJSKA STRUKTURA
• elementarna struktura kod koje se svaki
algoritamski korak izvršava točno jednom
• primjer (pseudokôd)
Akcija1
Akcija2
…
AkcijaN
52
•-programiranje-
KANONSKA RAZGRANATA
STRUKTURA
• elementarna razgranata struktura sa n grana kod
koje se akcija na jednoj od grana izvrši jednom,
dok se akcije na ostalih n-1 grana ne izvrše ni
jednom
• primjer (pseudokôd – ilustracija za 3R strukturu)
If uvjet1 Then
If uvjet2 Then
Grupa1 akcija
Else
Grupa2 akcija
Endif
Else
Grupa3 akcija
Endif
53
•-programiranje-
KANONSKA RAZGRANATA
STRUKTURA
• 3R struktura može se zapisati i na slijedeći način:
case izraz of
vrijednost1: Grupa1 akcija
vrijednost2: Grupa2 akcija
vrijednost3: Grupa3 akcija
endcase
54
•-programiranje-
KANONSKA CIKLIČKA STRUKTURA
JEDNOSTRUKO SPREGNUTA TIPA REPEAT… UNTIL
UVJET
• primjer (pseudokôd)
repeat
Akcija1
Akcija2
…
AkcijaN
until uvjet
55
•-programiranje-
KANONSKA CIKLIČKA STRUKTURA
JEDNOSTRUKO SPREGNUTA TIPA REPEAT …
WHILE UVJET
• primjer (pseudokôd)
repeat
Akcija1
Akcija2
…
AkcijaN
while uvjet
56
•-programiranje-
KANONSKA CIKLIČKA STRUKTURA
JEDNOSTRUKO SPREGNUTA TIPA UNTIL UVJET DO …
ILI
• primjer 1 (pseudokôd)
for naziv_varijable := početna_vrijednost to završna_vrijednost
do
Akcija1
Akcija2
…
AkcijaN
endfor
57
•-programiranje-
KANONSKA CIKLIČKA STRUKTURA
• primjer 2 (pseudokôd)
until uvjet do
Akcija1
Akcija2
…
AkcijaN
endutil
58
•-programiranje-
KANONSKA CIKLIČKA STRUKTURA
JEDNOSTRUKO SPREGNUTA TIPA WHILE UVJET
DO …
• primjer (pseudokôd)
while uvjet do
Akcija1
Akcija2
…
AkcijaN
endwhile
59
•-programiranje-
KANONSKA CIKLIČKA STRUKTURA
CIKLIČKA STRUKTURA S UKLJUČENOM RAZGRANATOM
• ciklička struktura kod koje se u ciklusu najniže hijerarhije
nalazi ragranata struktura.
• primjer (pseudokôd) za dvostruko spregnutu
while uvjet1 do
Grupa1 akcija
repeat
If uvjet2 Then
Grupa2 akcija
Else
Grupa3 akcija
Endif
until uvjet3
Grupa4 akcija
endwhile
60
•-programiranje-
KVAZI-KANONSKE STRUKTURE
• kada se u bilo kojoj kanonskoj strukturi nađe
poziv potprograma
61
•-programiranje-
NEKANONSKE STRUKTURE
• sve preostale algoritamske strukture, koje se
definiraju određenom rednom ili paralelnom
kompozicijom kanonskih struktura, nazivaju se
nekanonskim strukturama
62
•-programiranje-
UVOD U OBJEKTNO ORIJENTIRANO
PROGRAMIRANJE
• OOP obuhvaća ne samo tehniku programiranja već
implicitno uključuje i dizajniranje problema
63
•-programiranje-
UVOD U OBJEKTNO ORIJENTIRANO
PROGRAMIRANJE
• ako programiranje shvatimo kao niz transformacija od
početnog stanja (ideja) do cilja (izvršavanje programa na
računalu), onda se programer nalazi pred ključnom
barijerom, upravo pred nalaženjem algoritma, jer većina
problema nije simboličkog tipa
64
•-programiranje-
UVOD U OBJEKTNO ORIJENTIRANO
PROGRAMIRANJE
• tada je programer poštujući osnovne koncepte
(strukturne petlje, mogućnost odvojenog prevođenja i
povezivanja (linkanja), strukture podataka, korištenje
potprograma) dobivao manji i jednostavniji kôd, uz to
znatno pogodniji za održavanje
• grupiranjem srodnih podataka u strukture, koje se onda
referenciraju pod zajedničkim imenom i podjelom poslova
na funkcije učinjen je korak dalje od čisto simboličkog
predstavljanja problema.
• OOP je još jedan korak naprijed
• čitav problem predstavlja se određenim brojem objekata koji -
međusobno komunicirajući - dovode problem do kraja, odnosno
pronalaze rešenje
65
•-programiranje-
UVOD U OBJEKTNO ORIJENTIRANO
PROGRAMIRANJE
• dok u konvencionalnom programiranju program
sekvencijalno (redom) izvršava naredbe (najmanji logički
entitet), programiranje objektima je interakcija među
objektima (modulima)
• zato kažemo da OOP direktno modelira aplikaciju
• objekt ima dvije bitne karakteristike
• sadrži neke informacije
• svaki objekt izvršava točno određeni zadatak, poznat drugim
objektima
• u klasičnom programiranju postoje aktivni (procedure i
funkcije) i pasivni (podaci) elementi
• zadatak programera je da - primjenjujući aktivne
elemente nad pasivnim - riješi problem
66
•-programiranje-
UVOD U OBJEKTNO ORIJENTIRANO
PROGRAMIRANJE
• u programiranju objektima postoje samo aktivni objekti
koji automatski uključuju i pasivne elemente, a svaki
objekt zadužen je za svoj dio posla
67
•-programiranje-
FAKTORI, OPERATORI
Faktori
• veličine koje sudjeluju u nekom postupku
Operatori
• znakovi ili riječi koje određuju kako postupati sa
faktorima
• aritmetički operatori: +, -, *, /, **, MOD
• logički operatori: NOT, AND, OR, XOR
• relacijski operatori: <, <=, ==, /=, >= i >
68
•-programiranje-
STATIČKI TIPOVI PODATAKA
• odmah im je dodijeljena sva potrebna memorija
• mogu biti
• jednostavni (linearno uređeni)
• cjelobrojni (INTEGER)
• realni (REAL)
• znakovni (CHAR): slova, brojke i posebni znakovi
• logički (BOOLEAN): true ili false
• složeni
69
•-programiranje-
SLOŽENI TIPOVI PODATAKA
• sadrže određeni broj elemenata istih ili različitih tipova
• složeni tipovi podataka su:
• polje (array) = kolekcija elemenata istog tipa
• elementi imaju isto ime
• koriste se indeksi
• niz (string) = kolekcija znakova koja se na razini jezika tretira kao
nedjeljiva cjelina
• u Pascalu je to poseban slučaj jednodimenzionalnog polja što
omogućava def. operacija i nad dijelovima
• slog (record) = uređena kolekcija različitih primitivnih ili
strukturiranih tipova
• datoteka (file) = organizirana kolekcija zapisa obično pohranjena
na sekundarnoj memoriji
• mogu biti sekvencijalne - u nizu ili s direktnim pristupom
podacima
• skup (set) = uređena kolekcija podataka istog primitivnog tipa
70
•-programiranje-
ZNAKOVNI TIP PODATAKA
• oznaka: character
71
•-programiranje-
LOGIČKI TIP PODATAKA
• obuhvaća samo dvije vrijednosti
• istina
• laž
72
•-programiranje-
DINAMIČKI TIPOVI PODATAKA
• imaju karakteristiku da im veličina može rasti ili
padati za vrijeme izvođenja programa
• dinamički tipovi podataka
• datoteka
• linearna lista
• stog
• skup
• binarno stablo
• pokazivači
• (tekstualna) datoteka, linearna lista, stog i skup
su linearni dinamički podaci, a binarno stablo su
hijerarhijski povezani podaci
73
•-programiranje-
DINAMIČKI TIPOVI PODATAKA
• linearna lista (linear list)
• svi elementi ne moraju uvijek postojati odmah
• svi elementi su ravnopravni
• pokazivači (pointers)
• podatak koji se uvijek koristi uz neki drugi dinamički
podatak tj. linearnu listu ili stog
74
•-programiranje-
DINAMIČKI TIPOVI PODATAKA
• stog/stack
• stack memorija sastavljena je od memorijskih lokacija koje su
obično smještene u posebnim registrima, a rade na LIFO principu
• takav niz registara složenih jedan povrh drugog u slog, za razliku
od memorija sa slučajnim izborom, ima dostupan samo onaj
registar koji je na vrhu sloga
• podaci se umeću na vrh sloga, a s vrha se i vade
• pri umetanju svakog novog podatka svi prijašnji podaci pomaknu
se korak niže
• neka operacija može se vršiti samo s podatkom koji je na vrhu
• samo je taj podataka aktivan, a svi su ostali potisnuti više ili
manje od vrha i nezanimljivi za bilo kakav postupak dotle dok ne
dođu na sam vrh
• izvedba stoga
• pomicanjem podataka – upotreba shift registara
• promjena adrese vrha stoga – upotreba pokazivača stack pointera
75
•-programiranje-
STRUKTURE PODATAKA
• razlikujemo fizičke i logičke strukture podataka
• fizičke strukture podataka
• znakovi
• polja
• zapisi
• datoteke
• sekvencijalne
• rasute (random)
• indeksno – sekvencijalne
• fizičke strukture podataka važne su za
programere, dok su za korisnike važne logičke
strukture
76
•-programiranje-
STRUKTURE PODATAKA
• logičke strukture podataka
• hijerarhijski model
• obuhvaća tri međuovisnosti između pojedinih podataka
• mrežni model
• dopušta velik broj međusobnih relacija i vrlo je kompleksan
• relacijski model
• dozvoljava korisniku relacijski odnos između više datoteka
• korisnici mogu uzeti informaciju iz jedne datoteke i prenijeti je
u drugu datoteku gdje se nalazi ostatak sadržaja
• na taj način pojednostavljuje se i definiranje i ponovno
pretraživanje informacija
77
•-programiranje-
FIZIČKI I LOGIČKI SLOG
FIZIČKI SLOG
• sastoji se od polja
78
•-programiranje-
FIZIČKI I LOGIČKI SLOG
LOGIČKI SLOG
79
•-programiranje-
FIZIČKA I LOGIČKA
POVEZANOST SLOGOVA
FIZIČKA VEZA SLOGOVA
• dva su sloga fizički vezana ako su u strukturi
datoteke fizički jedan iza drugog
LOGIČKA VEZA SLOGOVA
• logički su povezani slogovi tako da postoji u
pronađenom slogu pokazivač koji upućuje na
lokaciju sljedbenika
• logičkom vezom mogu se ostvariti sve vrste veza
među slogovima
80
•-programiranje-
VEZE U LOGIČKOJ VEZI
• u logičkoj vezi adrese mogu biti stvarne, relativne i
simboličke
• stvarne adrese određuju udaljenost nekog mjesta na mediju od
početka medija
• relativne adrese su udaljenosti izračunate od neke točke koja se
uzima kao ishodište i mjesta na kojem se neki element nalazi
• ishodište nije unaprijed definirano
• tek kada se ono odredi i utvrdi se stvarna adresa ishodišta u
skupu, može se pomoću relativne adrese izračunati stvarna
adresa ostalih elemenata slogova u skupu
• simbolička adresa je vrijednost nekog obilježja u sustavu skupa
elemenata
• za to je potreban identifikator ili ključ sloga
• na osnovi stvarne adrese simbola ili ključa izračunava se
relativna adresa slogova iz koje se opet računa stvarna adresa
pojedinog traženog sloga
81
•-programiranje-
KONSTANTE I VARIJABLE
• konstante su određene fiksne vrijednosti nekog statičkog
tipa podataka – zadaju se eksplicitno
• varijablama se, suprotno od konstanta, može mijenjati
njihova vrijednost odnosno sadržaj, ali ne i tip te unutar
vrijednosti prije definirane domene
• varijable su objekti čija se vrijednost mijenja tokom rada
programa – određene su imenom i tipom
• ime im je stalno - one su imenovani dio memorije
• predstavljaju vezu s memorijskom lokacijom na kojoj se nalaze
stvarne vrijednosti varijabli
• ime varijabla je njihov identifikator
• varijable omogućuju definiranje postupaka sa različitim
podacima
82
•-programiranje-
VARIJABLE
• u svakom trenutku imaju određenu vrijednost
83
•-programiranje-
TIPOVI VARIJABLI
• tip varijable određuje iz kojeg će se skupa
vrijednosti dodjeljivati varijabli
• indeksirana varijabla ima svojstva primitivne varijable,
tipa jednakog osnovnom tipu polja
• datotečna varijabla odnosi se na dio sekundarne
memorije čija se vrijednost smije mijenjati
• logičke varijable mogu biti elementarni sudovi npr.
“x<6” ili nosioci logičkih vrijednosti (true, false)
• postoje još i nizovna, skupovna, slogovna i znakovna
varijabla
84
•-programiranje-
PROCEDURE I FUNKCIJE
PROCEDURE
• procedura (Procedure) je naziv za potprogram
• potprogrami rješavaju manje problemske cjeline, dok glavni
program rješava cijeli problem
• glavni tok programa je potprogramu nadređen
• procedura se poziva imenom dopunjena stvarnim parametrima
ako je ona deklarirana s formalnim parametrima
• potprogrami mogu biti interni i eksterni
• interni se nalaze u glavnom programu
• eksterni nisu definirani u glavnom programu i ne mogu se
samostalno izvoditi (pozivaju se sa CALL)
FUNKCIJE
• poziv funkcije koristi se kao faktor u izrazu gdje ime funkcije
prenosi vrijednost funkcije koja je pridružena imenu funkcije
• nadopuna imena stvarnim parametrima ista je kao kod procedure
85
•-programiranje-
STVARNI I FORMALNI PARAMETRI
• parametar je izabrana konstanta, varijabla ili aritmetički
izraz
86
•-programiranje-
BLOK-DIJAGRAM
Blok-dijagram (algoritamska shema, dijagram
toka) grafički je prikaz programa.
– Stanislav Kliment, 1993.
87
•-programiranje-
BLOK-DIJAGRAM
OGRANIČENJE
PRIKLJUČNA TOČKA
88
•-programiranje-
BLOK-DIJAGRAM
ULAZ
IZLAZ
89
•-programiranje-
BLOK-DIJAGRAM
OBRADA
• obrada podataka kako bi
se dobili potrebni rezultati
(instrukcije obrade)
ODLUKA
• mjesto grananja u
ovisnosti o ispitivanom
uvjetu/uvjetima
(instrukcije provjere
uvjeta)
90
•-programiranje-
BLOK-DIJAGRAM
POZIV POTPROGRAMA
• izvršavanje potprograma
prethodno zapisanog izvan
glavnog programa (instrukcija
poziva potprograma)
PROGRAMSKA MODIFIKACIJA
91
•-programiranje-