68

milena · PDF fileKurs obra duje napredne pojmove proceduralnog programiranja i ... Novo: Programiranje 2, zbirka zadataka senjimasa re ... potrebno je u citi iz knjige!

Embed Size (px)

Citation preview

Programiranje 2

Milena Vujo�sevi�c Jani�ci�c

Jelena Graovac

www.matf.bg.ac.rs/~milena

www.matf.bg.ac.rs/~jgraovac

Beograd, 23. februar, 2016.

O kursuBitovski operatori

Organizacija izvornog kodaOrganizacija memorije

Literatura

Pregled

1 O kursu

2 Bitovski operatori

3 Organizacija izvornog koda

4 Organizacija memorije

5 Literatura

Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2

O kursuBitovski operatori

Organizacija izvornog kodaOrganizacija memorije

Literatura

LiteraturaObaveze studenata

Pregled

1 O kursu

Literatura

Obaveze studenata

2 Bitovski operatori

3 Organizacija izvornog koda

4 Organizacija memorije

5 Literatura

Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2

O kursuBitovski operatori

Organizacija izvornog kodaOrganizacija memorije

Literatura

LiteraturaObaveze studenata

Programiranje 2

Programiranje 2

Kurs obraduje napredne pojmove proceduralnog programiranja i

osnovne pojmove algoritama i struktura podataka.

Kurs je prirodan nastavak kursa Programiranje 1

6 ESPB bodova

Fond �casova: 2 �casa predavanja, 2 �casa ve�zbi i 1 �cas

praktikuma

Jedinstvena strana kursa

http://www.programiranje2.matf.bg.ac.rs/

Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2

O kursuBitovski operatori

Organizacija izvornog kodaOrganizacija memorije

Literatura

LiteraturaObaveze studenata

Literatura

Osnovna literatura (dostupna preko web-a)

Predrag Jani�ci�c, Filip Mari�c: Programiranje 2 (PJ-FM-P2)Gordana Pavlovi�c-La�zeti�c: Programiranje 2 (GPL-P2)Filip Mari�c, Predrag Jani�ci�c: Programiranje 1 (FM-PJ-P1)Novo: Programiranje 2, zbirka zadataka sa re�senjima

(naredne nedelje u �stampanom i elektronskom obliku)

Dodatna literatura

Brian Kernighan, Dennis Ritchie: The C ProgrammingLanguageRobert Sedgewick: Algorithms in C

Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2

O kursuBitovski operatori

Organizacija izvornog kodaOrganizacija memorije

Literatura

LiteraturaObaveze studenata

Literatura

Materijali sa slajdova su uglavnom preuzeti iz knjiga

Predrag Jani�ci�c, Filip Mari�c: Programiranje 2Filip Mari�c, Predrag Jani�ci�c: Programiranje 1

ili sa slajdova prof Pavlovi�c-La�zeti�c.

Za pripremu ispita, nije dovoljno koristiti samo slajdove,

potrebno je u�citi iz knjige!

Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2

O kursuBitovski operatori

Organizacija izvornog kodaOrganizacija memorije

Literatura

LiteraturaObaveze studenata

Obaveze studenata

Predispitne obaveze:

Aktivnost na praktikumima: 5 poenaKolokvijum u kolokvijumskoj nedelji: 35 poena (20 poenateorija, 15 poena zadaci)

Zavr�sni ispit:

Teorija: 30 poena (prag 30%)Zadaci: 10 poena (kvali�kacioni - prag 50%) + 25 poena(prakti�cni na ra�cunarima - prag 30%)

Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2

O kursuBitovski operatori

Organizacija izvornog kodaOrganizacija memorije

Literatura

Operatori i njihove osobineMaske

Pregled

1 O kursu

2 Bitovski operatori

Operatori i njihove osobine

Maske

3 Organizacija izvornog koda

4 Organizacija memorije

5 Literatura

Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2

O kursuBitovski operatori

Organizacija izvornog kodaOrganizacija memorije

Literatura

Operatori i njihove osobineMaske

Operatori za rad nad bitovima

C podr�zava naredne operatore za rad nad pojedina�cnimbitovima, koji se mogu primenjivati samo na celobrojneargumente

~ bitovska negacija;& bitovska konjunkcija;| bitovska disjunkcija;^ bitovska eksluzivna disjunkcija;<< pomeranje (�siftovanje) bitova ulevo;>> pomeranje (�siftovanje) bitova udesno;&=, |=, ^=, >>=, >>= � bitovske dodele � ovi operatorikombinuju bitovske operatore sa dodelom

Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2

O kursuBitovski operatori

Organizacija izvornog kodaOrganizacija memorije

Literatura

Operatori i njihove osobineMaske

Operatori za rad nad bitovima

C podr�zava naredne operatore za rad nad pojedina�cnimbitovima, koji se mogu primenjivati samo na celobrojneargumente

