You are on page 1of 91

PROGRAMIRANJE

• Programiranje je heuristički (misaoni) postupak kojim


dolazimo do rješenja nekog problema ili skupine
problema, korištenjem algoritma ili formalne logike, uz
nezamjenjivu upotrebu računala.

• Algoritam je postupak kojim se u konačnom broju


koraka i u konačnom vremenu dolazi do rješenja
problema ili spoznaje da rješenja nema.

• Program je niz logički povezanih instrukcija pri čemu


svaka instrukcija predstavlja određenu naredbu ili skupinu
naredbi (najčešći slučaj) koju računalo može izvršiti i koja
predstavlja najmanji element programa.

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.

• svaka vrsta stroja za obradu podataka ima svoj


jezik i ne može se koristiti na drugom stroju, čak
ni na različitim strojevima istog proizvođača

• organizacija memorije pojedinačna


• svaki programer vodi računa o raspodjeli memorije

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

• prvi programski jezici treće generacije nastali su oko


1960.g.

• nazivamo ih još i višim simboličkim jezicima

• pozivanjem jedne naredbe pozivamo cijelu proceduru

• 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

• vrste novih jezika


• jednostavni ili složeni upitni jezici za traženje ili mijenjanje
podataka
• generatori izvještaja koji oblikuju različite iskaze ili slike na ekranu
kao rezultat obrade, grafički jezici koji omogućuju prikazivanje
rezultata u obliku pravaca, krivulja, kružnica, stupova i sl.
• jezici za podršku u odlučivanju koji pružaju pomoć pri donošenju
poslovnih odluka; generatori aplikacija koji omogućuju definiranje
različitih uvjeta pojedine aplikacije

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

• ekspertni sustavi, sustavi baza znanja, strojno


odlučivanje, procesiranje prirodnih jezikov,
umjetna inteligencija, neuronske mreže

• imitiranje funkcioniranja ljudskog mozga u cilju


rješavanja vrlo složenih problema

• najpoznatiji predstavnici: PROLOG, LISP, LOGO

11
•-programiranje-
TEHNOLOGIJE DANAŠNJICE
• generatori aplikacija

• objektne tehnologije

• klijent-server sustavi, trorazinske arhitekture, distribuirani


sustavi, Internet, intranet, ekstranet, ...

• otvoreni sustavi

• modularni pristupi, repozitoriji

• knjižnice funkcija, DLL, ActiveX, Java

• jednostavnost integracije, zajednička spremišta podataka i


funkcionalni dijelovi, mogućnost prilagodbe
12
•-programiranje-
METODOLOGIJE DANAŠNJICE
• Pristupi
• izrada prototipova
• I-CASE pristup
• informacijski i programski inženjering

• 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

4. SMIŠLJANJE ALGORITMA, PSEUDOKÔDA I PROGRAMA


• algoritam je postupak ili pravilo za sustavno rješavanje određene
vrste problema
• to je bilo koje dobro rješenje bilo kojeg problema
• sastoji se od opisa konačnog skupa koraka
• svaki od njih sadrži jednu ili više izjava, a svaka izjava jednu ili
više operacija
• pseudokôd je algoritam u obliku programa koji još nije napisan u
programskom jeziku

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

7. FAZA ODRŽAVANJA (POSTIMPLEMENTACIJA)


• čemu održavanje?
• Murphy-ev postulat: “Ako postoji milijunta mogućnost
da se neka pogreška pojavi, ona će se sigurno
pojaviti.”
• optimalno rješenje je najbolje moguće rješenje u
danom trenutku
• stoga se u budućnosti javljaju potrebe za promjenama.
26
•-programiranje-
PSEUDOJEZIK
Pseudojezik je prijelazni oblik između pravog
programskog jezika i ljudskog načina
razmišljanja. Problem riješen pseudojezikom
razumljiv je svima i lako se prevodi u bilo koji
programski jezik. To nije pravi programski jezik
jer iz njega ne možemo dobiti izvršni program.

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.

To je postupno rješenje nekog problema koje


upotrebljava kontrolne strukture da opiše
operacije nad strukturama podataka i prethodi
pravom programskom rješenju.

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.

• ST s dvije kontrolne strukture


Svaki pravilno napisan strukturirani program može se
transformirati u ekvivalentan strukturirani program koji sadrži
dvije kontrolne strukture i to: slijed i ponavljanje uz upotrebu
dodatnih selektorskih i logičkih varijabli.. To je moguće stoga jer
se odabir može izvesti upotrebom 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

