Top Banner
•-programiranje- 1 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čći slučaj) koju računalo može izvršiti i koja predstavlja najmanji element programa.
91

PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

Feb 15, 2018

Download

Documents

VũDương
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-1

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.

Page 2: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-2

GENERACIJEPROGRAMSKIH 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

Page 3: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-3

GENERACIJEPROGRAMSKIH 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

Page 4: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-4

GENERACIJEPROGRAMSKIH 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

Page 5: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-5

GENERACIJEPROGRAMSKIH 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)

Page 6: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-6

GENERACIJEPROGRAMSKIH 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)

Page 7: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-7

GENERACIJEPROGRAMSKIH 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

Page 8: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-8

GENERACIJEPROGRAMSKIH 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

Page 9: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-9

GENERACIJEPROGRAMSKIH 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 prikazivanjerezultata u obliku pravaca, krivulja, kružnica, stupova i sl.

• jezici za podršku u odlučivanju koji pružaju pomoć pri donošenjuposlovnih odluka; generatori aplikacija koji omogućuju definiranje različitih uvjeta pojedine aplikacije

Page 10: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-10

GENERACIJEPROGRAMSKIH 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

Page 11: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-11

GENERACIJEPROGRAMSKIH 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

Page 12: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-12

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

Page 13: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-13

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)

Page 14: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-14

VRSTE PROGRAMSKIH JEZIKA

• strojni

• simbolički• neproceduralni• proceduralni• generatori aplikacija

Page 15: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-15

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

Page 16: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-16

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)

Page 17: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-17

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

Page 18: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-18

PREVODITELJI I TUMAČITUMAČ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)

Page 19: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-19

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

Page 20: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-20

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)

Page 21: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-21

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

Page 22: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-22

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?

Page 23: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-23

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

Page 24: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-24

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

Page 25: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-25

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.

Page 26: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-26

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.

Page 27: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-27

PSEUDOJEZIK

Pseudojezik je prijelazni oblik između pravog programskog jezika i ljudskog načina razmišljanja. Problem riješen pseudojezikomrazumljiv 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.

Page 28: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-28

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

Page 29: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-29

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.

Page 30: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-30

STRUKTURIRANOPROGRAMIRANJE

• 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

Page 31: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-31

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ćuprimjenu jedne dodatne selektorske varijable. To je moguće jer se skokovi mogu izvesti i preko ponavljanja.

• ST s dvije kontrolne struktureSvaki pravilno napisan strukturirani program može se transformirati u ekvivalentan strukturirani program koji sadrži dvije kontrolne strukture i to: slijed i ponavljanje uz upotrebudodatnih selektorskih i logičkih varijabli.. To je moguće stoga jer se odabir može izvesti upotrebom ponavljanja.

Page 32: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-32

KORACI OBLIKOVANJASTRUKTURIRANIH 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

Page 33: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-33

KORACI OBLIKOVANJASTRUKTURIRANIH 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

Page 34: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-34

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

Page 35: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-35

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

Page 36: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-36

OBLICI PROGRAMA

• sa stajališta ekstenzija i manipulacije OS-a• .exe• .com• .bat• .dll

Page 37: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-37

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

Page 38: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-38

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.

Page 39: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-39

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

Page 40: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-40

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

Page 41: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-41

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

Page 42: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-42

UVOD U PROGRAMIRANJEIZRAZI

• 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

Page 43: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-43

UVOD U PROGRAMIRANJENAREDBE

• 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

Page 44: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-44

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

Page 45: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-45

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 koraka1. 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 programa5. prevođenje programa6. izvršavanje programa7. testiranje i ispravljanje programa8. kompletiranje programske dokumentacije

Page 46: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-46

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

Page 47: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-47

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šitini 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

Page 48: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-48

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

Page 49: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-49

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

Page 50: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-50

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

Page 51: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-51

NEKANONSKE ALGORITAMSKE STRUKTURE

• nemaju ni jednu od navedenih osobina, tako da ih treba postepeno razlagati do nivoa kanonskih

Page 52: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-52

KANONSKA LINIJSKA STRUKTURA

• elementarna struktura kod koje se svaki algoritamski korak izvršava točno jednom

• primjer (pseudokôd)Akcija1Akcija2…AkcijaN