~ bitovska negacija;& bitovska konjunkcija;| bitovska disjunkcija;^ bitovska eksluzivna disjunkcija;<< pomeranje (�siftovanje) bitova ulevo;>> pomeranje (�siftovanje) bitova udesno;&=, |=, ^=, >>=, >>= � bitovske dodele � ovi operatorikombinuju bitovske operatore sa dodelom

Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2

O kursuBitovski operatori

Organizacija izvornog kodaOrganizacija memorije

Literatura

Operatori i njihove osobineMaske

Prioritet operatora i asocijativnost

1. (), [ ] sleva nadesno

2. !, ~, ++,--, +, �, *, &, (tip) zdesna nalevo

3. *, /, % sleva nadesno

4. +, � sleva nadesno

5. <<, >> sleva nadesno

6. <, <=, >, >= sleva nadesno

7. ==, != sleva nadesno

8. & sleva nadesno

9. ^ sleva nadesno

10. | sleva nadesno

11. && sleva nadesno

12. || sleva nadesno

13. ?: zdesna ulevo

14. =,+=,-=,/=,%=,&=,^=,|=,<<=,>>= zdesna ulevo

15. , sleva nadesnoMilena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2

O kursuBitovski operatori

Organizacija izvornog kodaOrganizacija memorije

Literatura

Operatori i njihove osobineMaske

Prioritet operatora

Kao unarni operator, operator ~ ima najve�ci prioritet i desno je

asocijativan.

Prioritet operatora pomeranja je najve�ci od svih binarnih

bitovskih operatora � nalazi se izmedu prioriteta aritmeti�ckih i

relacijskih operatora.

Ostali bitovski operatori imaju prioritet izmedu relacijskih i

logi�ckih operatora

& ima ve�ci prioritet od ^ koji ima ve�ci prioritet od |. Ovi

operatori imaju levu asocijativnost.

Operatori dodele imaju skoro najni�zi prioritet i desnu

asocijativnost

Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2

O kursuBitovski operatori

Organizacija izvornog kodaOrganizacija memorije

Literatura

Operatori i njihove osobineMaske

Bitovski operatori

A B A ∧ B

0 0

0

0 1

0

1 0

0

1 1

1

A B A ∨ B

0 0

0

0 1

1

1 0

1

1 1

1

A B A ∨ B

0 0

0

0 1

1

1 0

1

1 1

0

A ¬ A

0

1

1

0

Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2

O kursuBitovski operatori

Organizacija izvornog kodaOrganizacija memorije

Literatura

Operatori i njihove osobineMaske

Bitovski operatori

A B A ∧ B

0 0 0

0 1

0

1 0

0

1 1

1

A B A ∨ B

0 0

0

0 1

1

1 0

1

1 1

1

A B A ∨ B

0 0

0

0 1

1

1 0

1

1 1

0

A ¬ A

0

1

1

0

Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2

O kursuBitovski operatori

Organizacija izvornog kodaOrganizacija memorije

Literatura

Operatori i njihove osobineMaske

Bitovski operatori

A B A ∧ B

0 0 0

0 1 0

1 0

0

1 1

1

A B A ∨ B

0 0

0

0 1

1

1 0

1

1 1

1

A B A ∨ B

0 0

0

0 1

1

1 0

1

1 1

0

A ¬ A

0

1

1

0

Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2

O kursuBitovski operatori

Organizacija izvornog kodaOrganizacija memorije

Literatura

Operatori i njihove osobineMaske

Bitovski operatori

A B A ∧ B

0 0 0

0 1 0

1 0 0

1 1

1

A B A ∨ B

0 0

0

0 1

1

1 0

1

1 1

1

A B A ∨ B

0 0

0

0 1

1

1 0

1

1 1

0

A ¬ A

0

1

1

0

Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2

O kursuBitovski operatori

Organizacija izvornog kodaOrganizacija memorije

Literatura

Operatori i njihove osobineMaske

Bitovski operatori

A B A ∧ B

0 0 0

0 1 0

1 0 0

1 1 1

A B A ∨ B

0 0

0

0 1

1

1 0

1

1 1

1

A B A ∨ B

0 0

0

0 1

1

1 0

1

1 1

0

A ¬ A

0

1

1

0

Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2

O kursuBitovski operatori

Organizacija izvornog kodaOrganizacija memorije

Literatura

Operatori i njihove osobineMaske

Bitovski operatori

A B A ∧ B

0 0 0

0 1 0

1 0 0

1 1 1

A B A ∨ B

0 0 0

0 1

1

1 0

1

1 1

1

A B A ∨ B

0 0

0

0 1

1

1 0

1

1 1

0

A ¬ A

0

1

1

0

Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2

O kursuBitovski operatori

Organizacija izvornog kodaOrganizacija memorije

Literatura

Operatori i njihove osobineMaske

Bitovski operatori

A B A ∧ B

0 0 0

0 1 0

1 0 0

1 1 1

A B A ∨ B

0 0 0

0 1 1

1 0

1

1 1

1

A B A ∨ B

0 0

0

0 1

1

1 0

1

1 1

0

A ¬ A

0

1

1

0

Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2

O kursuBitovski operatori

Organizacija izvornog kodaOrganizacija memorije