7. sustavno ponavljanje koraka 6 gdje je to moguće, pri


tome povećavati detaljnost kako za program tako i za
podatke koje on obrađuje

8. pretvaranje pseudokôda u neki realni jezik pomoću


određenih programskih alata

9. prevođenje (i debugging) programa napisanog u nekom


od strukturiranih jezika u stroju prepoznatljiv kôd

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 ☺

• "rečenice" jezika za programiranje mogu se


opisati strogim pravilima, bez izuzetaka i sa
jedinstvenim značenjem

• kod programskih jezika bitne su


• leksička struktura
• sintaktička struktura i
• semantika jezika

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

• radi lakšeg poimanja leksičke strukture nekog jezika


uobičajeno je da se rječnik dijeli na klase riječi ili simbola
koje imaju neka zajednička svojstva
• konstante, identifikatori, rezervirane riječi, imena funkcija,
specijalni simboli itd.

38
•-programiranje-
SINTAKTIČKA STRUKTURA
Sintaktička struktura

• utvrđuje grupiranje leksičkih elemenata u šire


strukture, koje se nazivaju sintaktičke kategorije

Sintaksa jezika

• pravila koja određuju pripada li niz simbola jeziku

• pravilo pisanja ili sintaksa pojedinih naredbi


najčešće se zadaje sintaktičkim dijagramom

39
•-programiranje-
HIJERARHIJSKA STRUKTURA
Programski jezik (def.)

• notacijska tehnika (pismo) kojom se na


kompaktan, nedvosmislen i konačan način navodi
niz operacija koje će biti izvršene nad nekim
objektima – podacima

• određeni niz tih operacija napisan u nekom jeziku


naziva se program

40
•-programiranje-
HIJERARHIJSKA STRUKTURA
• operacije i podaci u većini programskih jezika
mogu se grupirati hijerarhijski

Hijerarhija elemenata programa


• korištenje hijerarhijske strukture znatno olakšava
učenje programskog jezika
41
•-programiranje-
UVOD U PROGRAMIRANJE
IZRAZI
• izrazi nisu naredbe nego sintaktičke strukture
• sadrže podatke (konstante i varijable), operacije i funkcije
• prema tipu podataka i operacija definiranim nad njima u
većini programskih jezika razlikujemo slijedeće izraze:
• aritmetičke
• sadrže cjelobrojne, realne (a u nekim jezicima i kompleksne)
tipove podataka i odgovarajuće operatore
• znakovne
• sadrže nizove znakova kao operande i odgovarajuće operatore
• logičke
• sadrže relacijske podizraze, logičke konstante i varijable te
logičke operacije i odgovarajuće operatore

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

• grupirane i strukturirane naredbe – cjeline po


svojoj funkciji i operacijama koje obavljaju

PROGRAMI

• niz naredbi, jednostavnih i složenih, kojim se


opisuje postupak unosa, izračunavanja i
bilježenja podataka i rezultata izračunavanja

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

• u procesu programiranja, skup akcija definiran je


mogućnostima računala, odnosno naredbama
programskog jezika koji se koristi, dok se
redoslijed izvršavanja akcija zadaje pomoću
algoritamskih (programskih) struktura

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

• algoritamsko rešenje bilo kog problema može


uvijek zapisati korištenjem samo ove tri strukture

47
•-programiranje-
KANONSKE I NEKANONSKE
ALGORITAMSKE STRUKTURE
• kombinacijom elementarnih struktura formiraju
se kanonske, kvazi-kanonske i nekanonske
algoritamske strukture

• postoje 4 kanonske, 5 kvazi-kanonskih i 2


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

• kvazi-kanonske strukture također se ne razlažu


na sastavne dijelove, ali se ne može uspostaviti
veza između njih i odgovarajućih im matematičkih
modela

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

• u sastav razgranate strukture može ući i linijska


struktura koja prethodi razgranatoj strukturi,
ukoliko se njome postavljaju neki početni uvjeti

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

FOR NAZIV_VARIJABLE := POČETNA_VRIJEDNOST TO


ZAVRŠNA_VRIJEDNOST DO …

• 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

• poziv potprograma bilo kojeg tipa (procedura,


funkcija itd.) (pseudokôd):
naziv_potprograma (lista argumenata)

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