Page 53: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-53

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 ThenGrupa1 akcijaElseGrupa2 akcijaEndif

ElseGrupa3 akcijaEndif

Page 54: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-54

KANONSKA RAZGRANATA STRUKTURA

• 3R struktura može se zapisati i na slijedeći način:case izraz of

vrijednost1: Grupa1 akcijavrijednost2: Grupa2 akcijavrijednost3: 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

Page 55: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-55

KANONSKA CIKLIČKA STRUKTURA

JEDNOSTRUKO SPREGNUTA TIPA REPEAT… UNTIL UVJET

• primjer (pseudokôd)repeat

Akcija1Akcija2…AkcijaN

until uvjet

Page 56: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-56

KANONSKA CIKLIČKA STRUKTURA

JEDNOSTRUKO SPREGNUTA TIPA REPEAT … WHILE UVJET

• primjer (pseudokôd)repeat

Akcija1Akcija2…AkcijaN

while uvjet

Page 57: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-57

KANONSKA CIKLIČKA STRUKTURAJEDNOSTRUKO 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

doAkcija1Akcija2…AkcijaN

endfor

Page 58: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-58

KANONSKA CIKLIČKA STRUKTURA

• primjer 2 (pseudokôd)until uvjet do

Akcija1Akcija2…AkcijaN

endutil

Page 59: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-59

KANONSKA CIKLIČKA STRUKTURA

JEDNOSTRUKO SPREGNUTA TIPA WHILE UVJET DO …

• primjer (pseudokôd)while uvjet do

Akcija1Akcija2…AkcijaN

endwhile

Page 60: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-60

KANONSKA CIKLIČKA STRUKTURACIKLIČ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 akcijarepeat

If uvjet2 ThenGrupa2 akcija

ElseGrupa3 akcija

Endifuntil uvjet3Grupa4 akcija

endwhile

Page 61: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-61

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)

Page 62: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-62

NEKANONSKE STRUKTURE

• sve preostale algoritamske strukture, koje se definiraju određenom rednom ili paralelnom kompozicijom kanonskih struktura, nazivaju se nekanonskim strukturama

Page 63: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-63

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ôdiratiu nekom programskom jeziku i potom ga izvršavati

Page 64: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-64

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

Page 65: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-65

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

Page 66: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-66

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

Page 67: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-67

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

Page 68: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-68

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 >

Page 69: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-69

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

Page 70: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-70

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

Page 71: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-71

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

Page 72: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-72

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

Page 73: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-73

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

Page 74: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-74

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

Page 75: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-75

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

Page 76: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-76

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

Page 77: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-77

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

Page 78: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-78

FIZIČKI I LOGIČKI SLOGFIZIČ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

Page 79: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-79

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

Page 80: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-80

FIZIČKA I LOGIČKAPOVEZANOST 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

Page 81: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-81

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

Page 82: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-82

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

Page 83: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-83

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

Page 84: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-84

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

Page 85: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-85

PROCEDURE I FUNKCIJEPROCEDURE

• 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 parametrimaako 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

Page 86: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-86

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

Page 87: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-87

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

Page 88: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-88

BLOK-DIJAGRAMOGRANIČ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

Page 89: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-89

BLOK-DIJAGRAMULAZ

• unos podataka preko ulazne jedinice (instrukcije ulaza)

IZLAZ

• izlaz podataka preko izlazne jedinice (instrukcije izlaza)

Page 90: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-90

BLOK-DIJAGRAMOBRADA

• obrada podataka kako bi se dobili potrebni rezultati (instrukcije obrade)

ODLUKA

• mjesto grananja u ovisnosti o ispitivanom uvjetu/uvjetima (instrukcije provjere uvjeta)

Page 91: PROGRAMIRANJE - sfsb.unios.hrmcicak/Programiranjep.pdf · programski jezik. Pseudojezikom stvaramo pseudokôd. To je postupno rješenje nekog problema koje upotrebljava kontrolne

•-programiranje-91

BLOK-DIJAGRAMPOZIV POTPROGRAMA

• izvršavanje potprograma prethodno zapisanog izvan glavnog programa (instrukcija poziva potprograma)

PROGRAMSKA MODIFIKACIJA

• instrukcija koja djeluje na neku drugu instrukciju programa