Literatura

Operatori i njihove osobineMaske

Bitovski operatori

A B A ∧ B

0 0 0

0 1 0

1 0 0

1 1 1

A B A ∨ B

0 0 0

0 1 1

1 0 1

1 1

1

A B A ∨ B

0 0

0

0 1

1

1 0

1

1 1

0

A ¬ A

0

1

1

0

Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2

O kursuBitovski operatori

Organizacija izvornog kodaOrganizacija memorije

Literatura

Operatori i njihove osobineMaske

Bitovski operatori

A B A ∧ B

0 0 0

0 1 0

1 0 0

1 1 1

A B A ∨ B

0 0 0

0 1 1

1 0 1

1 1 1

A B A ∨ B

0 0

0

0 1

1

1 0

1

1 1

0

A ¬ A

0

1

1

0

Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2

O kursuBitovski operatori

Organizacija izvornog kodaOrganizacija memorije

Literatura

Operatori i njihove osobineMaske

Bitovski operatori

A B A ∧ B

0 0 0

0 1 0

1 0 0

1 1 1

A B A ∨ B

0 0 0

0 1 1

1 0 1

1 1 1

A B A ∨ B

0 0 0

0 1

1

1 0

1

1 1

0

A ¬ A

0

1

1

0

Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2

O kursuBitovski operatori

Organizacija izvornog kodaOrganizacija memorije

Literatura

Operatori i njihove osobineMaske

Bitovski operatori

A B A ∧ B

0 0 0

0 1 0

1 0 0

1 1 1

A B A ∨ B

0 0 0

0 1 1

1 0 1

1 1 1

A B A ∨ B

0 0 0

0 1 1

1 0

1

1 1

0

A ¬ A

0

1

1

0

Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2

O kursuBitovski operatori

Organizacija izvornog kodaOrganizacija memorije

Literatura

Operatori i njihove osobineMaske

Bitovski operatori

A B A ∧ B

0 0 0

0 1 0

1 0 0

1 1 1

A B A ∨ B

0 0 0

0 1 1

1 0 1

1 1 1

A B A ∨ B

0 0 0

0 1 1

1 0 1

1 1

0

A ¬ A

0

1

1

0

Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2

O kursuBitovski operatori

Organizacija izvornog kodaOrganizacija memorije

Literatura

Operatori i njihove osobineMaske

Bitovski operatori

A B A ∧ B

0 0 0

0 1 0

1 0 0

1 1 1

A B A ∨ B

0 0 0

0 1 1

1 0 1

1 1 1

A B A ∨ B

0 0 0

0 1 1

1 0 1

1 1 0

A ¬ A

0

1

1

0

Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2

O kursuBitovski operatori

Organizacija izvornog kodaOrganizacija memorije

Literatura

Operatori i njihove osobineMaske

Bitovski operatori

A B A ∧ B

0 0 0

0 1 0

1 0 0

1 1 1

A B A ∨ B

0 0 0

0 1 1

1 0 1

1 1 1

A B A ∨ B

0 0 0

0 1 1

1 0 1

1 1 0

A ¬ A

0 1

1

0

Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2

O kursuBitovski operatori

Organizacija izvornog kodaOrganizacija memorije

Literatura

Operatori i njihove osobineMaske

Bitovski operatori

A B A ∧ B

0 0 0

0 1 0

1 0 0

1 1 1

A B A ∨ B

0 0 0

0 1 1

1 0 1

1 1 1

A B A ∨ B

0 0 0

0 1 1

1 0 1

1 1 0

A ¬ A

0 1

1 0

Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2

O kursuBitovski operatori

Organizacija izvornog kodaOrganizacija memorije

Literatura

Operatori i njihove osobineMaske

Bitovsko i

& � bitovsko i � primenom ovog operatora vr�si se konjunkcija

pojedina�cnih bitova dva argumenta � i-ti bit rezultata

predstavlja konjunkciju i-tih bitova argumenata.

Primer

207 & 63 = 15

00000000000000000000000011001111 <---207

& 00000000000000000000000000111111 <---63

==================================

00000000000000000000000000001111 <---15

Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2

O kursuBitovski operatori

Organizacija izvornog kodaOrganizacija memorije

Literatura

Operatori i njihove osobineMaske

Bitovsko ili

| � bitovsko ili � primenom ovog operatora vr�si se

disjunkcija pojedina�cnih bitova dva argumenta � i-ti bit

rezultata predstavlja disjunkciju i-tih bitova argumenata.

Primer

207 | 63 = 255

00000000000000000000000011001111 <---207

| 00000000000000000000000000111111 <---63

==================================

00000000000000000000000011111111 <---255

Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2

O kursuBitovski operatori

Organizacija izvornog kodaOrganizacija memorije

Literatura

Operatori i njihove osobineMaske

Bitovska negacija

~ � jedini�cni komplement � primenom ovog operatora vr�si se

komplementiranje pojedina�cnih bitova argumenta � i-ti bit

rezultata predstavlja komplement i-tog bita argumenta

