Download presentation
Presentation is loading. Please wait.
1
Prof. dr Miroslav Trajanović
Računarski jezici Prof. dr Miroslav Trajanović Mašinski fakultet u Nišu Osnove programiranja
2
STRUKTURA RAČUNARSKIH SISTEMA
Mašinski fakultet u Nišu Osnove programiranja
3
Struktura tehničkog sistema
Mašinski fakultet u Nišu Osnove programiranja
4
Pojam kodiranja Računar interno koristi binarni brojni sistem, jer njegova logika poznaje samo dva moguća stanja: uklučeno (1) i isključeno (0). Pošto postoji potreba da se obrađuju različiti simboli (cifre , slova, znaci) bilo je potrebno razraditi sistem interne reprezentacije ovih simbola u računaru. Da bi se obezbedila jednoznačnost, uvode se pravila kodiranja podataka u binarni sistem. Binarno kodiranje je postupak kojim se simbol zamenjuje nizom bitova po strogo propisanom sistemu kodiranja. POJAM KODIRANJA Poznato je da računar interno koristi binarni brojni sistem, jer njegova logika poznaje samo dva moguća stanja: uklučeno (1) i isključeno (0). Pošto postoji potreba da se obrađuju različiti simboli (cifre , slova, znaci) bilo je potrebno razraditi sistem interne reprezentacije ovih simbola u računaru. To je postignuto time što se svaki simbol prikazuje nizom nula i jedinica, tj. nizom bitova. Da bi se obezbedila jednoznačnost, uvode se pravila kodiranja podataka u binarni sistem. Binarno kodiranje je postupak kojim se simbol zamenjuje nizom bitova po strogo propisanom sistemu kodiranja. Postoje različiti sistemi kodiranja i za različite namene. Ovde će biti predstavljeni samo najvažniji sistemi kodiranja numeričkih i alfanumeričkih simbola i podataka. Mašinski fakultet u Nišu Osnove programiranja
5
Reprezentacija celih brojeva
Celi brojevi (engleski integers) mogu biti sa ili bez znaka. Interna reprezentacija celih brojevi bez znaka odgovara binarnoj reprezentaciji broja. Najznačajniji bit (prvi sa leva) se koristi za kodiranje znaka. Po konvenciji bit znaka (engleski sign bit) je 0 ako je broj pozitivan i 1 ako je broj negativan. Metode za kodiranje celih brojeva sa znakom su: Magnituda sa znakom, Komplement jedinice, Komplement dvojke. Danas gotovo isključivo koristi metod komplementa dvojke. REPREZENTACIJA CELIH BROJEVA Celi brojevi (engleski integers) mogu biti sa ili bez znaka. Celi brojevi bez znaka su po definiciji pozitivni i nazivaju se prirodni brojevi. Koriste se za definisanje broja komada nekog entiteta u skupu ili za kao redni brojevi. Celi brojevi bez znaka su ne-negativni brojevi i njihova interna reprezentacija odgovara binarnoj reprezentaciji broja. Celi brojevi sa znakom mogu biti pozitivni ili negativni. Ovde je pored broja potrebno kodirati i znak. Postoje tri metode kodiranja celih brojeva sa znakom. Sve tri metode koriste najznačajniji bit (prvi sa leva) za kodiranje znaka. Po konvenciji bit znaka (engleski sign bit) je 0 ako je broj pozitivan i 1 ako je broj negativan. Metode za kodiranje celih brojeva sa znakom su: Magnituda sa znakom, Komplement jedinice, Komplement dvojke. Prva dva metoda su se koristila u ranim danima računarske tehnike, dok se danas gotovo isključivo koristi metod komplementa dvojke. Mašinski fakultet u Nišu Osnove programiranja
6
Magnituda sa znakom Reprezentacija broja se sastoji od dva dela: znaka i magnitude broja. Za znak je odvojen jedan bit, a ostali bitovi prestavljaju magnitudu u binarnoj reprezentaciji. Primer broj = , a negativni broj -56 = Nedostaci: Javljaju se dva moguća koda za nulu, +0 ( ) i -0 ( ), Sabiranje pozitivnog i negativnog broja nije moguće izvesti, nego se operacija mora preurediti na oduzimanje magnitude negativnog broja od pozitivnog. Magnituda sa znakom je najjednostavniji metod kodiranja celih brojeva sa znakom. Reprezentacija broja se sastoji od dva dela: znaka i magnitude broja. Za znak je odvojen jedan bit, a ostali bitovi prestavljaju magnitudu u binarnoj reprezentaciji. Na primer decimalni broj +56 u ovoj reprezentaciji ima oblik , a negativni broj -56 oblik Najveći pozitivan decimalni broj koji može da se memoriše u jednom bajtu je +127, a najveći negativan broj je -127. Iako je jednostavan ovaj metod se reko koristi jer ima neke nedostatke. Najpre, javljaju se dva moguća koda za nulu, +0 ( ) i -0 ( ), što znatno komplikuje logiku centralne procesorske jedinice. Takođe, sabiranje pozitivnog i negativnog broja nije moguće izvesti, nego se operacija mora preurediti na oduzimanje magnitude negativnog broja od pozitivnog. Ovo takođe komlikuje logiku rada procesora. Mašinski fakultet u Nišu Osnove programiranja
7
Komplement jedinice Komplement jedinice nekog binarnog broja se dobija tako što svi bitovi koji su bili 0 postaju 1, a svi koji su bili 1 postaju 0. Primer: komplement jedinice binarnog broja 1001 je 0110. Prvi bajt predstavlja znak broja. Magnituda pozitivnih brojeva odgovara binarnoj reprezentaciji magnitude. Magnituda negativnih brojeva se dobija kao komplement jedinice binarne reprezentacije magnitude. Primer, broj ima reprezentaciju , a broj Kodiranje negativnih celih brojeva komplementom jedinice opisano je izrazom: -X = not(X) Komplement jedinice nekog binarnog broja se dobija tako što svi bitovi koji su bili 0 postaju 1, a svi koji su bili 1 postaju 0. Na primer komplement jedinice binarnog broja 1001 je I u slučaju reprezentacije metodom komplementa jedinice prvi bajt predstavlja znak broja. Magnituda pozitivnih brojeva odgovara binarnoj reprezentaciji magnitude. Magnituda negativnih brojeva se dobija kao komplement jedinice binarne reprezentacije magnitude. Na primer, decimalni broj +51 ima reprezentaciju , a broj -51 ima Kodiranje negativnih celih brojeva komplementom jedinice opisano je izrazom: -X = not(X) Treba primetiti da se procedurom komplementiranja automatski menja i bit znaka broja. Metod komplementa jedinice ima iste nedostatke kao i metod magnitude sa znakom. Mašinski fakultet u Nišu Osnove programiranja
8
Komplement dvojke Komplement dvojke nekog binarnog broja nalazi se po sledećoj proceduri: Odredi se komplement jedinice datog binarnog broja Doda se jedinica rezultatu iz prvog koraka. Procedura nalaženja komplementa dvojke će biti prikazana na primeru broja 5610 Komplement dvojke nekog binarnog broja nalazi se po sledećoj proceduri: Odredi se komplement jedinice datog binarnog broja Doda se jedinica rezultatu iz prvog koraka. Procedura nalaženja komplementa dvojke će biti prikazana na primeru decimalnog broja 56 Binarni broj Komplement jedinice Sabiranje sa 1 +1 Komplement dvojke Mašinski fakultet u Nišu Osnove programiranja
9
Komplement dvojke Reprezentacija negativnih brojeva dobija se tako što se nađe komplement dvojke datog pozitivnog broja. Primer: = Kodiranje negativnih celih brojeva komplementom dvojke opisano je izrazom: -X = not(X) + 1 U slučaju reprezentacije celih brojeva sa znakom postoji samo jedan kod za 010 čiji je kod , pa se jednim bajtom mogu reprezentovati brojevi od -128 do +127. Reprezentacija negativnih brojeva se po ovoj reprezentaciji dobija tako što se nađe komplement dvojke datog pozitivnog broja. U ovom slučaju je broj reprezentacija decimalnog broja -56. Ako se izvrše dve uzastopne negacije i po ovom metodu će se dobiti početni broj. Kodiranje negativnih celih brojeva komplementom dvojke opisano je izrazom: -X = not(X) + 1 U slučaju reprezentacije celih brojeva sa znakom postoji samo jedan kod za decimalni broj 0 čiji je kod , pa se jednim bajtom mogu reprezentovati brojevi od -128 do +127. Mašinski fakultet u Nišu Osnove programiranja
10
BCD (Binary Coded Decimal) kodiranje
Decimalni broj NBC BCD Exces-3 Gray 0000 0011 1 0001 0100 2 10 0010 0101 11 3 0110 4 100 0111 110 5 101 1000 111 6 1001 7 1010 8 1011 1100 9 1101 Pored prethodna tri, za reprezentaciju celih brojeva se koristi i metod binarnog kodiranja decimalnih brojeva ili BCD (Binary Coded Decimal) kodiranje. Najpoznatiji BCD kodovi su: 8421 BCD, Excess-3 i Gray-ov kod. U ovom slučaju je potrebno kodirati decimalne cifre od nula do devet. Kodiranje se vrši tako što se svaka cifra decimalnog broja predstavlaja sa četiri bita. Koja će kombinacija bitova predstavljati neku decimalnu cifru zavisi od izabrane šeme kodiranja. U tabeli su prikazani različiti kodovi za cifre decimalnog sistema. Mašinski fakultet u Nišu Osnove programiranja
11
Primer 8421 BCD kod Decimalno 8421 BCD 2 5 7 9 0010 0101 0111 1001
BCD kodovi su manje ekonomičan od binarne reprezentacije broja. Na primer, sa 8 bita je moguće predstaviti cele nenegativne brojeve u intervalu od 0 do 255, a u BCD kodu samo od 0 do 99. U radu sa 8421 BCD kodom se javljaju problemi pri operacijama sabiranja i oduzimanja, pa se zbog toga često koristi Excess-3 kod. Grey-ov kod se uglavnom koristi kod računara i merne opreme koja je namenjena akviziciji podataka. Najčešće se koristi standardni 8421 BCD kod, koji je istovetan sa binarnom prezentacijom cifara. Tako, na primer, decimalni broj 2579 u 8421 BCD kodu ima oblik koji je prikazan na slajdu. Ovaj kod je, kao i ostali BCD kodovi, manje ekonomičan od binarne reprezentacije broja. Na primer, sa 8 bita je u binarnom zapisu moguće predstaviti cele nenegativne brojeve u intervalu od 0 do 255, a u BCD kodu samo od 0 do 99. Razlog za njegovo korišćenje leži u činjenici da je olakšana komunikacija između čoveka i računara, jer se pojedine cifre mogu lakše dekodirati nego ceo broj. U radu sa 8421 BCD kodom se javljaju problemi pri operacijama sabiranja i oduzimanja, pa se zbog toga često koristi Excess-3 kod. Grey-ov kod se uglavnom koristi kod računara i merne opreme koja je namenjena akviziciji podataka. Ovaj kod se u industrijskoj praksi pokazao najpouzdaniji zbog toga što se prilikom promene vrednosti broja za jedan uvek menja samo po jedan bit u kodu. Mašinski fakultet u Nišu Osnove programiranja
12
Reprezentacija realnih brojeva
Računari koriste racionalne (razlomljene) brojeve koji se u računarskoj tehnici nazivaju realni brojevi. Reprezentacija sa pokretnim zarezom (floating point). Sistem sa pokretnim zarezom se bazira na zapisu koji se naziva naučna notacija. Primer: decimalni broj 2349,625 se može prikazati kao 23,49625 * 102 234,9625 * 101 23496,25 * 10-1 Da bi se izbegle zabune brojevi u naučnoj notaciji se prikazuju u normalizovanom obliku, u kome celobrojni deo ima samo jednu cifru, a sve ostale cifre su iza zareza. Normalizovan oblik 2, * 103 Računari koriste racionalne (razlomljene) brojeve koji se u računarskoj tehnici nazivaju realni brojevi. Kako ovi brojevi mogu da imaju različit broj cifara ispred i iza zareza, razvijen je sistem reprezentacije koji se naziva reprezentacija sa pokretnim zarezom (floating point). U domaćoj literaturi se umesto izraza pokretni koriste i izrazi plivajući ili klizni, a umesto izraza zarez koristi se izraz tačka, što je bliže originalnom engleskom nazivu. Reprezentacija sa pokretnim zarezom se koristi i za reprezentaciju vrlo velikih celih brojeva sa znakom. Sistem sa pokretnim zarezom se bazira na zapisu koji se naziva naučna notacija. Isti broj se može predstaviti na različite načine. Na primer, decimalni broj 2349,625 ima celobrojni deo opisan sa 4 cifre i decimalni deo opisan sa 3 cifre. Međutim u reprezentaciji sa pokretnim zarezom on može biti zapisan i kao: 23,49625 * 102 234,9625 * 101 23496,25 * 10-1 ili na neki sličan način. U svim slučajevima vrednost broja je ista. Kao što se iz prethodnog primera vidi zarezu je moguće menjati mesto (otuda naziv pokretni zarez) u odgovarajuću promenu eksponenta. Da bi se izbegle zabune brojevi u naučnoj notaciji se prikazuju u normalizovanom obliku, u kome celobrojni deo ima samo jednu cifru, a sve ostale cifre su iza zareza. Broj iz prethodnog primera u normalizovanom obliku ima sledeću formu: 2, * 103 Mašinski fakultet u Nišu Osnove programiranja
13
Opšti slučaj decimalnog broja u normalizovanom obliku
± M * 10E M – mantisa E – eksponent Mantisa se može razložiti na celobrojni deo C i decimalni deo D, pri čemu je celobrojni deo C jedna cifra koja mora biti u intervalu 1 ≤ C ≤ 9. Jedini izuzetak od ovog pravila je broj nula. Broj cifara koje sadrži mantisa definišu preciznost kojom broj opisuje neku vrednost. Ove cifre se nazivaju značajne cifre. Primer: vrednost izraza 1/3 se može zapisati kao 3,33* 10-1 ili kao * 10-1. U prvom slučaju preciznost je 3 značajne cifre, a u drugom 5. U opštem slučaju, bilo koji decimalni broj u normalizovanom obliku se može napisati kao: ± M puta 10 na E Gde je: M – mantisa E – eksponent, koji može biti nula ili bilo koji pozitivan ili negativan ceo broj. Mantisa se može razložiti na celobrojni deo C i decimalni deo D, pri čemu je celobrojni deo C jedna cifra koja mora biti u intervalu 1 ≤ C ≤ 9. Jedini izuzetak od ovog pravila je broj nula. Broj cifara koje sadrži mantisa definišu preciznost kojom broj opisuje neku vrednost. Ove cifre se nazivaju značajne cifre. Na primer, vrednost izraza 1/3 se može zapisati kao 3,33* 10-1 ili kao * U oba slučaja je vrednost 1/3 približno definisana, obzirom da rezultat nema konačan broj cifara. U prvom slučaju preciznost je 3 značajne cifre, a u drugom 5. Mašinski fakultet u Nišu Osnove programiranja
14
Realni brojevi se u binarnom brojnom sistemu
i - pozicija cifre levo od decimalnog znaka j - pozicija cifre desno od decimalnog znaka n - broj cifara celobrojnog dela broja m - broj cifara decimalnog dela broja ai - cifra na i-toj poziciji ulevo od decimalnog znaka aj - cifra na j-toj poziciji udesno od decimalnog znaka. Realni brojevi se u binarnom brojnom sistemu mogu prikazati na sličan način. Vrednost nekog realnog binarnog broja može se izračunati po izrazu prikazanom na slajdu. gde je: i - pozicija cifre levo od decimalnog znaka j - pozicija cifre desno od decimalnog znaka n - broj cifara celobrojnog dela broja m - broj cifara decimalnog dela broja ai - cifra na i-toj poziciji ulevo od decimalnog znaka aj - cifra na j-toj poziciji udesno od decimalnog znaka. Mašinski fakultet u Nišu Osnove programiranja
15
Težine cifara levo od decimalnog znaka
Pozicija cifre levo od decimalnog znaka 1 2 3 4 5 ... Težina 2-1 2-2 2-3 2-4 2-5 1/2 1/4 1/8 1/16 1/32 0.5 0.25 0.125 0.0625 Težine cifara levo od decimalnog znaka imaju vrednost kao u tabeli Mašinski fakultet u Nišu Osnove programiranja
16
Konverzija decimalnog realnog broja u binarni
Posebno se konvertuju celobrojni i decimalni deo. Celobrojni deo broja se konvertuje u binarni broj metodom koji se normalno koristi za cele brojeve. Decimalni deo, koji ima opšti oblik 0,abcde..., se konvertuje prema sledećem algoritmu: Decimalni broj 0,abcde se množi sa 2 i dobija se rezultat oblika p,qrstu Cifra p postaje prva decimalna cifra binarne reprezentacije i ona se otklanja iz broja Ostatak 0,qrstu se ponovo množi sa 2 kako bi se dobila sledeća decimalna cifra binarnog broja Koraci 2 i 3 se ponavljaju sve dok ostatak ne bude nula ili dok se ne postigne željena preciznost. Konverzija decimalnog realnog broja u binarni se vrši tako što se posebno konvertuju celobrojni i decimalni deo. Celobrojni deo broja se konvertuje u binarni broj metodom koji se normalno koristi za cele brojeve. Decimalni deo, koji ima opšti oblik 0,abcde..., se konvertuje prema sledećem algoritmu: Decimalni broj 0,abcde se množi sa 2 i dobija se rezultat oblika p,qrstu Cifra p postaje prva decimalna cifra binarne reprezentacije i ona se otklanja iz broja Ostatak 0,qrstu se ponovo množi sa 2 kako bi se dobila sledeća decimalna cifra binarnog broja Koraci 2 i 3 se ponavljaju sve dok ostatak ne bude nula ili dok se ne postigne željena preciznost. Mašinski fakultet u Nišu Osnove programiranja
17
Primer konverzije broja 0,2875
Korak Množenje sa 2 Rezultat Binarna cifra 1 0,2875 * 2 0,575 2 0,575 * 2 1,15 3 0,15 * 2 0,30 4 0,30 * 2 0,60 5 0,60 * 2 1,2 6 0,2 * 2 0,4 7 0,4 * 2 0,8 8 0,8 * 2 1,6 9 0,6 * 2 0, ~ 0, Radi ilustracije ovog algoritma, prikazuje se postupak konverzije decimalnog broja 0,2875 u binarni oblik. Procedura je prikazana u tabeli. Postupak konverzije je prekinut posle 9 koraka iako je ostatak bio 0,2 a ne 0. Ovo znači da vrednost binarnog broja 0, približno aproksimira vrednost decimalnog broja 0,2875. Ako se sada izvrši konverzija broja 0, u decimalni oblik, videće se da on ima vrednost 0, Dakle, razlika između vrednosti broja 0,2875 i njegove binarne reprezentacije sa 9 značajnih cifara 0, je 0, Ovo pokazuje da se u internoj reprezentaciji vrednosti realnih brojeva najčešće aproksimiraju. Mašinski fakultet u Nišu Osnove programiranja
18
Binarni oblik naučne notacije
Normalizovani oblik nekog broja u naučnoj notaciji se može predstaviti i u binarnom brojnom sistemu Opšti oblik broja je: ± M * 2E Celobrojni deo mantise C, koji je u ovom slučaju binarna cifra, može da uzme samo vrednost C=1, jer zbog izvršene normalizacije prva cifra ne može da bude nula. Ova činjenica je iskorišćena da se sa istim brojem bitova dobije binarna reprezentacija veće preciznosti. Normalizovani oblik nekog broja u naučnoj notaciji se može na sličan način predstaviti i u binarnom brojnom sistemu. U tom slučaju opšti oblik broja je: ± M puta 2 na E Pri čemu celobrojni deo mantise C, koji je u ovom slučaju binarna cifra, može da uzme samo vrednost C=1, jer zbog izvršene normalizacije prva cifra ne može da bude nula. Kao što će kasnije biti pokazano, ova činjenica je iskorišćena da se sa istim brojem bitova dobije binarna reprezentacija veće preciznosti. Mašinski fakultet u Nišu Osnove programiranja
19
Primer broja 2349,62510 U binarnom brojnom sistemu pre normalizacije izgleda ,1012. Posle normalizacije 1, * Decimalni zarez je pomerena za 11 mesta, pa je vrednost eksponenta E = 1110 = Jedina cifra celobrojnog dela 1, što je slučaj sa svim normalizovanim binarnim brojevima. Na primer, broj 2349,62510 u binarnom brojnom sistemu pre normalizacije izgleda ,101. Posle normalizacije ovaj broj dobija oblik 1, * Decimalni zarez je pomerena za 11 mesta, pa je vrednost eksponenta E = Iza primera se vidi da je jedina cifra celobrojnog dela 1, što je slučaj sa svim normalizovanim binarnim brojevima. Mašinski fakultet u Nišu Osnove programiranja
20
Format zapisa brojeva sa pokretnim zarezom
31 30 23 22 znak eksponent mantisa U ranim danima računarske tehnike svaki proizvođač računara je imao sopstveni metod za internu reprezentaciju realnih brojeva. Ovo je dovodilo do teškoća u prenosu podataka sa jednog na drugi računar, sve dok nije donet standard IEEE 754. Prema ovom standardu brojevi sa pokretnim zarezom se mogu zapisati u jednostrukoj i dvostrukoj preciznosti. Format zapisa brojeva sa pokretnim zarezom u jednostrukoj preciznosti ima oblik prikazan na slajdu. Po ovom formatu jedan bit se koristi za reprezentaciju znaka, 8 bitova za reprezentaciju eksponenta i 23 bitova za reprezentaciju mantise, dakle ukupno 32 bita. Bit za znak ima vrednost 1 ukoliko je znak negativan i 0 ukoliko je znak pozitivan. Mašinski fakultet u Nišu Osnove programiranja
21
Pozitivan ili negativan celobrojni eksponent
Za reprezentaciju vrednosti eksponenta predviđeno 8 binarnih cifara Ako se jedna cifra odvoji za znak eksponentasmanjiće se vrednost najvećeg eksponenta koji je moguće reprezentovati na polovinu. eksponent bi mogao da bude u intervalu ± 6410. Zato se uvodi predvrednost eksponenta (bias) koja iznosi 127. Ovaj broj se dodaje stvarnoj vrednosti eksponenta koja može da se kreće u intervalu ≤ E ≤ U reprezentaciji eksponenta se upisuje u binarnom obliku pozitivan broj koji može da bude u rangu od 0 do 255, a stvarna vrednost eksponenta se dobija kad se od tog broja oduzme broj Realni brojevi mogu imati pozitivan ili negativan celobrojni eksponent. Kako je za reprezentaciju vrednosti eksponenta predviđeno 8 binarnih cifara, to znači da bi jednu trebalo odvojiti za znak eksponenta, čime bi se smanjila vrednost najvećeg eksponenta koji je moguće reprezentovati na polovinu. Drugim rečima, eksponent bi mogao da bude u intervalu ± Da bi se to izbeglo, uvodi se predvrednost eksponenta (bias) koja iznosi 127. Ovaj broj se dodaje stvarnoj vrednosti eksponenta koja može da se kreće u intervalu ≤ E ≤ Dakle, u reprezentaciji eksponenta se upisuje u binarnom obliku pozitivan broj koji može da bude u rangu od 0 do 255, a stvarna vrednost eksponenta se dobija kad se od tog broja oduzme broj Mašinski fakultet u Nišu Osnove programiranja
22
Predvrednost eksponenta (bias)
Stvarna decimalna vrednost eksponenta (E) Decimalna vrednost u zapisu eksponenta Binarna vrednost u zapisu eksponenta +6 133 +128 255 127 -6 121 -127 Na slajdu je prikazana uporedna tabela stvarne vrednosti eksponenta i vrednosti koja je u binarnom obliku upisana u polje za eksponent Mašinski fakultet u Nišu Osnove programiranja
23
Jednostruka tačnost Interna reprezentacija mantise se sastoji od prvih 23 decimalnih cifara iz normalizovanog binarnog zapisa mantise. Celobrojni deo mantise, koji je uvek jedinica, se odbacuje kao redundantan podatak. Na taj način se povećava preciznost prezentacije na 24 cife. Ova reprezentacija je poznata kao reprezentacija skrivene jedinice. Ovakva interna reprezentacija mantise dozvoljava tačno prikazivanje prvih sedam značajnih cifara realnog broja u decimalnom obliku. Interna reprezentacija mantise se sastoji od prvih 23 decimalnih cifara iz normalizovanog binarnog zapisa mantise. Celobrojni deo mantise, koji je uvek jedinica, se odbacuje kao redundantan podatak. Na taj način se povećava preciznost prezentacije na 24 cife. Ova reprezentacija je poznata kao reprezentacija skrivene jedinice. Ovakva interna reprezentacija mantise dozvoljava tačno prikazivanje prvih sedam značajnih cifara realnog broja u decimalnom obliku. Mašinski fakultet u Nišu Osnove programiranja
24
Dvostruka tačnost Ukupno 64 bita Jedan bit se koristi za znak,
11 za eksponent i 52 za mantisu. predvrednost (bias) je u ovom slučaju Binarna preciznost mantise od 52 cifre omogućuje preciznost od 15 značajnih cifara u decimalnom brojnom sistemu. Pored jednostruke, standard IEEE 754 definiše i format zapisa brojeva sa pokretnim zapisom u dvostrukoj tačnosti (double precision). Za binarnu reprezentaciju realnih brojeva se u dvostrukoj preciznosti koristi 64 bita. Jedan bit se koristi za znak, 11 za eksponent i 52 za mantisu. Eksponent se određuje tako što se stavrnom eksponentu dodaje predvrednost (bias) koja je u ovom slučaju Ovo je zbog toga što se za zapis eksponenta koristi 11 binarnih cifara, što omogućuje reprezentaciju celih brojeva vrednosti do Binarna preciznost mantise od 52 cifre omogućuje preciznost od 15 značajnih cifara u decimalnom brojnom sistemu. 63 62 52 51 znak eksponent mantisa Mašinski fakultet u Nišu Osnove programiranja
25
Oblasti brojeva Oblast brojeva (približno) Binarno Decimalno 32 24
Dužina internog zapisa u bitovima Preciznost mantise u bitovima Oblast brojeva (približno) Binarno Decimalno Jadnostruka preciznost 32 24 2-126 do 2127 1,18*10-38 do 3,40*1038 Dvostruka preciznost 64 53 do 21023 2,23* do 1,79*10308 U tabeli na slajdu je dat uporedni prikaz oblasti brojeva koji se može prikazati jednostrukom i dvostrukom tačnošću. Ovi brojevi mogu biti pozitivni ili negativni. Treba primetiti da je nemoguće prikazati jako male brojeve bliske nuli, što u slučajevima deljenja malih brojeva velikim u nekim programima dovodi do numeričke nestabilnosti ili prekida rada programa. Mašinski fakultet u Nišu Osnove programiranja
26
Specijalni slučajevi IEEE 754 standard identifikuje 5 kategorija brojeva sa pokretnim zarezom: nula, beskonačan broj, NaN, denormalizovani broj i normalizovani broj. Nula je izdvojena u posebnu kategoriju zato što po napred navedenim pravilima normalizacije nikad ne može biti normalizovana (ne javlja se celobrojna 1). Ona može bit pozitivna ili negativna. Beskonačan broj se dobija kao rezultat operacije u kojoj se broj različit od nule deli sa nulom. I on može biti pozitivan ili negativan. NaN je skraćenica od Not a number. Ovakav “broj” se dobija kao rezultat loše definisanih operacija. Tipičan primer je operacija deljenja 0.0 sa 0.0 koja nema matematički definisan rezultat, pa se rezultat operacije ne smatra brojem. Denormalizovani brojevi su uvedeni da bi mogla da se vrši interna prezentacija brojeva koji su manji od najmanjeg normalizovanog broja koji je moguće zapisati. IEEE 754 standard identifikuje 5 kategorija brojeva sa pokretnim zarezom: nula, beskonačan broj, NaN, denormalizovani broj i normalizovani broj. Ranije je opisan zapis normalizovanih brojeva. Nula, beskonačni broj i NaN, su specijalni slučajevi. Nula je izdvojena u posebnu kategoriju zato što po napred navedenim pravilima normalizacije nikad ne može biti normalizovana (ne javlja se celobrojna 1). Ona može bit pozitivna ili negativna. Beskonačan broj se dobija kao rezultat operacije u kojoj se broj različit od nule deli sa nulom. I on može biti pozitivan ili negativan. NaN je skraćenica od Not a number. Ovakav “broj” se dobija kao rezultat loše definisanih operacija. Tipičan primer je operacija deljenja 0.0 sa 0.0 koja nema matematički definisan rezultat, pa se rezultat operacije ne smatra brojem. Denormalizovani brojevi su uvedeni da bi mogla da se vrši interna prezentacija brojeva koji su manji od najmanjeg normalizovanog broja koji je moguće zapisati. Mašinski fakultet u Nišu Osnove programiranja
27
5 kategorija brojeva sa pokretnim zarezom
Eksponent Frakcija nula Beskonačan broj NaN (not a number) ≠ 0 Denormalizovani brojevi Normalizovani brojevi ≠ ≠ U tabeli su prkazane 5 kategorije brojeva sa pokretnim zarezom i njihovi eksponenti. Mašinski fakultet u Nišu Osnove programiranja
28
ARITMETIČKO – LOGIČKA JEDINICA
Princip rada računara OPERATIVNA MEMORIJA SISTEMSKI PROGRAMI APLIKATIVNI PROGRAMI PODACI UPRAVLJAČKA JEDINICA DEKODER ADRESA MEMORIJSKI REGISTRI PODATAKA MEMORIJSKI ADRESNI REGISTRI REGISTAR NAREDBI ADRESNI DEO (OPERANDI) KOD OPERACIJA PROGRAMSKI BROJAČ DEKODER OPERACIJE GENERATOR UPRAVLJAČKIH SIGNALA TAKTNI GENERATOR ARITMETIČKO – LOGIČKA JEDINICA Mašinski fakultet u Nišu Osnove programiranja
29
Koraci izvođenja naredbe
Faza prihvatanja Čitanje naredbe Dekodiranje naredbe Čitanje operanda Određivanje adrese naredne naredbe Faza izvršavanja - izvođenje naredbe Faza odlaganja -zapisivanje rezultata U prvom koraku se iz programskog brojača čita adresa memorijske lokacije naredbe koja će se izvršiti i vrši njeno kopiranje iz operativne memorije u registar naredbi. Naredba se sastoji iz operacionog koda, modifikatora i jednog ili više operanada. Svaka naredba (npr. sabiranje ili komplementiranje) imaju svoj kod na osnovu koje je upravljačka jedinica prepoznaje. Modifikator je podatak koji prikazuje koji je način adresiranja primenjen i pomaže u određivanju stvarnih memorijskih adresa operanda. Operand ili operandi su podaci nad kojima se operacija vrši. Za različite operacije razlikuju se broj i i značenje operanda. Tako operandi mogu biti: adresa memorijske lokacije podatka nad kojim se vrši operacija broj memorijskog registra koji se koristi u operaciji adresa memorijske lokacije koja koristi naredbu na koju se prenosi tok izvršenja programa logička adresa periferne jedinice koja učestvuje u operaciji U drugom koraku se kod operacije prosleđuje dekoderu operacija koji prepoznaje operaciju i preko generatora priprema upravljačku jedinicu za izvršenje tražene naredbe. U narednom koraku se određuju stvarne adrese operanda i one se kopiraju u memorijski registar podataka. Na kraju faze koja se zove prihvatanje i koja obuhvata sve prethodne korake, se vrši određivanje adrese memorijske lokacije naredbe. To se postiže odgovarajućim inkrementiranjem programskog brojača ukoliko je struktura programa linijska ili izračunavanjem adrese ukoliko se radi o granjanju ili petlji. Druga faza je faza izvršavanja. Pošto su pripremljeni svi potrebni elementi izvršava se operacija čiji je kod pročitan. Ukoliko je u pitanju bila aritmetičko-logička naredba postoji još jedna faza u kojoj se dobijeni rezultati zapisuju. Kada se izvrši kompletan ciklus, čita se nova naredba i ciklus se ponavlja. Sinhronizaciju izvršavanja napred navedenih koraka vrši taktni generator. On prozvodi taktni impuls vrlo visoke frekvence (1-5 GHz) koji, ustvari, određuje brzinu rada računara. Vreme između generisanja dva takta naziva se mašinski ciklus. Za izvršenje jedne naredbe potrebno je jedan ili više mašinskih ciklusa. Tokom faza pripreme i izvršavanja naredbi u procesoru se događaju određene promene u njegovim registrima. Ove promene mogu da se ostvare na dva načina: ožičenom logikom i mikroprogramski. Ožičeni procesori (hardwired) imaju fiksno ožičen generator upravljačkih signala koji može da izvršava konačan broj unapred određenih naredbi. Obogaćivanje procesora novim naredbama podrazumeva izmene u procesoru. Mikroprogramski realizovani procesori imaju pored registra naredbi i registre mikronaredbi. Jednoj naredbi odgovara nekoliko mikro naredbi. Sve ove naredbe su smeštene u posebnoj mikroprogramskoj memoriji. Ovakvi procesori su bolji od ožičenih iz dva razloga: jeftiniji su i omogućavaju promenu ili proširenje seta naredbi koje procesor može da izvršava. Mašinski fakultet u Nišu Osnove programiranja
30
Mašinski jezik I generacija Svaki procesor ima svoj mašinski jezik
Svi programski jezici se pre izvršenja prevode na mašinski jezik I generacija Mašinski fakultet u Nišu Osnove programiranja
31
Mašinski jezik int counter = 0; counter = counter + 1;
Primer Java programa: int counter = 0; counter = counter + 1; Adekvatni zapis u mašinskom jeziku: Mašinski fakultet u Nišu Osnove programiranja
32
Vrste računarskih jezika
Programski jezici (npr. Java, C++) Skript jezici (npr. pHp, Pyton, JavaScript) Specifikacioni jezici (IDEF, dijagrami) Jezici upita (SQL) Markup jezici (HTML, XHTML, TeX, SGML, XML) Transformacioni jezici (XSLT - Extensible Stylesheet Language Transformations) Mašinski fakultet u Nišu Osnove programiranja
33
OSNOVNI POJMOVI SINTAKSA JEZIKA: skup pravila koja definišu legalnu upotrebu jezika SEMANTIKA: značenje pojedinih konstrukcija REZERVISANE REČI Mašinski fakultet u Nišu Osnove programiranja
34
Generacije programskih jezika
I generacija - Mašinski jezik II generacija - Asembler III generacija Proceduralno orijentisani Problemski orijentisani Objektno orijentisani IV generacija (Aplikacioni jezici 4GLs) V generacija (Rešavanje problema upotrebom ograničenja 5GL) Prirodni jezici Mašinski fakultet u Nišu Osnove programiranja
35
VRSTE JEZIKA Deklarativni jezici Šta program treba da uradi Primer SQL
Imperativni jezici Kako program to treba da uradi Primer Java, C++ Mašinski fakultet u Nišu Osnove programiranja
36
JOŠ JEDNA KLASIFIKACIJA
Applicative (functional) languages Concurrent, distributed, and parallel languages Constraint and logic languages Data-flow languages Design languages Extensible languages Macro and assembly languages Microprogramming languages Multiparadigm languages Nondeterministic languages Nonprocedural languages Object-oriented languages Specialized application languages Very high-level languages Mašinski fakultet u Nišu Osnove programiranja
37
Asembler II generacija Jezik zasnovan na mnemonicima
Svakom mnemoniku odgovara jedna instrukcija mašinskog jezika I danas se koriste kada je potrebno pisati sistemske programe II generacija Mašinski fakultet u Nišu Osnove programiranja
38
Asembler movl #0x1,n compare: cmpl #oxa,n cgt end_of_loop acddl #0x1,n
bra compare end_of_loop: Mašinski fakultet u Nišu Osnove programiranja
39
Proceduralno orijentisani
III generacija Proceduralno orijentisani NAUČNI FORTRAN ( ) FORmula TRANslator APL (1968) A Programming Language POSLOVNI COBOL (1959) Comon Busines Oriented Language RPG (1964) Report Program Generator VIŠENAMENSKI BASIC (1965) Pascal (1968) Blaise Pascal Ada (1980) Augusta Ada Lovelance C (1972) Mašinski fakultet u Nišu Osnove programiranja
40
Problemski orijentisani
III generacija Problemski orijentisani GPSS - jezik za simulaciju sistema APT - za NUMA PostScript Mašinski fakultet u Nišu Osnove programiranja
41
Objektno orijentisani jezici
III generacija Objektno orijentisani jezici Smalltalk C++ Java Eiffel Mašinski fakultet u Nišu Osnove programiranja
42
RAZVOJ JEZIKA Mašinski fakultet u Nišu Osnove programiranja
43
JEZICI ČETVRTE GENERACIJE
IV generacija JEZICI ČETVRTE GENERACIJE "Application specific" jezici. Neproceduralni jezici visokog nivoa izgrađeni oko baza podataka. Nazivaju ih i "report-generator" jezici jer opisuju format podataka i izveštaj da bi se generisao i preveo u neki drugi jezik (npr COBOL) Poznatiji 4GL su: SQL, FOCUS, PostScript, Gaus, Mathematica Mašinski fakultet u Nišu Osnove programiranja
44
JEZICI PETE GENERACIJE
Prolog, OPS5, Mercury Povezani sa veštačkom inteligencijom (AI - artificial intelligence) Programiranje logike , modeliranje realnog sveta ili situacije Experni sistemi Sistemi zasnovani na znanju (KBS – Knowledge Based Systems) Fuzzy logic, Neural networks Mašinski fakultet u Nišu Osnove programiranja
45
JEZICI VEŠTAČKE INTELIGENCIJE
IPL – Information Processing Language (1960) – vrlo primitivan LISP - list processing 1960 – fakti su predstavljani listama PROLOG – programming in logic – jezik zasnovan nad produkcionim pravilima CLIPS Mašinski fakultet u Nišu Osnove programiranja
46
ŽIVOTNI CIKLUS PROGRAMA
PROJEKTOVANJE Algoritam User interface Arhitektura i organizacija programa RAZVOJ IZVRŠENJE Izvršni kod se učitava u RAM (loader) Rezerviše se mesto za program i podatke ODRŽAVANJE Ispravljanje uočenih grešaka Poboljšanje i proširenje funkcija programa Mašinski fakultet u Nišu Osnove programiranja
47
RAZVOJ PROGRAMA Projektovanje aplikacije
Pisanje izvornog koda (editor) Dokumentovanje programa Prevođenje u objektni kod (compiler - interpreter) Povezivanje sa podprogramima i bibliotečkim funkcijama (linker) Testiranje Izrada uputstva za korišćenje programa Izrada poboljšanih i novih verzija programa Mašinski fakultet u Nišu Osnove programiranja
48
IZVRŠAVANJE PROGRAMA Prevodioci – compiler Interpreteri
Virtuelne mašine WEB - čitači web stranica Mašinski fakultet u Nišu Osnove programiranja
49
NAJVAŽNIJI JEZICI U UPOTREBI
PASCAL C++ C# JAVA VISUAL BASIC HTML Mašinski fakultet u Nišu Osnove programiranja
50
PASCAL Razvio ga je 1970 Nicklaus Wirth da bi efikasno učio studente programiranju Strukturno programiranje (top-down design) korišćenjem procedura Mašinski fakultet u Nišu Osnove programiranja
51
BASIC I PASKAL ŠPAGETI KOD X :=sqr(X) + 5 writeln ('Vrednost X=',X)
if X>5 then begin X :=sqr(X) + 5 writeln ('Vrednost X=',X) end else X:=0 writeln (X je premalo') end; 100 IF X>5 THEN 200 ELSE 300 110 PRINT "VREDNOST X=";X 120 END 200 X=X*X + 5 210 GOTO 110 300 X=0 310 PRINT "X JE PREMALO" 320 GOTO 120 ŠPAGETI KOD Mašinski fakultet u Nišu Osnove programiranja
52
C++ Objektno orijentisan Objekti su definisani klasama
Objekt je instanca neke klase Izvedene klase nasleđuju osobine svojih roditelja (Inheritance) Polimorfizam Mašinski fakultet u Nišu Osnove programiranja
53
JAVA 1995 Objektno orijentisan
Interpretiran – Java prevodilac generiše kod za Java Virtual Machine Nezavisan od arhitekture Multithreaded – izvršenje u više niti Posebno pogodan za Internet aplikacije Mašinski fakultet u Nišu Osnove programiranja
54
C # C# je komponentno orijentisan programski jezik (na srpskom se čita kao C sharp. Sličan je Javi u tom smislu što programerima omogućava da kôd pišu samo jednom a potom njegove delove iznova koriste za pravljenje različitih aplikacija. Izveden je iz jezika C i C++ i Microsoft ga smatra najefikasnijim programskim jezikom za izgradnju Web usluga zasnovanih na proširivom jeziku za označavanje (Extensible Markup Language, XML). Mašinski fakultet u Nišu Osnove programiranja
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.