programiranje - gf.unsa.ba · programiranje amir hajdar teme Šta znači programirati? ciklusi...
TRANSCRIPT
PROGRAMIRANJEAmir Hajdar
Teme
Šta znači programirati?Ciklusi programiranjaProblemi i rješavanje problemaJavaBinarna prezentacija podatakaObjekti i klaseOsobine objekt-orjentiranog programiranjaJava programi
2
Šta znači programirati?
Programiranje predstavlja proces definisanjapodataka i operacija nad podacima kako bi se zadati problem riješio.
4.3.
2.
1.
Rješenje!
3
Životni ciklus programiranja
1
Rješavanje problema
(“problem solving”)
2
Implemetacijarješenja problema
(“implementation”)
3
Održavanje programa
(“maintenance”)
4
5
Rješavanje problema
Analiza problema (rezultat mora biti detaljna specifikacija)Razvijanje algoritma za rješavanje problemaProvjera i verifikacija da algoritam stvarno rješava problem
Rješavanje problema
(“problem solving”)
6
Problem
Napraviti algoritam za izračunavanje sedmične plate inžinjera građevinarstva (uz određene pretpostavke date na slijedećoj stranici)Kako bi ovo izračunali uz pomoć papira i olovke?
7
Primjer jednog zaposlenog
Zaposlenik date sedmice radi 54 sataZaposlenik zarađuje 15€/satPretpostavite da radna sedmica iznosi 40 satiPretpostavite da zaposlenik prima 50% višu satnicu za svaki sat nakon 40 sati
(40 * 15€) + (14 * 15€ * 1.5) = 915 €
8
Generalno rješenje problema
Ako zaposlenik ne radi više od 40 sati tadasedmična_plata = broj_radnih_sati * zarada_po_satu
Ako zaposlenik radi više od 40 sati tadasedmična_plata=
40 * zarada_po_satu +
(broj_radnih_sati – 40) * zarada_po_satu * 1.5
Algoritam?
9
Jezik za programiranje
Def: Jezik sa preciznim pravilima, simbolima i rezervisanim riječima koji se koristi kod pisanja kompjuterskih programa
C
C++Pascal
Fortran
Java
10
Implementacija rješenja problema
Prevođenje algoritma u neki od jezika za programiranje (“coding”)U Javi:
Napisati programKompajler prevede program u BytecodeJava Virtual Machine (JVM) prevede Bytecode u mašinski jezik
Implemetacijarješenja problema
(“implementation”)
11
Testiranje programa
Testiranje predstavlja provjeru programa da se pravilno izvršava i proizvodi ispravne rezultate“Debugging” – ispravljanje grešaka u programu
12
Održavanje programa
Faza koja dolazi nakon što je program pušten u radPravljenje izmjena programa da bi se uskladio sa novim zahtjevimaIspravljanje grešaka koje nisu “uhvaćene” tokom faze testiranja
Održavanje programa
(“maintenance”)
13
(Ne)Ispravni put
Algoritam
Program(“code”)Program(“code”)
Problem!
14
Binarna prezentacija podataka
Bit (binary digit) – 0 i 11 Byte = 8 Bita1 KB = 1024 Byte1 MB = 1024 KB
= 1024 * 1024 Byte = 1,048,576 BytePrimjer:1. 1001012 = ?10
2. ?2 = 4910
15
Primjer - animacija16
Primjer - animacija17
ASCII - American Standard Code for Information Interchange
18
Jezici nižeg nivoa
Mašinski jezik:Jezik koji kompjuter koristi (nama potpuno neshvatljiv)“Not portable” –vezan za hardversku arhitekturuBinarne instrukcije kojima se podaci manipulišu
Asembler:Vezan za hardversku arhitekturuKoristi komande koje možemo razumijeti (LOAD, STORE, ADD, itd.)
19
Jezici visokog nivoa
Kompajler prevodi jezik u mašinski jezikKoriste jezik sličan engleskom jezikuPostoje striktni standardi kojih se moramo pridržavati kod korištenja jezikaIpak, postoji više verzija pojedinih jezika što predstavlja problem
20
C/C++/Pascal
Razne biblioteke funkcija
Razne biblioteke funkcija
Objektni kodProgram
(“executable”)Program
(“executable”)Program(“code”)
Kompajler Linker
Test.c Test.objTest.exe
21
Java
Java Bytecode
Java program(“code”)
Kompajler(javac)
Test.java Test.classWindows PC
+JVM
Windows PC+
JVM
Mac+
JVM
Mac+
JVM
Unix+
JVM
Unix+
JVM
javac Test.javajavac Test.java java Test.classjava Test.class
Interpreter(JVM)(java)
22
Java
Ostvaruje portabilnost kroz upotrebu kompajlera(“javac”) i interpretera (“java”)1. Kompajler (“javac”) pretvori program (npr. Test.java)
u Bytecode (npr. Test.class)2. Interpreter (“java”, tj. JVM) pretvori Bytecode u
mašinski jezik koji hardver razumije i pokreće program
23
Java Virtual Machine (JVM)
InterpreterPortabilnost
Ako postoji JVM za kompjuter na kojem radite, svaki java program će raditi
SigurnostJVM limitira šta program može uraditi na kompjuteru na kojem se program izvršava
JednostavnostJVM instrukcije su jednostavnije od mašinskog jezika
24
Java – kontrolne strukture
1. Sekvencijalno izvršavanje2. Uslovno izvršavanje3. Petlje – izvršavanje sa ponavljanjem4. Podprogrami – podjela programa u jednostavnije
cjeline5. (Ne)sinhronizovana kontrola – “event handling”
25
Java - sekvencijalno izvršavanje
InstrukcijaInstrukcija InstrukcijaInstrukcija
InstrukcijaInstrukcija InstrukcijaInstrukcija
InstrukcijaInstrukcija
InstrukcijaInstrukcija
InstrukcijaInstrukcija InstrukcijaInstrukcija . . .
26
Java - uslovno izvršavanje
IF uslov THEN instrukcija_1 ELSE instrukcija_2
27
TRUEinstrukcija_1instrukcija_1
Instrukcija_2Instrukcija_2
FALSE
uslovuslov
Java - petlje
WHILE uslov DO instrukcija
28
TRUE instrukcijainstrukcija
FALSE
. . .
uslovuslov
Java – podprogrami (funkcije)29
funkcija Ffunkcija F
instrukcija_1instrukcija_1
instrukcija_2instrukcija_2
instrukcija_3instrukcija_3
. . .
Java – “event handling”30
eventevent Event handler(podprogram)Event handler(podprogram)