Primer

~63 = -64 (jer je u pitanju celobrojna oznacena

konstanta)

00000000000000000000000000111111 <--- 63

==================================

11111111111111111111111111000000 <--- -64

Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2

O kursuBitovski operatori

Organizacija izvornog kodaOrganizacija memorije

Literatura

Operatori i njihove osobineMaske

Bitovsko xor

^ � bitovsko xor � primenom ovog operatora vr�si se

ekskluzivna disjunkcija pojedina�cnih bitova dva argumenta �

i-ti bit rezultata predstavlja ekskluzivna disjunkcija i-tih bitova

argumenata.

Primer

207 ^ 63 = 240

00000000000000000000000011001111 <---207

^ 00000000000000000000000000111111 <---63

==================================

00000000000000000000000011110000 <---240

Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2

O kursuBitovski operatori

Organizacija izvornog kodaOrganizacija memorije

Literatura

Operatori i njihove osobineMaske

�Siftovanje u levo

<< � levo pomeranje (�siftovanje) � primenom ovog operatora

bitovi prvog argumenta se pomeraju u levo za broj pozicija

naveden kao drugi argument. Po�cetni bitovi prvog argumenta

se zanemaruju, dok se na zavr�sna mesta rezultata upisuju nule.

Primer

63 << 3 = 504

00000000000000000000000000111111 <--- 63

================================ << 3

00000000000000000000000111111000 <--- 504

Levo pomeranje za jednu poziciju odgovara mno�zenju sa dva.

Levo pomeranje za n pozicija odgovara mno�zenju sa n-timstepenom dvojke.

Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2

O kursuBitovski operatori

Organizacija izvornog kodaOrganizacija memorije

Literatura

Operatori i njihove osobineMaske

�Siftovanje u desno

>> � desno pomeranje (�siftovanje) � primenom ovog

operatora bitovi prvog argumenta se pomeraju u desno za broj

pozicija naveden kao drugi argument.

Krajnji (desni) bitovi prvog argumenta se zanemaruju

Po�cetni (levi) bitovi prvog argumenta:

logi�cko pomeranje � popunjavaju se nulamaaritmeti�cko pomeranje � popunjavanje bitovima znaka

Aritmeti�cko pomeranje za jedno mesto � deljenje sa dva

Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2

O kursuBitovski operatori

Organizacija izvornog kodaOrganizacija memorije

Literatura

Operatori i njihove osobineMaske

�Siftovanje u desno

Koje pomeranje �ce se vr�siti zavisi od tipa prvog argumenta:

neozna�cen tip � logi�cko pomeranjeozna�cen tip � aritmeti�cko pomeranje

Primer

63 >> 3 = 7

00000000000000000000000000111111 <--- 63

================================ >> 3

00000000000000000000000000000111 <--- 7

Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2

O kursuBitovski operatori

Organizacija izvornog kodaOrganizacija memorije

Literatura

Operatori i njihove osobineMaske

Napomena

Bitovske operatore ne treba me�sati sa logi�ckim operatorima.

Na primer, vrednost izraza 1 && 2 je 1 (ta�cno i ta�cno je

ta�cno) dok je vrednost izraza 1&2 jednaka 0

1 & 2 = 0

00000000000000000000000000000001 <--- 1

& 00000000000000000000000000000010 <--- 2

================================

00000000000000000000000000000000 <--- 0

Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2

O kursuBitovski operatori

Organizacija izvornog kodaOrganizacija memorije

Literatura

Operatori i njihove osobineMaske

Primena bitovskih operatora

Kako bi se postigao �zeljeni efekat nad bitovima nekog broja,

obi�caj je da se vr�si njegovo kombinovanje bitovskim

operatorima sa specijalno pripremljenim konstantama koje se

nazivaju maske.

Za gradenje maski koriste se osobine bitovskih operatora

Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2

O kursuBitovski operatori

Organizacija izvornog kodaOrganizacija memorije

Literatura

Operatori i njihove osobineMaske

Primena bitovskog i

Osobina konjunkcije je da je za svaki bit b, vrednost b & 0

jednaka 0, dok je vrednost b & 1 jednaka b.

Ovo zna�ci da se konjunkcijom sa nekom maskom dobija

rezultat koji je jednak broju koji se dobije kada se u broj x

upi�su nule na sve one pozicije na kojima maska ima bit 0, dok

ostali bitovi ostaju neizmenjeni.

Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2

O kursuBitovski operatori

Organizacija izvornog kodaOrganizacija memorije

Literatura

Operatori i njihove osobineMaske

Primena bitovskog i

Primer

Napisati naredbu koja na i-to mesto broja n postavlja bit 0, dok

ostali bitovi ostaju nepromenjeni.

Re�senje:

Potrebno je uraditi bitovsko & sa maskom koja se sastoji od svih

jedinica, a jedino na i-tom mestu je bit nula.

Ova maska se dobija

negacijom maske koja sadr�zi sve nule, a na i-tom mestu jedinicu.

Maska koja sadr�zi na i-tom mestu jedinicu mo�ze se dobiti