• za rješavanje nekog problema računalom potrebno je


najprije pronaći algoritam koji prenosi problem iz domene
ljudskog razmišljanja u domenu koja odgovara računalu,
tj. problem treba simbolički predstaviti

• pronalaženje takvih algoritama je dizajniranje budućeg


programa

• kasnije je relativno lako dobro dizajnirani program kôdirati


u nekom programskom jeziku i potom ga izvršavati

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

• da bi se ta barijera što više smanjila, uvedeni su i


programski jezici kao alati za simboličko programiranje

• međutim, i dalje je ostao problem transformacije iz općeg


u simbolički model

• bitna poboljšanja su dobivena kada je uvedeno strukturno


programiranje

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

• Programer ima zadatak je da usmjerava i nadgleda


komunikaciju među objektima

• na taj način OOP programer je više koncentriran na


podatke i manipuliranje podacima nego na to kako će se
proizvesti kôd za obradu nekog podatka

• predstavljanje problema (pronalaženje algoritma) lakše je


i prirodnije preko objekata nego preko procedura i
varijabli

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

• tip podataka i struktura im se ne može mijenjati

• primjer: svaki numerički podatak je statički i njemu se


dodjeljuje struktura (od npr. 16 bitova)

• 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

• znakovni tip podataka određen je alfabetom


jezika za programiranje (skupom svih znakova
dopuštenih u jeziku za programiranje)

• nad znakovnim tipom najčešće je definirana samo


operacija nastavljanja, ali rezultat te operacije
nije znak već niz znakova

71
•-programiranje-
LOGIČKI TIP PODATAKA
• obuhvaća samo dvije vrijednosti
• istina
• laž

• u Fortranu su ta dva elementa TRUE i FALSE

• definirani su i standardni operatori


• NOT
• AND
• OR
• XOR

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

• binarno stablo (binary tree)


• hijerarhijski su povezani podaci

• 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

• dio materijalnog nositelja podataka na kojem se nalazi


logički slog

• struktura se definira na početku ili prije svakog bloka


ovisno od toga da li su slogovi (pa onda i blokovi), fiksne
ili varijabilne dužine

• slog govori o strukturi zapisa

• sastoji se od polja

• svako polje ima svoje ime i svoju dužinu

78
•-programiranje-
FIZIČKI I LOGIČKI SLOG
LOGIČKI SLOG

• skup logičkih cjelina (polja), kojim opisujemo


stanje objektivne stvarnosti (sadrži podatke o
jednom objektu)

• niz slogova formira blok

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

• varijable mogu biti globalne ili lokalne, statičke ili


dinamičke
• globalne varijable
• mogu se koristiti u svim dijelovima programa
• lokalne varijable
• mogu koristiti samo u procedurama ili funkcijama

• deklaracija varijabli sadrži ime i tip varijable

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

• parametri mogu biti:


• formalni ili stvarni (s obzirom na mjesto gdje se upotrebljavaju)
• varijabilni ili vrijednosni (s obzirom na vrstu podataka)

• FORMALNI parametar je sinonim stvarnog parametra i


pojavljuje se u deklaraciji procedure

• STVARNI (VRIJEDNOSNI) parametar upotrebljava se kad


su podaci u proceduri ulaznog tipa
• tada je stvarni parametar konstanta ili složeniji izraz čija
vrijednost postaje vrijednost formalnog parametra

86
•-programiranje-
BLOK-DIJAGRAM
Blok-dijagram (algoritamska shema, dijagram
toka) grafički je prikaz programa.
– Stanislav Kliment, 1993.

• pogodan je za traženje rješenja, analize


programa, ispravljanje pogrešaka ili uvođenje
promjena/dodataka u program

• kod crtanja blok-dijagrama služimo se posebnim


simbolima

87
•-programiranje-
BLOK-DIJAGRAM
OGRANIČENJE

• označuje početak, kraj ili


privremeni prekid
programa

PRIKLJUČNA TOČKA

• povezuje razne dijelove


programa, tj. izlaz iz
jednog i ulaz u drugi dio

88
•-programiranje-
BLOK-DIJAGRAM
ULAZ

• unos podataka preko


ulazne jedinice (instrukcije
ulaza)

IZLAZ

• izlaz podataka preko


izlazne jedinice
(instrukcije izlaza)

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

• instrukcija koja djeluje na neku


drugu instrukciju programa

91
•-programiranje-

You might also like