pomeranjem broja 1 za i mesta u levo.

K�od:

n & (~(1 << i))

Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2

O kursuBitovski operatori

Organizacija izvornog kodaOrganizacija memorije

Literatura

Operatori i njihove osobineMaske

Primena bitovskog i

Primer

Napisati naredbu koja na i-to mesto broja n postavlja bit 0, dok

ostali bitovi ostaju nepromenjeni.

Re�senje:

Potrebno je uraditi bitovsko & sa maskom koja se sastoji od svih

jedinica, a jedino na i-tom mestu je bit nula. Ova maska se dobija

negacijom maske koja sadr�zi sve nule, a na i-tom mestu jedinicu.

Maska koja sadr�zi na i-tom mestu jedinicu mo�ze se dobiti

pomeranjem broja 1 za i mesta u levo.

K�od:

n & (~(1 << i))

Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2

O kursuBitovski operatori

Organizacija izvornog kodaOrganizacija memorije

Literatura

Operatori i njihove osobineMaske

Primena bitovskog i

Primer

Napisati naredbu koja na i-to mesto broja n postavlja bit 0, dok

ostali bitovi ostaju nepromenjeni.

Re�senje:

Potrebno je uraditi bitovsko & sa maskom koja se sastoji od svih

jedinica, a jedino na i-tom mestu je bit nula. Ova maska se dobija

negacijom maske koja sadr�zi sve nule, a na i-tom mestu jedinicu.

Maska koja sadr�zi na i-tom mestu jedinicu mo�ze se dobiti

pomeranjem broja 1 za i mesta u levo.

K�od:

n & (~(1 << i))

Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2

O kursuBitovski operatori

Organizacija izvornog kodaOrganizacija memorije

Literatura

Operatori i njihove osobineMaske

Primena bitovskog i

Primer

Napisati naredbu koja na i-to mesto broja n postavlja bit 0, dok

ostali bitovi ostaju nepromenjeni.

Re�senje:

Potrebno je uraditi bitovsko & sa maskom koja se sastoji od svih

jedinica, a jedino na i-tom mestu je bit nula. Ova maska se dobija

negacijom maske koja sadr�zi sve nule, a na i-tom mestu jedinicu.

Maska koja sadr�zi na i-tom mestu jedinicu mo�ze se dobiti

pomeranjem broja 1 za i mesta u levo.

K�od:

n & (~(1 << i))

Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2

O kursuBitovski operatori

Organizacija izvornog kodaOrganizacija memorije

Literatura

Operatori i njihove osobineMaske

Primena bitovskog i

Primer

Napisati naredbu koja na i-to mesto broja n postavlja bit 0, dok

ostali bitovi ostaju nepromenjeni.

Re�senje:

Potrebno je uraditi bitovsko & sa maskom koja se sastoji od svih

jedinica, a jedino na i-tom mestu je bit nula. Ova maska se dobija

negacijom maske koja sadr�zi sve nule, a na i-tom mestu jedinicu.

Maska koja sadr�zi na i-tom mestu jedinicu mo�ze se dobiti

pomeranjem broja 1 za i mesta u levo.

K�od:

n & (~(1 << i))

Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2

O kursuBitovski operatori

Organizacija izvornog kodaOrganizacija memorije

Literatura

Operatori i njihove osobineMaske

Primena bitovskog ili

Osobina disjunkcije je da je za svaki bit b, vrednost b | 0

jednaka b, dok je vrednost b | 1 jednaka 1.

Dakle, disjunkcijom broja x sa nekom maskom dobija se

rezultat u kojem su upisane jedinice na sve one pozicije na

kojima maska ima bit 1, dok ostali bitovi ostaju neizmenjeni.

Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2

O kursuBitovski operatori

Organizacija izvornog kodaOrganizacija memorije

Literatura

Operatori i njihove osobineMaske

Primena bitovskog ili

Primer

Napisati naredbu koja na i-to mesto broja n postavlja bit 1, dok

ostali bitovi ostaju nepromenjeni.

Re�senje:

Potrebno je uraditi bitovsko | sa maskom koja se sastoji od svih

nula, a jedino na i-tom mestu je bit 1.

Maska koja sadr�zi na i-tommestu jedinicu mo�ze se dobiti pomeranjem broja 1 za i mesta u

levo.

K�od:

n | (1 << i)

Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2

O kursuBitovski operatori

Organizacija izvornog kodaOrganizacija memorije

Literatura

Operatori i njihove osobineMaske

Primena bitovskog ili

Primer

Napisati naredbu koja na i-to mesto broja n postavlja bit 1, dok

ostali bitovi ostaju nepromenjeni.

Re�senje:

Potrebno je uraditi bitovsko | sa maskom koja se sastoji od svih

nula, a jedino na i-tom mestu je bit 1. Maska koja sadr�zi na i-tommestu jedinicu mo�ze se dobiti pomeranjem broja 1 za i mesta u

levo.

K�od:

n | (1 << i)

Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2

O kursuBitovski operatori

Organizacija izvornog kodaOrganizacija memorije

Literatura

Operatori i njihove osobineMaske

Primena bitovskog ili

Primer

Napisati naredbu koja na i-to mesto broja n postavlja bit 1, dok

ostali bitovi ostaju nepromenjeni.

Re�senje:

Potrebno je uraditi bitovsko | sa maskom koja se sastoji od svih

nula, a jedino na i-tom mestu je bit 1. Maska koja sadr�zi na i-tommestu jedinicu mo�ze se dobiti pomeranjem broja 1 za i mesta u

levo.

K�od:

n | (1 << i)

Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2

O kursuBitovski operatori

Organizacija izvornog kodaOrganizacija memorije

Literatura

Operatori i njihove osobineMaske

Primena bitovskog ili

Primer

Napisati naredbu koja na i-to mesto broja n postavlja bit 1, dok

ostali bitovi ostaju nepromenjeni.

Re�senje:

Potrebno je uraditi bitovsko | sa maskom koja se sastoji od svih

nula, a jedino na i-tom mestu je bit 1. Maska koja sadr�zi na i-tommestu jedinicu mo�ze se dobiti pomeranjem broja 1 za i mesta u

levo.

K�od:

n | (1 << i)

Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2

O kursuBitovski operatori

Organizacija izvornog kodaOrganizacija memorije

Literatura

Operatori i njihove osobineMaske

Primena bitovskog xor

Osobina eksluzivne disjunkcije je da za svaki bit b, vrednost

b ^ 0 jednaka b, dok je vrednost b ^ 1 jednaka ~b.

Ovo zna�ci da se eksluzivnom disjunkcijom sa nekom maskom

dobija rezultat koji je jednak broju koji se dobije kada se

invertuju bitovi na onim pozicijama na kojima se u maski

nalazi jedinica.

Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2

O kursuBitovski operatori

Organizacija izvornog kodaOrganizacija memorije

Literatura

Operatori i njihove osobineMaske

Primena bitovskog xor

Primer

Napisati naredbu koja invertuje bit na i-tom mestu broja n.

Re�senje:

Potrebno je uraditi bitovsko ^ sa maskom koja se sastoji od svih

nula, a jedino na i-tom mestu je bit 1. Maska koja sadr�zi na i-tommestu jedinicu mo�ze se dobiti pomeranjem broja 1 za i mesta u

levo.

K�od:

n ^ (1 << i)

Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2

O kursuBitovski operatori

Organizacija izvornog kodaOrganizacija memorije

Literatura

Operatori i njihove osobineMaske

Primena bitovskog xor

Primer

Napisati naredbu koja invertuje bit na i-tom mestu broja n.

Re�senje:

Potrebno je uraditi bitovsko ^ sa maskom koja se sastoji od svih

nula, a jedino na i-tom mestu je bit 1. Maska koja sadr�zi na i-tommestu jedinicu mo�ze se dobiti pomeranjem broja 1 za i mesta u

levo.

K�od:

n ^ (1 << i)

Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2

O kursuBitovski operatori

Organizacija izvornog kodaOrganizacija memorije

Literatura

Operatori i njihove osobineMaske

Primena bitovskog xor

Primer

Napisati naredbu koja invertuje bit na i-tom mestu broja n.

Re�senje:

Potrebno je uraditi bitovsko ^ sa maskom koja se sastoji od svih

nula, a jedino na i-tom mestu je bit 1. Maska koja sadr�zi na i-tommestu jedinicu mo�ze se dobiti pomeranjem broja 1 za i mesta u

levo.

K�od:

n ^ (1 << i)

Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2

O kursuBitovski operatori

Organizacija izvornog kodaOrganizacija memorije

Literatura

Operatori i njihove osobineMaske

Bitovski operatori - osnovna pravila

Ukoliko �zelimo da u okviru broja postavimo nule na neke

izabrane pozicije, radimo bitovsko i sa maskom koja sadr�zi nule

na mestima gde �zelimo da postavimo nulu, a na svim ostalim

mestima maska treba da sadr�zi jedinice

Ukoliko �zelimo da u okviru broja postavimo jedinice na neke

izabrane pozicije, radimo bitovsko ili sa maskom koja sadr�zi

jedinice na mestima gde �zelimo da postavimo jedinice, a na

svim ostalim mestima maska treba da sadr�zi nule

Ukoliko �zelimo da invertujemo bitove na odredenim pozicijama,

radimo bitovsku ekskluzivnu disjunkciju sa maskom koja sadr�zi

jedinice na mestu gde �zelimo da radimo invertovanje, a na

svim ostalim mestima maska treba da sadr�zi nule

Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2

O kursuBitovski operatori

Organizacija izvornog kodaOrganizacija memorije

Literatura

Pregled

1 O kursu

2 Bitovski operatori

3 Organizacija izvornog koda

4 Organizacija memorije

5 Literatura

Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2

O kursuBitovski operatori

Organizacija izvornog kodaOrganizacija memorije

Literatura

Organizacija izvornog koda

Problemi koje ste do sada re�savali obuhvatali su male i

jednostavne programe koji su bili precizno de�nisani

Za organizovanje slo�zenih programa neophodno je

napraviti funkcionalnu dekompoziciju problema, tj. podeluslo�zenih zadataka na jednostavnije poslove i izdvajanje uzasebne funkcijede�nisanje odgovaraju�cih tipova podataka i organizovanjepodataka de�nisanjem odgovaraju�cih promenljivih.

Primer: matemati�cki softver

Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2

O kursuBitovski operatori

Organizacija izvornog kodaOrganizacija memorije

Literatura

Organizacija izvornog koda

Veliki programi se organizuju u vi�se datoteka tj. modula koji

sadr�ze podatke i funkcije koji objedinjavaju odredenufunkcionalnost

Osnovna podela uklju�cuje razdvajanje deklaracija u datoteke

zaglavlja (ekstenzija .h) i de�nicija (ekstenzija .c)

Podela izvornog koda po datotekama omogu�cava

ponovno kori�s�cenje koda � gradenjem bibliotekatimski razvoj softveraprevodenje samo onih delova koda koji su menjani

Primer: matemati�cki softver � kompleksni brojevi, polinomi,

skupovi, razlomci, vektori, matrice, geometrijske �gure u ravni

i prostoru...

Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2

O kursuBitovski operatori

Organizacija izvornog kodaOrganizacija memorije

Literatura

Organizacija izvornog koda

Va�zno je znati mehanizam povezanosti identi�katora da bi se

razdvajanje koda moglo uraditi na ispravan na�cin

Pretprocesor i linker omogu�cavaju spajanje datoteka u

jedinstven izvr�sni program

Postoje alati koji olak�savaju prevodenje koda koji je podeljen

po datotekama, na primer program make

Razumevanje ove podele kao i procesa prevodenja jako je

va�zno za prakti�cni deo ispita

Detaljni primeri � na ve�zbama i praktikumima

Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2

O kursuBitovski operatori

Organizacija izvornog kodaOrganizacija memorije

Literatura

Izvr�savanje programaOrganizacija memorije izvr�snog programaStek segment

Pregled

1 O kursu

2 Bitovski operatori

3 Organizacija izvornog koda

4 Organizacija memorije

Izvr�savanje programa

Organizacija memorije izvr�snog programa

Stek segment

5 Literatura

Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2

O kursuBitovski operatori

Organizacija izvornog kodaOrganizacija memorije

Literatura

Izvr�savanje programaOrganizacija memorije izvr�snog programaStek segment

Izvr�savanje programa

Nakon uspe�snog prevodenja, program se mo�ze izvr�siti

Zahtev za izvr�savanjem programa se izdaje operativnom

sistemu

Program koji treba da bude izvr�sen najpre se u�citava iz spoljne

memorije u radnu memoriju ra�cunara.

U fazi izvr�savanja mogu�ce je da dode do gre�saka koje nije bilo

mogu�ce detektovati u fazi prevodenja i povezivanja.

Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2

O kursuBitovski operatori

Organizacija izvornog kodaOrganizacija memorije

Literatura

Izvr�savanje programaOrganizacija memorije izvr�snog programaStek segment

Izvr�savanje programa

Pre kona�cne distribucije korisnicima, program se obi�cno

intenzivno testira

Testiranjem se pronalaze gre�ske koje je potrebno ispraviti u

izvornom kodu

U pronala�zenju gre�ske mogu pomo�ci programi koji se nazivaju

debageri

Da bi program mogao da bude analiziran primenom debagera,

on mora biti preveden na poseban na�cin, tako da izvr�sna verzija

sadr�zi i informacije o izvornom k�odu (za gcc to je opcija -g).

Takva verzija izvr�snog programa zove se debag verzija, a

verzija koja se isporu�cuje krajnjem korisniku zove se riliz (engl.

release).

Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2

O kursuBitovski operatori

Organizacija izvornog kodaOrganizacija memorije

Literatura

Izvr�savanje programaOrganizacija memorije izvr�snog programaStek segment

Organizacija memorije izvr�snog programa

Na�cin organizovanja i kori�s�cenja memorije u fazi izvr�savanja

programa mo�ze se razlikovati od jednog do drugog operativnog

sistema.

Kada se izvr�sni program u�cita u radnu memoriju ra�cunara, biva

mu dodeljena odredena memorija i zapo�cinje njegovo

izvr�savanje.

Dodeljena memorija organizovana je u nekoliko delova kojezovemo segmenti ili zone:

segment k�oda (engl. code segment ili text segment);segment podataka (engl. data segment);stek segment (engl. stack segment);hip segment (engl. heap segment).

Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2

O kursuBitovski operatori

Organizacija izvornog kodaOrganizacija memorije

Literatura

Izvr�savanje programaOrganizacija memorije izvr�snog programaStek segment

Segmenti u memoriji

Fon Nojmanova arhitektura ra�cunara predvida da se u memoriji

�cuvaju podaci i programi.

Segment k�oda � u ovom segmentu nalazi se s�am izvr�sni k�od

programa, ukoliko se pokrene vi�se instanci jednog programa,

ovaj segment mo�ze da bude zajedni�cki za sve instance (zavisi

od operativnog sistema)

Segment podataka � u ovom segmentu �cuvaju se odredenevrste promenljivih koje su zajedni�cke za ceo program: globalne

promenljive, promenljive koje imaju stati�cki �zivotni vek, kao i

konstantni podaci (naj�ce�s�ce konstantne niske); ukoliko se

pokrene vi�se instanci jednog programa, svaka instanca ima svoj

zaseban segment podataka

Hip segment � u ovom segmentu nalaze se dinami�cki alocirani

podaci

Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2

O kursuBitovski operatori

Organizacija izvornog kodaOrganizacija memorije

Literatura

Izvr�savanje programaOrganizacija memorije izvr�snog programaStek segment

Stek segment

Stek segment ili programski stek poziva (engl. call stack) �cuva

sve podatke koji karakteri�su izvr�savanje funkcija.

Podaci koji odgovaraju jednoj instanci funkcije organizovani su

u takozvani stek okvir (engl. stack frame).

Stek okvir jedne instance funkcije, izmedu ostalog, sadr�zi:

argumente funkcije;lokalne promenljive (promenljive deklarisane unutar funkcije);medurezultate izra�cunavanja;adresu povratka (koja ukazuje na to odakle treba nastavitiizvr�savanje programa nakon povratka iz funkcije);adresu stek okvira funkcije pozivaoca.

Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2

O kursuBitovski operatori

Organizacija izvornog kodaOrganizacija memorije

Literatura

Izvr�savanje programaOrganizacija memorije izvr�snog programaStek segment

Stek segment

Veli�cina stek segmenta obi�cno je ograni�cena.

Zbog toga je po�zeljno izbegavati sme�stanje jako velikih

podataka na segment steka.

Primer

int main() { int a[1000000];

int a[1000000]; int main() {

... ...

} }

Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2

O kursuBitovski operatori

Organizacija izvornog kodaOrganizacija memorije

Literatura

Izvr�savanje programaOrganizacija memorije izvr�snog programaStek segment

Stek segment

Stek poziva je struktura tipa LIFO ("last in - �rst out") �

stek okvir se mo�ze dodati samo na vrh steka i sa steka se mo�ze

ukloniti samo okvir koji je na vrhu

Stek okvir za instancu funkcije se kreira onda kada funkcija

treba da se izvr�si i taj stek okvir se oslobada (preciznije, smatra

se nepostoje�cim) onda kada se zavr�si izvr�savanje funkcije.

Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2

O kursuBitovski operatori

Organizacija izvornog kodaOrganizacija memorije

Literatura

Izvr�savanje programaOrganizacija memorije izvr�snog programaStek segment

Stek segment

Ako izvr�savanje programa po�cinje izvr�savanjem funkcije main,

prvi stek okvir se kreira za ovu funkciju.

Ako funkcija main poziva neku funkciju f, na vrhu steka, iznad

stek okvira funkcije main, kreira se novi stek okvir za ovu

funkciju.

Ukoliko funkcija f poziva neku tre�cu funkciju, onda �ce za nju

biti kreiran stek okvir na novom vrhu steka.

Kada se zavr�si izvr�savanje funkcije f, onda se vrh steka vra�ca

na prethodno stanje i prostor koji je zauzimao stek okvir za f

se smatra slobodnim (iako on ne�ce biti zaista obrisan).

Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2

O kursuBitovski operatori

Organizacija izvornog kodaOrganizacija memorije

Literatura

Izvr�savanje programaOrganizacija memorije izvr�snog programaStek segment

Stek segment

Nacrtati stek okvire za izvr�savanje slede�ceg koda:

Primer

int kub(int a) {

return a*a*a;

}

int suma_kubova_i_uvecanje(int a[], int n) {

int rezultat = 0, i;

for(i=0; i<n; i++)

rezultat += kub(a[i]++);

return rezultat;

}

int main() {

int a[3]={0, 1, 2}, s;

s = suma_kubova_i_uvecanje(a, sizeof(a)/sizeof(int));

printf("Rezultat je %d\n", s);

return 0;

}

Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2

O kursuBitovski operatori

Organizacija izvornog kodaOrganizacija memorije

Literatura

Pregled

1 O kursu

2 Bitovski operatori

3 Organizacija izvornog koda

4 Organizacija memorije

5 Literatura

Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2

O kursuBitovski operatori

Organizacija izvornog kodaOrganizacija memorije

Literatura

Literatura

Slajdovi su pripremljeni na osnovu poglavlja 6.4.5 i 9 knjige

Filip Mari�c, Predrag Jani�ci�c: Programiranje 1

i poglavlja 6.5 knjige

Predrag Jani�ci�c, Filip Mari�c: Programiranje 2

Za pripremu ispita, slajdovi nisu dovoljni, neophodno je u�citi iz

knjige!

Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2