O predmetu - casovinovisad.yolasite.comcasovinovisad.yolasite.com/resources/Racunarski...
Transcript of O predmetu - casovinovisad.yolasite.comcasovinovisad.yolasite.com/resources/Racunarski...
Računarski praktikum
O predmetu
Računarski praktikum
• dr Milan Vidaković[email protected] 139/8
• Dejan Mijić[email protected]
• Milorad Filipović[email protected]
• http://www.informatika.ftn.uns.ac.rs/RP
2
• dr Milan Vidaković[email protected] 139/8
• Dejan Mijić[email protected]
• Milorad Filipović[email protected]
• http://www.informatika.ftn.uns.ac.rs/RP
Ocenjivanje• Prisustvo na vežbama
– obavezno– raspon poena: 3-5– toleriše se do 20% izostanaka (80% prisustva – 3 poena, 100%
prisustva – 5 poena)• Kolokvijumi
– računarska pismenost – 10-20 poena– složeni zadatak – 15-25 poena
• Završni ispit (teorija)– obavezan– raspon poena: 15-30
• Zadatak iz algoritama (u sklopu teorije)– 10-20 poena
3
• Prisustvo na vežbama– obavezno– raspon poena: 3-5– toleriše se do 20% izostanaka (80% prisustva – 3 poena, 100%
prisustva – 5 poena)• Kolokvijumi
– računarska pismenost – 10-20 poena– složeni zadatak – 15-25 poena
• Završni ispit (teorija)– obavezan– raspon poena: 15-30
• Zadatak iz algoritama (u sklopu teorije)– 10-20 poena
Plan rada
• Uvod – organizacija računara• Programski jezik Java• Algoritmi• Hardver i računarske mreže
4
• Uvod – organizacija računara• Programski jezik Java• Algoritmi• Hardver i računarske mreže
Računarski praktikum
Uvod
Literatura
• dr Milan Vidaković• email: [email protected]• http://www.informatika.ftn.uns.ac.rs/RP
2/47
• dr Milan Vidaković• email: [email protected]• http://www.informatika.ftn.uns.ac.rs/RP
Osnovi računarstva
1. Istorija računara2. Generacije računara3. Osnovni pojmovi
1. Istorija računara2. Generacije računara3. Osnovni pojmovi
Oblast 1Istorija računara
• 1621. god. Vilijam Otred(William Oughtred) –engleski matematičar koji jeizmislio kružni klizni lenjir. Tose smatra prvim analognimračunarskim uređajem.
istorija
4/47
• 1621. god. Vilijam Otred(William Oughtred) –engleski matematičar koji jeizmislio kružni klizni lenjir. Tose smatra prvim analognimračunarskim uređajem.
Šikardova mašina
• Vilhelm Šikard (WilhelmSchickard) je 1623.osmislio mehaničkikalkulator.
• Mašina je mogla dasabira, oduzima, množii deli.
• Ostalo je sve samo naplanovima.
istorija
5/47
• Vilhelm Šikard (WilhelmSchickard) je 1623.osmislio mehaničkikalkulator.
• Mašina je mogla dasabira, oduzima, množii deli.
• Ostalo je sve samo naplanovima.
• 1642. god. Blez Paskal (BlaisePascal) – napravio je “prvi”automatski kalkulator.Njegova mašina, nazvanaPaskalina (Pascaline) sezasnivala na zupčanicima.
• Napravio je 50 primeraka zaprodaju, ali su računovođeodbijale da ih koriste jer su sebojali da će izgubiti posao.
istorija
6/47
• 1642. god. Blez Paskal (BlaisePascal) – napravio je “prvi”automatski kalkulator.Njegova mašina, nazvanaPaskalina (Pascaline) sezasnivala na zupčanicima.
• Napravio je 50 primeraka zaprodaju, ali su računovođeodbijale da ih koriste jer su sebojali da će izgubiti posao.
• 1673. god. Gotfrid Lajbnic (Gottfried Leibniz) –dizajnirao je novi tip mehaničkog kalkulatorabaziranog na nazubljenim cilindrima, koji se sadazove Lajbnicov točak. Uređaj je mogao da sabira,oduzima, množi i deli.
istorija
7/47
• 1804. god. Žozef Žakar(Joseph Jacquard) –izmislio je kartice sa rupamakoje su se koristile u uređajuza tkanje. Kartice su sekoristile da propusteodređene niti, a da blokirajuostale.
• Iako njegov razboj nijedirektno povezan saračunarima, ideju bušenihkartica je kasnije preuzeoČarls Bebidž kao prvimehanički metod unošenjainformacija u računar.
istorija
8/47
• 1804. god. Žozef Žakar(Joseph Jacquard) –izmislio je kartice sa rupamakoje su se koristile u uređajuza tkanje. Kartice su sekoristile da propusteodređene niti, a da blokirajuostale.
• Iako njegov razboj nijedirektno povezan saračunarima, ideju bušenihkartica je kasnije preuzeoČarls Bebidž kao prvimehanički metod unošenjainformacija u računar.
• 1822. god. Čarls Bebidž (CharlesBabbage) – napravio je prvumašinu za računanje konačnihrazlika. Izgradja uređaja je bilafinansirana od strane britanskevlade, a namena je bila da rešavapolinomne jednačine.
• Bila je toliko osetljiva da se češćekvarila nego što je radila, pa jepremijer izjavio da je jedinanamena ove mašine da izračunaogromnu količinu novca koja jepotrošena na njenu gradnju.
Čarls Bebidž (Charles Babbage)istorija
9/47
• 1822. god. Čarls Bebidž (CharlesBabbage) – napravio je prvumašinu za računanje konačnihrazlika. Izgradja uređaja je bilafinansirana od strane britanskevlade, a namena je bila da rešavapolinomne jednačine.
• Bila je toliko osetljiva da se češćekvarila nego što je radila, pa jepremijer izjavio da je jedinanamena ove mašine da izračunaogromnu količinu novca koja jepotrošena na njenu gradnju.
• Bebidž je kasnije razvio analitičkumašinu koja je bila dizajnirana kaopravi mehanički računar. Iako nikadanije bila napravljena, mašina sesadržavala pet bitnih elemenata zabuduće računare:– ulazni uređaj– medijum za smeštanje brojeva za
obradu (memorija)– jedinicu za obradu (aritmetičko-
logička jedinica)– kontrolnu jedinicu da upravlja
zadacima koji će se izvršavati(upravljačka jedinica)
– izlazni uređaj.
Čarls Bebidž (Charles Babbage)istorija
10/47
• Bebidž je kasnije razvio analitičkumašinu koja je bila dizajnirana kaopravi mehanički računar. Iako nikadanije bila napravljena, mašina sesadržavala pet bitnih elemenata zabuduće računare:– ulazni uređaj– medijum za smeštanje brojeva za
obradu (memorija)– jedinicu za obradu (aritmetičko-
logička jedinica)– kontrolnu jedinicu da upravlja
zadacima koji će se izvršavati(upravljačka jedinica)
– izlazni uređaj.
• 1833. god. Augusta Ada(grofica od Lavlejsa) - amatermatemetičar i bliski prijateljČarlsa Bebidža. Ada je prvadala nacrt programa koji bi seizvršavao u analitičkoj mašini.
• Ovo je bio prvi put da jekoncept računarskogprograma bio predložen, pase smatra da je Ada bila prvikompjuterski programer.
istorija
11/47
• 1833. god. Augusta Ada(grofica od Lavlejsa) - amatermatemetičar i bliski prijateljČarlsa Bebidža. Ada je prvadala nacrt programa koji bi seizvršavao u analitičkoj mašini.
• Ovo je bio prvi put da jekoncept računarskogprograma bio predložen, pase smatra da je Ada bila prvikompjuterski programer.
• 1886. god. Herman Holerit (HermanHollerith) – razvio je mašinu zaračunanje koje je koristila bušenekartice za elektronsko brojanje. Ovajuređaj je napravljen da bi se obaviopopis iz 1890. godine (u Americi).Ručno brojanje bi trajalo čitavudeceniju (rezultati prethodnogpopisa su se obrađivali ručno iproces je trajao 7 godina).
• 1896. godine Holerit je osnovaoTabulating Machine Company.1924. godine, nakon nekolikospajanja i preuzimanja, kompanija jepostala International BusinessMachines (IBM).
istorija
12/47
• 1886. god. Herman Holerit (HermanHollerith) – razvio je mašinu zaračunanje koje je koristila bušenekartice za elektronsko brojanje. Ovajuređaj je napravljen da bi se obaviopopis iz 1890. godine (u Americi).Ručno brojanje bi trajalo čitavudeceniju (rezultati prethodnogpopisa su se obrađivali ručno iproces je trajao 7 godina).
• 1896. godine Holerit je osnovaoTabulating Machine Company.1924. godine, nakon nekolikospajanja i preuzimanja, kompanija jepostala International BusinessMachines (IBM).
• 1936. god. Alan Tjuring (AlanTuring) – napisao je rad ohipotetičkom digitalnomračunaru, koji je kasnijenazvan “Tjuringova mašina”.
• Postavio temelje modernogračunarstva.
• Tokom drugog svetskog rata,Tjuring je razvio tzv. ”bombe”(mehanički uređaji), a zatim“kolose” (električni uređaji) kojisu razbijali nemačku šifru(Enigma mašina).
istorija
13/47
• 1936. god. Alan Tjuring (AlanTuring) – napisao je rad ohipotetičkom digitalnomračunaru, koji je kasnijenazvan “Tjuringova mašina”.
• Postavio temelje modernogračunarstva.
• Tokom drugog svetskog rata,Tjuring je razvio tzv. ”bombe”(mehanički uređaji), a zatim“kolose” (električni uređaji) kojisu razbijali nemačku šifru(Enigma mašina).
Enigma• Nemački uređaj za kriptovanje i dekriptovanje.• Tjuringov kolos je uspešno dekriptovao poruke
šifrovane Enigmom.
istorija
14/47
Prvi digitalni računar?
• 1939-1942. god. napravljen je računarABC (Atanasoff-Berry Computer) koji sudizajnirali dr Džon Astanasov (Dr. JohnAstanasoff) i Kliford Beri (Clifford Berry) nadržavnom univerzitetu u Ajovi (Iowa StateUniversity).
• 1941. god. napravljen i predstavljenračunar Z3, koji je dizajnirao i napravionemački inženjer Konrad Zuse.
istorija
15/47
• 1939-1942. god. napravljen je računarABC (Atanasoff-Berry Computer) koji sudizajnirali dr Džon Astanasov (Dr. JohnAstanasoff) i Kliford Beri (Clifford Berry) nadržavnom univerzitetu u Ajovi (Iowa StateUniversity).
• 1941. god. napravljen i predstavljenračunar Z3, koji je dizajnirao i napravionemački inženjer Konrad Zuse.
ABCistorija
16/47
Z3• 600 releja u numeričkojjedinici
•1600 releja u memorijskojjedinici
• frekvencija rada 5, 3 Hz
• ulaz – decimalna tastatura
• izlaz – 4 cifre, sijalice
• težina – 1 tona
• potrošnja struje – 4 kW
istorija
17/47
• 600 releja u numeričkojjedinici
•1600 releja u memorijskojjedinici
• frekvencija rada 5, 3 Hz
• ulaz – decimalna tastatura
• izlaz – 4 cifre, sijalice
• težina – 1 tona
• potrošnja struje – 4 kW
Oblast 2Generacije računara
• 6 generacija računara• Razlika je pre svega u tehnoloskim
osnovama• Granica između 4., 5. i 6. generacije nije
jasna – ima preklapanja
18/47
• 6 generacija računara• Razlika je pre svega u tehnoloskim
osnovama• Granica između 4., 5. i 6. generacije nije
jasna – ima preklapanja
Prva generacija
• Elektronske cevi, releji, otpornici• Velika potrošnja struje• Ogromne dimenzije
19/47
Prva generacija• 1944. god. napravljen je Mark I – prvi računar opšte
namene. Korišćen je na Harvardu 15 godina.– 150000 raznih komponenti– 5 tona
20/47
Prva generacija• 1946. god. napravljen je Electronic Numerical Integrator
and Computer (ENIAC). Sastojao se iz 18000elektronskih cevi i 70000 otpornika. Trošio je 160 kW.
21/47
Prva generacija• 1951. god. napravljen je UNIVAC (Universal Automatic
Computer).• Karakteristike:
– programi smešteni u memoriju (1000 memorijskih ćelija),– uređaj spoljne memorije na magnetnoj traci,– ulazno/izlazni uređaji (tastatura, bušene kartice, štampač)– 54000 elektronskih cevi
22/47
• 1951. god. napravljen je UNIVAC (Universal AutomaticComputer).
• Karakteristike:– programi smešteni u memoriju (1000 memorijskih ćelija),– uređaj spoljne memorije na magnetnoj traci,– ulazno/izlazni uređaji (tastatura, bušene kartice, štampač)– 54000 elektronskih cevi
Druga generacija• Pojava tranzistora:
– smanjenje dimenzija– smanjenje potrošnje el. energije– povećanje brzine
• Tipičan predstavnik – IBM 1401– 4 KB memorije– ulaz - prekidači
23/47
• Pojava tranzistora:– smanjenje dimenzija– smanjenje potrošnje el. energije– povećanje brzine
• Tipičan predstavnik – IBM 1401– 4 KB memorije– ulaz - prekidači
Treća generacija
• Pojava integrisanih kola:– smanjenje dimenzija– smanjenje potrošnje– ubrzanje rada
• Tipičan predstavnik –IBM System/360– tastatura, diskovi– 8-bitna memorija,
magnetna jezgra, do 6 MB
24/47
• Pojava integrisanih kola:– smanjenje dimenzija– smanjenje potrošnje– ubrzanje rada
• Tipičan predstavnik –IBM System/360– tastatura, diskovi– 8-bitna memorija,
magnetna jezgra, do 6 MB
Četvrta generacija• Pojava VLSI (Very Large Scale
Integration) kola:– milioni komponenti u integrisanim
kolima– mikroprocesor izdvojen u jednom
integrisanom kolu (inženjer TedHoff) - Intel 4004
– smanjenje dimenzija, potrošnje– ubrzanje
• Tipičan predstavnik – IBM PCračunar:– 8086 mikroprocesor– 64 KB memorije (max 640 KB)– 360 KB flopi disk– 10 MB hard disk
25/47
• Pojava VLSI (Very Large ScaleIntegration) kola:– milioni komponenti u integrisanim
kolima– mikroprocesor izdvojen u jednom
integrisanom kolu (inženjer TedHoff) - Intel 4004
– smanjenje dimenzija, potrošnje– ubrzanje
• Tipičan predstavnik – IBM PCračunar:– 8086 mikroprocesor– 64 KB memorije (max 640 KB)– 360 KB flopi disk– 10 MB hard disk
Četvrta generacija• 80286 procesor
– 16 bita– 16 MB RAM– 6 MHz – 12,5 MHz– 134000 tranzistora
• 80386 procesor– 32 bita– 16 MHz – 40 MHz– 4 GB RAM– 275000 tranzistora
• 80486 procesor– 32 bita– 25 MHz – 100 MHz– 4 GB RAM– 1,2 miliona tranzistora
• PENTIUM procesor (imene prati seriju 80xxx zbogprava AMD-a na mikrokod):
– P1• 3,1 miliona tranzistora• 60 MHz – 166 MHz
– P2• 7,5 miliona tranzistora• 233 – 333 MHz
– P3• 9,5 miliona tranzistora• 650 MHz – 1,4 GHz
– P4• 55 – 200 miliona
tranzistora!• 1,4 GHZ – 3,4 GHz
26/47
• 80286 procesor– 16 bita– 16 MB RAM– 6 MHz – 12,5 MHz– 134000 tranzistora
• 80386 procesor– 32 bita– 16 MHz – 40 MHz– 4 GB RAM– 275000 tranzistora
• 80486 procesor– 32 bita– 25 MHz – 100 MHz– 4 GB RAM– 1,2 miliona tranzistora
• PENTIUM procesor (imene prati seriju 80xxx zbogprava AMD-a na mikrokod):
– P1• 3,1 miliona tranzistora• 60 MHz – 166 MHz
– P2• 7,5 miliona tranzistora• 233 – 333 MHz
– P3• 9,5 miliona tranzistora• 650 MHz – 1,4 GHz
– P4• 55 – 200 miliona
tranzistora!• 1,4 GHZ – 3,4 GHz
Peta generacija
• Izraziti paralelizam.• Primena veštačke inteligencije.• Virtuelna realnost.• Intenzivan razvoj računarskih mreža.
27/47
• Izraziti paralelizam.• Primena veštačke inteligencije.• Virtuelna realnost.• Intenzivan razvoj računarskih mreža.
Šesta generacija
• Optika.• Biočipovi.• Dramatičan razvoj računarskih mreža –
poboljšanje u domenu radnih stanica ibrzina prenosa informacija ukomunikacionim linijama.
28/47
• Optika.• Biočipovi.• Dramatičan razvoj računarskih mreža –
poboljšanje u domenu radnih stanica ibrzina prenosa informacija ukomunikacionim linijama.
3. Osnovni pojmovi
• Hardver (tehnička podrška)– oprema koja predstavlja fizičku (materijalnu)
realizaciju bilo kog sistema koji obavljaodređene funkcije.
• Softver (programska podrška)– sveukupnost instrukcija, programa i drugog
“operativnog oruđa” koji se generiše, aktivira ikoristi na razne načine da bi omogućiohardveru da reši dati problem i obavi željeneposlove.
29/47
• Hardver (tehnička podrška)– oprema koja predstavlja fizičku (materijalnu)
realizaciju bilo kog sistema koji obavljaodređene funkcije.
• Softver (programska podrška)– sveukupnost instrukcija, programa i drugog
“operativnog oruđa” koji se generiše, aktivira ikoristi na razne načine da bi omogućiohardveru da reši dati problem i obavi željeneposlove.
Organizacija hardvera
• Elementi:– memorija,– procesor,
• upravljačka jedinica,• aritmetičko logička jedinica,• registri,• ultra brza memorija.
– ulazno-izlazni podsistem,– periferijski uređaji.
30/47
• Elementi:– memorija,– procesor,
• upravljačka jedinica,• aritmetičko logička jedinica,• registri,• ultra brza memorija.
– ulazno-izlazni podsistem,– periferijski uređaji.
Memorija• Služi za prihvat, čuvanje
(pamćenje, memorisanje) ipredaju podataka i programa.
• Element koji pamtielementarnu informaciju (1 bit)je memorijski element.
• Memorijski elementi seudružuju u memorijskulokaciju (memorijsku ćeliju).
• Skup memorijskih ćelija jememorijski modul (blok).
• Memorijski modul je najčešćeadresibilan.– adresa je jedinstveni prirodan
broj dodeljen svakoj ćeliji.
31/47
• Služi za prihvat, čuvanje(pamćenje, memorisanje) ipredaju podataka i programa.
• Element koji pamtielementarnu informaciju (1 bit)je memorijski element.
• Memorijski elementi seudružuju u memorijskulokaciju (memorijsku ćeliju).
• Skup memorijskih ćelija jememorijski modul (blok).
• Memorijski modul je najčešćeadresibilan.– adresa je jedinstveni prirodan
broj dodeljen svakoj ćeliji.
Podela memorije• Sa aspekta pristupa:
– sa sekvencijalnim (serijskim) pristupom (magnetna traka, bušena traka,...)
– sa cikličkim (periodičnim) pristupom (hard disk, floppy disk, CD-ROM)– sa proizvoljnim (slučajnim) pristupom (RAM – Random Access
Memory).• Sa aspekta mogućnosti promene:
– promenljiva memorija (RAM memorija)• Statička (pamti sadržaj dok ima struje),• Dinamička (pamti sadržaj dok ima struje, ali mora da se osvežava).
– polupromenljiva memorija• PROM – Programmable Read Only Memory,• EPROM – Erasable PROM,• EEPROM – Electrically EPROM),• flash memorija.
– stalna memorija (ROM – Read Only Memory)
32/47
• Sa aspekta pristupa:– sa sekvencijalnim (serijskim) pristupom (magnetna traka, bušena traka,
...)– sa cikličkim (periodičnim) pristupom (hard disk, floppy disk, CD-ROM)– sa proizvoljnim (slučajnim) pristupom (RAM – Random Access
Memory).• Sa aspekta mogućnosti promene:
– promenljiva memorija (RAM memorija)• Statička (pamti sadržaj dok ima struje),• Dinamička (pamti sadržaj dok ima struje, ali mora da se osvežava).
– polupromenljiva memorija• PROM – Programmable Read Only Memory,• EPROM – Erasable PROM,• EEPROM – Electrically EPROM),• flash memorija.
– stalna memorija (ROM – Read Only Memory)
Podela memorije
• Po načinu smeštanja sadržaja:– adresne (pristup mem. ćeliji preko adrese),– bezadresne (asocijativne mem., stek mem.,
...).
33/47
• Po načinu smeštanja sadržaja:– adresne (pristup mem. ćeliji preko adrese),– bezadresne (asocijativne mem., stek mem.,
...).
ključ
sadržaj
asocijativnamemorija
stek
Memorija u računaru• Operativna memorija• Ultra brza memorija• Jedinice spoljne memorije (masovna memorija):
– floppy disk,– hard disk,– CD-ROM,– DVD,– USB pocket drive,– ZIP drive,– ...
34/47
• Operativna memorija• Ultra brza memorija• Jedinice spoljne memorije (masovna memorija):
– floppy disk,– hard disk,– CD-ROM,– DVD,– USB pocket drive,– ZIP drive,– ...
Procesor• Funkcije:
– izvršava operacije obradepodataka definisaneprogramom
– vrši upravljanjeračunarskim procesima iinterakcijama izmeđupojedinih jedinica računara
• Elementi:– aritmetičko-logička jedinica,– upravljačka jedinica,– registri,– ultrabrza memorija.
35/47
• Funkcije:– izvršava operacije obrade
podataka definisaneprogramom
– vrši upravljanjeračunarskim procesima iinterakcijama izmeđupojedinih jedinica računara
• Elementi:– aritmetičko-logička jedinica,– upravljačka jedinica,– registri,– ultrabrza memorija.
Aritmetičko-logička jedinica
• Izvršava aritmetičke operacije (sabiranje,oduzimanje,...), logičke operacije(konjukcija, disjunkcija, negacija, ...),pomeranje bitova, itd.
• Elementi:– kombinacione mreže (sabirači),– registri u kojima se čuvaju operandi,
međurezultati i rezultati operacija,– pomoćni registri (statusni registar, i dr.)
36/47
• Izvršava aritmetičke operacije (sabiranje,oduzimanje,...), logičke operacije(konjukcija, disjunkcija, negacija, ...),pomeranje bitova, itd.
• Elementi:– kombinacione mreže (sabirači),– registri u kojima se čuvaju operandi,
međurezultati i rezultati operacija,– pomoćni registri (statusni registar, i dr.)
Upravljačka jedinica
• Upravlja pojedinim koracima u obradipodataka i to na osnovu informacijasadržanih u instrukciji koju upravljačkajedinica zahvata iz memorije.
• Sinhronizuje U/I jedinice, memoriju iaritmetičko-logičku jedinicu.
• Dva pristupa:– direktan (hardverski) i– mikroprogramski.
37/47
• Upravlja pojedinim koracima u obradipodataka i to na osnovu informacijasadržanih u instrukciji koju upravljačkajedinica zahvata iz memorije.
• Sinhronizuje U/I jedinice, memoriju iaritmetičko-logičku jedinicu.
• Dva pristupa:– direktan (hardverski) i– mikroprogramski.
Registri
• Vrste:– radni (Akumulator, ...),– upravljački (PC, MAR, MBR,...).
38/47
Ultrabrza memorija
• Veoma brza i veoma skupa.• Operativna memorija je sporija, ali je cena
niža.• Posledica: između operativne memorije i
procesora se nalazi ultrabrza memorija.• Registri procesora se takođe mogu
smatrati za ultrabrzu memoriju.• Ovaj koncept se primenjuje i kod sporijih
periferijskih jedinica (bafer).39/47
• Veoma brza i veoma skupa.• Operativna memorija je sporija, ali je cena
niža.• Posledica: između operativne memorije i
procesora se nalazi ultrabrza memorija.• Registri procesora se takođe mogu
smatrati za ultrabrzu memoriju.• Ovaj koncept se primenjuje i kod sporijih
periferijskih jedinica (bafer).
Ulazno-izlazni podsistem
• Omogućuje razmenuporuka izmeđuračunara i spoljnogsveta.
• Načini realizacije:– programirani U/I,– sistem prekida,– direktan memorijski
pristup (DMA – DirectMemory Access).
40/47
• Omogućuje razmenuporuka izmeđuračunara i spoljnogsveta.
• Načini realizacije:– programirani U/I,– sistem prekida,– direktan memorijski
pristup (DMA – DirectMemory Access).
Programirani U/I
• Procesor stalno:– proverava status periferijske jedinice– uzima/šalje podatke iz/ka periferijskoj jedinici
• Mana: troši puno procesorskog vremena.• Retko se koristi.
41/47
• Procesor stalno:– proverava status periferijske jedinice– uzima/šalje podatke iz/ka periferijskoj jedinici
• Mana: troši puno procesorskog vremena.• Retko se koristi.
Sistem prekida
• Sistem prekida (interrupt) omogućava da se:– regularan program prekine ako se pojavi određeni
događaj,– upravljanje prenese na program zadužen za obradu
tog događaja, i po završetku tog programa– nastavi sa izvršenjem regularnog programa
• Koristi se kod prenosa manje količine podataka.• Sporo kod prenosa velikog broja podataka.
42/47
• Sistem prekida (interrupt) omogućava da se:– regularan program prekine ako se pojavi određeni
događaj,– upravljanje prenese na program zadužen za obradu
tog događaja, i po završetku tog programa– nastavi sa izvršenjem regularnog programa
• Koristi se kod prenosa manje količine podataka.• Sporo kod prenosa velikog broja podataka.
Direktan memorijski pristup
• Periferijska jedinica “sama” upisujepodatke u operativnu memoriju (ili čita iznje), bez intervencije procesora.
• Završetak posla se prijavi procesoruupotrebom prekida.
• Korisno kod prenosa velikog brojapodataka (tu su i programirani U/I i sistemprekida spori).
43/47
• Periferijska jedinica “sama” upisujepodatke u operativnu memoriju (ili čita iznje), bez intervencije procesora.
• Završetak posla se prijavi procesoruupotrebom prekida.
• Korisno kod prenosa velikog brojapodataka (tu su i programirani U/I i sistemprekida spori).
Periferijske jedinice• Služe za ulaz i/ili izlaz
podataka.• Podela:
– Ulazne jedinice• tastatura,• miš,• džojstik, itd.
– Izlazne jedinice• štampač,• monitor,• ploter, itd.
– ulazno/izlazne jedinice• floppy,• hard disk,• modem,• mrežna kartica, itd.
44/47
• Služe za ulaz i/ili izlazpodataka.
• Podela:– Ulazne jedinice
• tastatura,• miš,• džojstik, itd.
– Izlazne jedinice• štampač,• monitor,• ploter, itd.
– ulazno/izlazne jedinice• floppy,• hard disk,• modem,• mrežna kartica, itd.
Softverske karakteristike računara
• Aplikacioni programi (korisnički programi):– skup programa koje obično koriste i/ili razvijaju
korisnici za rešavanje svojih specifičnih problema.• Sistemski programi (upravljački programi):
– programi za organizaciju i upravljanje procesima radaračunarskog sistema.
• operativni sistemi (upravljanje radom rač. sistema)• uslužni programi (dijagnostika, upravljanje podacima, itd.)• simulatori računarskih sistema• programski sistemi za programiranje (asembleri, prevodioci,
interpreteri).
45/47
• Aplikacioni programi (korisnički programi):– skup programa koje obično koriste i/ili razvijaju
korisnici za rešavanje svojih specifičnih problema.• Sistemski programi (upravljački programi):
– programi za organizaciju i upravljanje procesima radaračunarskog sistema.
• operativni sistemi (upravljanje radom rač. sistema)• uslužni programi (dijagnostika, upravljanje podacima, itd.)• simulatori računarskih sistema• programski sistemi za programiranje (asembleri, prevodioci,
interpreteri).
Aplikacioni programi
• Neke klase aplikacionih programa:– DTP (DeskTop Publishing)
• Quark Express, MS Publisher, Adobe Page Maker, ...
– CAD/CAM• AutoCAD, ArhiCAD, ...
– Word processors/Spreadsheet• MS Office, Open Office, ...
– Internet• WWW: Internet Explorer, Mozilla Firefox, ...• Email: Outlook Express, The Bat, ...• Chat, voice chat: MS Messanger, Skype, ...
46/47
• Neke klase aplikacionih programa:– DTP (DeskTop Publishing)
• Quark Express, MS Publisher, Adobe Page Maker, ...
– CAD/CAM• AutoCAD, ArhiCAD, ...
– Word processors/Spreadsheet• MS Office, Open Office, ...
– Internet• WWW: Internet Explorer, Mozilla Firefox, ...• Email: Outlook Express, The Bat, ...• Chat, voice chat: MS Messanger, Skype, ...
Sistemski programi
• Operativni sistemi– Windows, Linux, Solaris, ...
• Dijagnostika– Motherboard Monitor, Network Monitor, ...
• Simulatori računarskih sistema– VMWare, Spectrum Emulator, Amiga
Emulator, ...• Programski sistemi za programiranje
– Visual Studio, Eclipse, ...47/47
• Operativni sistemi– Windows, Linux, Solaris, ...
• Dijagnostika– Motherboard Monitor, Network Monitor, ...
• Simulatori računarskih sistema– VMWare, Spectrum Emulator, Amiga
Emulator, ...• Programski sistemi za programiranje
– Visual Studio, Eclipse, ...
Računarski praktikum
Matematičke osnove radaračunara
Matematičke osnove rada računara
• Brojni sistemi– pozicioni i nepozicioni brojni sistemi– računarske operacije
• Predstavljanje celobrojnih brojeva u računaru– predstavljanje negativnih brojeva
• Predstavljanje razlomljenih brojeva u računaru• Kodiranje informacija u računaru• Kodovi za detekciju i korekciju grešaka
2/46
• Brojni sistemi– pozicioni i nepozicioni brojni sistemi– računarske operacije
• Predstavljanje celobrojnih brojeva u računaru– predstavljanje negativnih brojeva
• Predstavljanje razlomljenih brojeva u računaru• Kodiranje informacija u računaru• Kodovi za detekciju i korekciju grešaka
Brojni sistemi
• Pozicioni i nepozicioni brojni sistemi– Nepozicioni brojni sistem – Rimski Brojni Sistem:
• I – jedan• V – pet• X – deset• L – pedeset• C – sto• D – pet stotina• M – hiljadu• M – milion (broj crtica iznad slova M označava koliko puta
množimo sa hiljadu).
3/46
• Pozicioni i nepozicioni brojni sistemi– Nepozicioni brojni sistem – Rimski Brojni Sistem:
• I – jedan• V – pet• X – deset• L – pedeset• C – sto• D – pet stotina• M – hiljadu• M – milion (broj crtica iznad slova M označava koliko puta
množimo sa hiljadu).
Pozicioni brojni sistem• Svaka cifra ima zadatu težinu.• Opšti oblik:
anan-1...a1a0 ,a-1a-2...a-mtj.
an∙bn+an-1∙bn-1 + ... + a1∙b1 + a0∙b0 + a-1∙b-1+a-2∙b-2+...+a-m∙b-m
• a – cifra• b – osnova (baza)• n+1 – broj celobrojnih cifara• m – broj decimala
4/46
• Svaka cifra ima zadatu težinu.• Opšti oblik:
anan-1...a1a0 ,a-1a-2...a-mtj.
an∙bn+an-1∙bn-1 + ... + a1∙b1 + a0∙b0 + a-1∙b-1+a-2∙b-2+...+a-m∙b-m
• a – cifra• b – osnova (baza)• n+1 – broj celobrojnih cifara• m – broj decimala
Pozicioni brojni sistem - primeri• 198410 = 1∙103 + 9∙102 + 8∙101 + 4∙100 =
1∙1000 + 9∙100 + 8∙10 + 4∙1 =1000 + 900 + 80 + 4 = 1984
• 100112 = 1∙24 + 0∙23 + 0∙22 + 1∙21 + 1∙20 =1∙16 + 0∙8 + 0∙4 + 1∙2 + 1∙1 = 16 + 2 + 1 =19
• 12,310= 1∙101 + 2∙100 + 3∙10-1 =1∙10 + 2∙1 + 3∙0,1 =10+2+0,3 =12,3
5/46
• 198410 = 1∙103 + 9∙102 + 8∙101 + 4∙100 =1∙1000 + 9∙100 + 8∙10 + 4∙1 =1000 + 900 + 80 + 4 = 1984
• 100112 = 1∙24 + 0∙23 + 0∙22 + 1∙21 + 1∙20 =1∙16 + 0∙8 + 0∙4 + 1∙2 + 1∙1 = 16 + 2 + 1 =19
• 12,310= 1∙101 + 2∙100 + 3∙10-1 =1∙10 + 2∙1 + 3∙0,1 =10+2+0,3 =12,3
Predstavljanje brojeva u različitimbrojnim sistemima
• Cifre brojnog sistema su: 0 do (baza – 1)• Primer:
– binarni (b=2): {0, 1}– oktalni (b=8): {0, 1, 2, 3, 4, 5, 6, 7}– decimalni (b=10): {0, 1, 2, 3,4 ,5 ,6 ,7 , 8, 9}– heksadecimalni (b=16): {0, 1, 2, 3, 4, 5, 6, 7,
8, 9, A, B, C, D, E, F}
6/46
• Cifre brojnog sistema su: 0 do (baza – 1)• Primer:
– binarni (b=2): {0, 1}– oktalni (b=8): {0, 1, 2, 3, 4, 5, 6, 7}– decimalni (b=10): {0, 1, 2, 3,4 ,5 ,6 ,7 , 8, 9}– heksadecimalni (b=16): {0, 1, 2, 3, 4, 5, 6, 7,
8, 9, A, B, C, D, E, F}
Primer
7/46
Računske operacije – binarni brojnisistem
• Sabiranje:
• Oduzimanje:
8/46
• Sabiranje:
• Oduzimanje:
Računske operacije – binarni brojnisistem
• Množenje:
• Deljenje:– nulom nije dozvoljeno– jedinicom - trivijalno
9/46
• Množenje:
• Deljenje:– nulom nije dozvoljeno– jedinicom - trivijalno
Računske operacije – binarni brojnisistem
11+11---110
110-101---001
110 x 11--------110
+ 110-----------10010
1001 : 11 = 11----100-011-----0011-0011------0000
10/46
110 x 11--------110
+ 110-----------10010
1001 : 11 = 11----100-011-----0011-0011------0000
Računske operacije – oktalni brojnisistem
447+652----1321
54,3-45,4----6,7
123 x 21--------123
+ 246-----------2603
2603 : 21 = 123----26-21----50-42----63-63-----
011/46
123 x 21--------123
+ 246-----------2603
2603 : 21 = 123----26-21----50-42----63-63-----
0
Računske operacije –heksadecimalni brojni sistem
127+1AA----2D1
2C-25----7
53 x 11--------53
+ 53-----------583
583 : 11 = 53----58-55----33-33----0
12/46
53 x 11--------53
+ 53-----------583
583 : 11 = 53----58-55----33-33----0
1A0 x 13--------4E0
+ 1A0-----------1EE0
Konverzije brojnih sistema
• Opšta formula– celobrojni deo:
celobrojni deo (a) u novu bazu b:a : b = r1 i ostatak o1r1 : b = r2 i ostatak o2r2 : b = r3 i ostatak o3...rn : b = 0 i ostatak on----------------------------------rezultat: on ... o3 o2 o1
13/46
• Opšta formula– celobrojni deo:
celobrojni deo (a) u novu bazu b:a : b = r1 i ostatak o1r1 : b = r2 i ostatak o2r2 : b = r3 i ostatak o3...rn : b = 0 i ostatak on----------------------------------rezultat: on ... o3 o2 o1
Konverzije brojnih sistema
• Opšta formula– razlomljeni deo:
razlomljeni deo (a) u novu bazu b:a ∙ b = c1,r1 tj. celobrojni deo c1 i razlomljeni deo r1r1 ∙ b = c2,r2 tj. celobrojni deo c2 i razlomljeni deo r2r2 ∙ b = c3,r3 tj. celobrojni deo c3 i razlomljeni deo r3...rn ∙ b = cn,0 tj. celobrojni deo cn i razlomljeni deo 0------------------------------------------Rezultat: c1 c2 ... cn
– Problem: ako razlomljeni deo ne bude 0
14/46
• Opšta formula– razlomljeni deo:
razlomljeni deo (a) u novu bazu b:a ∙ b = c1,r1 tj. celobrojni deo c1 i razlomljeni deo r1r1 ∙ b = c2,r2 tj. celobrojni deo c2 i razlomljeni deo r2r2 ∙ b = c3,r3 tj. celobrojni deo c3 i razlomljeni deo r3...rn ∙ b = cn,0 tj. celobrojni deo cn i razlomljeni deo 0------------------------------------------Rezultat: c1 c2 ... cn
– Problem: ako razlomljeni deo ne bude 0
Primer
• Broj 701,62510 konvertovati uheksadecimalni brojni sistem.
701 : 16 = 43 i ostatak 13 D43 : 16 = 2 i ostatak 11 B
2 : 16 = 0 i ostatak 2----------------------------------rezultat: 2BD
15/46
• Broj 701,62510 konvertovati uheksadecimalni brojni sistem.
701 : 16 = 43 i ostatak 13 D43 : 16 = 2 i ostatak 11 B
2 : 16 = 0 i ostatak 2----------------------------------rezultat: 2BD
Primer
• Razlomljeni deo: 0,6250,625 ∙ 16 = 10,0 tj. celobrojni deo 10A i razlomljeni deo 0-----------------------
• Konačan rezultat: 2BD,A16
16/46
• Razlomljeni deo: 0,6250,625 ∙ 16 = 10,0 tj. celobrojni deo 10A i razlomljeni deo 0-----------------------
• Konačan rezultat: 2BD,A16
Primer
• Broj 701,062510 konvertovati u oktalnibrojni sistem.
701 : 8 = 87 i ostatak 587 : 8 = 10 i ostatak 710 : 8 = 1 i ostatak 21 : 8 = 0 i ostatak 1
----------------------------------rezultat: 1275
17/46
• Broj 701,062510 konvertovati u oktalnibrojni sistem.
701 : 8 = 87 i ostatak 587 : 8 = 10 i ostatak 710 : 8 = 1 i ostatak 21 : 8 = 0 i ostatak 1
----------------------------------rezultat: 1275
Primer
• Razlomljeni deo: 0,06250,0625 ∙ 8 = 0,5 tj. celobrojni deo 0 i razlomljeni deo 0,50,5 ∙ 8 = 4,0 tj. celobrojni deo 4 i razlomljeni deo 0-----------------------
• Konačan rezultat: 1275,048
18/46
• Razlomljeni deo: 0,06250,0625 ∙ 8 = 0,5 tj. celobrojni deo 0 i razlomljeni deo 0,50,5 ∙ 8 = 4,0 tj. celobrojni deo 4 i razlomljeni deo 0-----------------------
• Konačan rezultat: 1275,048
Primer
• Broj 37,62510 konvertovati u binarni brojnisistem.
37 : 2 = 18 i ostatak 118 : 2 = 9 i ostatak 09 : 2 = 4 i ostatak 14 : 2 = 2 i ostatak 02 : 2 = 1 i ostatak 01 : 2 = 0 i ostatak 1
----------------------------------rezultat: 100101
19/46
• Broj 37,62510 konvertovati u binarni brojnisistem.
37 : 2 = 18 i ostatak 118 : 2 = 9 i ostatak 09 : 2 = 4 i ostatak 14 : 2 = 2 i ostatak 02 : 2 = 1 i ostatak 01 : 2 = 0 i ostatak 1
----------------------------------rezultat: 100101
Primer
• Razlomljeni deo: 0,6250,625 ∙ 2 = 1,250 tj. celobrojni deo 1 i razlomljeni deo 0,2500,250 ∙ 2 = 0,5 tj. celobrojni deo 0 i razlomljeni deo 0,50,5 ∙ 2 = 1,0 tj. celobrojni deo 1 i razlomljeni deo 0-----------------------
• Konačan rezultat: 100101,1012
20/46
• Razlomljeni deo: 0,6250,625 ∙ 2 = 1,250 tj. celobrojni deo 1 i razlomljeni deo 0,2500,250 ∙ 2 = 0,5 tj. celobrojni deo 0 i razlomljeni deo 0,50,5 ∙ 2 = 1,0 tj. celobrojni deo 1 i razlomljeni deo 0-----------------------
• Konačan rezultat: 100101,1012
Konverzija iz binarnog u oktalni iheksadecimalni brojni sistem
• Drugačijim grupisanjem bitova:– po tri bita za oktalni brojni sistem– po četiri bita za heksadecimalni brojni sistem
• Primer:01 100 1112 = 1478
0110 01112 = 6716
21/46
• Drugačijim grupisanjem bitova:– po tri bita za oktalni brojni sistem– po četiri bita za heksadecimalni brojni sistem
• Primer:01 100 1112 = 1478
0110 01112 = 6716
heksadecimalni oktalni
• Preko binarnog brojnog sistema.• Primer:
A316 = 1010 00112
10 100 0112 = 2438
22/46
• Preko binarnog brojnog sistema.• Primer:
A316 = 1010 00112
10 100 0112 = 2438
Predstavljanje celobrojnih brojevau računaru
• Svaka memorijska ćelija u računaru ima 8bitova – jedan bajt.– u jedan bajt se može smestiti broj u rasponu od
0 – 255• Ako je celobrojna vrednost veća od 255,
uzme se više bajtova:– dva bajta – 16 bita: 0 – 65535– četiri bajta – 32 bita: 0 – 4.294.967.295
23/46
• Svaka memorijska ćelija u računaru ima 8bitova – jedan bajt.– u jedan bajt se može smestiti broj u rasponu od
0 – 255• Ako je celobrojna vrednost veća od 255,
uzme se više bajtova:– dva bajta – 16 bita: 0 – 65535– četiri bajta – 32 bita: 0 – 4.294.967.295
Predstavljanje negativnih brojeva
• Preko znaka i apsolutne vrednosti– komplikovan algoritam za sabiranje i
oduzimanje• Preko komplementa
– jednostavan algoritam za sabiranje ioduzimanje
24/46
• Preko znaka i apsolutne vrednosti– komplikovan algoritam za sabiranje i
oduzimanje• Preko komplementa
– jednostavan algoritam za sabiranje ioduzimanje
Predstavljanje negativnih brojevakomplementom
• Potpuni komplement (u binarnom brojnomsistemu se još zove i komplement dvojke).
• Nepotpuni komplement (u binarnombrojnom sistemu se još zove i komplementjedinice).
• U oba sistema se poslednja cifra koristi zaznak broja (pozitivan ili negativan).
25/46
• Potpuni komplement (u binarnom brojnomsistemu se još zove i komplement dvojke).
• Nepotpuni komplement (u binarnombrojnom sistemu se još zove i komplementjedinice).
• U oba sistema se poslednja cifra koristi zaznak broja (pozitivan ili negativan).
Potpuni komplement
• broj x• n cifara• baza b• PotpuniKomplement (x) = bn+1 – x
26/46
• broj x• n cifara• baza b• PotpuniKomplement (x) = bn+1 – x
Potpuni komplement
• Primer:
x = 00102=210
n = 3b = 2PotpuniKomplement (2) = 23+1 – 2 =100002 – 00102 = 11102
znak!
27/46
• Primer:
x = 00102=210
n = 3b = 2PotpuniKomplement (2) = 23+1 – 2 =100002 – 00102 = 11102
znak!
Potpuni komplement
• Primer:
x = 11102=-210
n = 3b = 2PotpuniKomplement (-2) = 23+1 – (-2) =100002 – 11102 = 00102
znak!
28/46
• Primer:
x = 11102=-210
n = 3b = 2PotpuniKomplement (-2) = 23+1 – (-2) =100002 – 11102 = 00102
znak!
Sabiranje sa potpunimkomplementom
• Pravilo:A – B = A + PotpuniKomplement(B) =
Rezultat + Prenos• Ako je Prenos = 1 onda je Rezultat
korektan.• Ako je Prenos = 0 onda je rezultat
negativan (stvarni rezultat je potpunikomplement od rezultata sa negativnimpredznakom).
29/46
• Pravilo:A – B = A + PotpuniKomplement(B) =
Rezultat + Prenos• Ako je Prenos = 1 onda je Rezultat
korektan.• Ako je Prenos = 0 onda je rezultat
negativan (stvarni rezultat je potpunikomplement od rezultata sa negativnimpredznakom).
Primer
• 01012 – 00102 = 01012 + 11102 = 100112
• 00012 – 00102 = 00012 + 11102 = 011112
Stvarni rezultat: - PotpuniKomplement(11112) =100002 – 11112 = - 000012
prenos
30/46
• 01012 – 00102 = 01012 + 11102 = 100112
• 00012 – 00102 = 00012 + 11102 = 011112
Stvarni rezultat: - PotpuniKomplement(11112) =100002 – 11112 = - 000012
prenos
Prekoračenje (overflow)
• Javlja se kada se prilikom sabiranja dvabroja dobije rezultat koji ne može da staneu zadati broj bitova
• Pravilo:– ako se prilikom sabiranja dva pozitivna ili dva
negativna broja dobije broj suprotnog znaka,dogodilo se prekoračenje.
• Primer:01012 + 01002 = 10012 (5 + 4 = 9)10012 + 10102 = 100112 ((-7)+(-6) = -13)
31/46
• Javlja se kada se prilikom sabiranja dvabroja dobije rezultat koji ne može da staneu zadati broj bitova
• Pravilo:– ako se prilikom sabiranja dva pozitivna ili dva
negativna broja dobije broj suprotnog znaka,dogodilo se prekoračenje.
• Primer:01012 + 01002 = 10012 (5 + 4 = 9)10012 + 10102 = 100112 ((-7)+(-6) = -13)
Nepotpuni komplement
• broj x• n cifara• baza b• NepotpuniKomplement (x) = (bn+1 -1) – x
32/46
• broj x• n cifara• baza b• NepotpuniKomplement (x) = (bn+1 -1) – x
Nepotpuni komplement
• Primer:
x = 00102=210
n = 3b = 2NepotpuniKomplement (2) = (23+1 -1) – 2 =(100002 – 00012)– 00102 = 11012
znak!
33/46
• Primer:
x = 00102=210
n = 3b = 2NepotpuniKomplement (2) = (23+1 -1) – 2 =(100002 – 00012)– 00102 = 11012
znak!
Nepotpuni komplement
• Primer:
x = 11012=-210
n = 3b = 2NepotpuniKomplement (-2) = (23+1 -1)– (-2) =(100002 - 00012) – 11012 = 00102
znak!
34/46
• Primer:
x = 11012=-210
n = 3b = 2NepotpuniKomplement (-2) = (23+1 -1)– (-2) =(100002 - 00012) – 11012 = 00102
znak!
Sabiranje sa nepotpunimkomplementom
• Pravilo:A – B = A + NepotpuniKomplement(B) =
Rezultat + Prenos• Ako je Prenos = 1 onda je
konačan rezultat = rezultat bez prenosa + 1.• Ako je Prenos = 0 onda je rezultat
negativan (stvarni rezultat je nepotpunikomplement od rezultata sa negativnimpredznakom).
35/46
• Pravilo:A – B = A + NepotpuniKomplement(B) =
Rezultat + Prenos• Ako je Prenos = 1 onda je
konačan rezultat = rezultat bez prenosa + 1.• Ako je Prenos = 0 onda je rezultat
negativan (stvarni rezultat je nepotpunikomplement od rezultata sa negativnimpredznakom).
Primer• 01012 – 00102 = 01012 + 11012 = 1 00102
Pravi rezultat: 00102 + 1 = 00112
• 00012 – 00102 = 00012 + 11012 = 011102
Stvarni rezultat: - NepotpuniKomplement(11102) =100002 – 00012 - 11102 = - 000012
prenos
36/46
• 01012 – 00102 = 01012 + 11012 = 1 00102
Pravi rezultat: 00102 + 1 = 00112
• 00012 – 00102 = 00012 + 11012 = 011102
Stvarni rezultat: - NepotpuniKomplement(11102) =100002 – 00012 - 11102 = - 000012
prenos
Sračunavanje komplementa bezoduzimanja!
• Potpuni komplement: invertovati svebitove i dodati 1.– Primer: 00102 => 11012 + 1 = 11102
• Nepotpuni komplement: invertovati svebitove.– Primer: 00102 => 11012
37/46
• Potpuni komplement: invertovati svebitove i dodati 1.– Primer: 00102 => 11012 + 1 = 11102
• Nepotpuni komplement: invertovati svebitove.– Primer: 00102 => 11012
Predstavljanje celobrojnih brojevau računaru
• Svaka memorijska ćelija u računaru ima 8 bitova – jedanbajt.– u jedan bajt se može smestiti broj u rasponu od:
• 0 – 255, neoznačen• -128 – 127, označen, u potpunom/nepotpunom komplementu
• Ako je celobrojna vrednost veća od 128/255, uzme se višebajtova:– dva bajta – 16 bita:
• 0 – 65535, neoznačen• -32768 – 32767, označen, u potpunom/nepotpunom komplementu
– četiri bajta – 32 bita:• 0 – 4.294.967.295, neoznačen• -2.147.483.648 – 2.147.483.647, označen, u potpunom/nepotpunom
komplementu
38/46
• Svaka memorijska ćelija u računaru ima 8 bitova – jedanbajt.– u jedan bajt se može smestiti broj u rasponu od:
• 0 – 255, neoznačen• -128 – 127, označen, u potpunom/nepotpunom komplementu
• Ako je celobrojna vrednost veća od 128/255, uzme se višebajtova:– dva bajta – 16 bita:
• 0 – 65535, neoznačen• -32768 – 32767, označen, u potpunom/nepotpunom komplementu
– četiri bajta – 32 bita:• 0 – 4.294.967.295, neoznačen• -2.147.483.648 – 2.147.483.647, označen, u potpunom/nepotpunom
komplementu
Predstavljanje razlomljenih brojevau računaru
• U nepokretnom zarezu– fiksna pozicija decimalnog zareza.
• U pokretnom zarezu (floating point)– brojevi se predstavljaju u obliku: m ∙ be
m – mantisab – bazae – eksponent
• U memoriji računara se pamte mantisa ieksponent kao celobrojne označene vrednosti,najčešće sa bazom 2.
39/46
• U nepokretnom zarezu– fiksna pozicija decimalnog zareza.
• U pokretnom zarezu (floating point)– brojevi se predstavljaju u obliku: m ∙ be
m – mantisab – bazae – eksponent
• U memoriji računara se pamte mantisa ieksponent kao celobrojne označene vrednosti,najčešće sa bazom 2.
Primer
• 2*102 + 1*101 = 2*102 + 0,1*102 =(2+0,1)*102 = 2,1*102 = 210
• 2*102 * 3*101 = (2*3)*102+1 = 6*103 = 6000
40/46
• 2*102 + 1*101 = 2*102 + 0,1*102 =(2+0,1)*102 = 2,1*102 = 210
• 2*102 * 3*101 = (2*3)*102+1 = 6*103 = 6000
Pokretni zarez
• Sabiranje odn. oduzimanje - pre sabiranja(oduzimanja) brojevi se svedu na isti eksponent:m1∙ be + m2 ∙ be = (m1 + m2) ∙ be
• Množenje, odn. deljenje:(m1∙ be1) ∙ (m2 ∙ be2) = (m1 ∙ m2) ∙ b(e1+e2)
• Svođenje eksponenata na istu vrednost se svodina smanjenje/povećanje eksponenta, uzistovremeno deljenje/množenje mantise bazom– u računaru se deljenje/množenje matise bazom 2
svodi na pomeranje desno/levo bitova.41/46
• Sabiranje odn. oduzimanje - pre sabiranja(oduzimanja) brojevi se svedu na isti eksponent:m1∙ be + m2 ∙ be = (m1 + m2) ∙ be
• Množenje, odn. deljenje:(m1∙ be1) ∙ (m2 ∙ be2) = (m1 ∙ m2) ∙ b(e1+e2)
• Svođenje eksponenata na istu vrednost se svodina smanjenje/povećanje eksponenta, uzistovremeno deljenje/množenje mantise bazom– u računaru se deljenje/množenje matise bazom 2
svodi na pomeranje desno/levo bitova.
Pokretni zarez• Normalizovana mantisa: kada je
b-1 ≤ |m| ≤ 1• U praksi se normalizacija mantise svodi na
zapis: 1,xxxx, gde se 1 podrazumeva• Tada je preciznost najveća.• Pokretni zarez u računarnima, u nekim
situacijama nije dovoljno precizan!– razlog je taj što je baza 2, pa konverzija decimalnih
brojeva u oblik m ∙2e ne daje okrugao broj.– greška je veoma mala, ali se uzastopnim operacijama
može akumulirati.42/46
• Normalizovana mantisa: kada jeb-1 ≤ |m| ≤ 1
• U praksi se normalizacija mantise svodi nazapis: 1,xxxx, gde se 1 podrazumeva
• Tada je preciznost najveća.• Pokretni zarez u računarnima, u nekim
situacijama nije dovoljno precizan!– razlog je taj što je baza 2, pa konverzija decimalnih
brojeva u oblik m ∙2e ne daje okrugao broj.– greška je veoma mala, ali se uzastopnim operacijama
može akumulirati.
Primer
• 2*102 + 1*101 = 2*102 + 0,1*102 =(2+0,1)*102 = 2,1*102 = 210
• 2*102 * 3*101 = (2*3)*102+1 = 6*103 = 6000
43/46
• 2*102 + 1*101 = 2*102 + 0,1*102 =(2+0,1)*102 = 2,1*102 = 210
• 2*102 * 3*101 = (2*3)*102+1 = 6*103 = 6000
Kodiranje alfanumeričkihinformacija
• Alfanumerički simboli:– numerički simboli (0, 1, ..., 9)– slovni simboli (A, B, ..., Z)– inteprunkcijski znakovi (, . ; : “ ...)– specijalni simboli (#, $, %, ...)
• Standardi:– ASCII (American Standard Code for Information
Interchange)– ISO 8859-1– Windows CP 1250– Unicode
44/46
• Alfanumerički simboli:– numerički simboli (0, 1, ..., 9)– slovni simboli (A, B, ..., Z)– inteprunkcijski znakovi (, . ; : “ ...)– specijalni simboli (#, $, %, ...)
• Standardi:– ASCII (American Standard Code for Information
Interchange)– ISO 8859-1– Windows CP 1250– Unicode
Kodovi za detekciju i korekcijugrešaka
• Koncentrisaćemo se na binarni brojnisistem. Sve informacije će biti kodiranebinarno!
• Uzrok pojave grešaka.• Kodovi za detekciju grešaka
– u stanju su da detektuju grešku, ali ne i da jekoriguju
• Kodovi za korekciju grešaka– detekcija i korekcija grešaka
45/46
• Koncentrisaćemo se na binarni brojnisistem. Sve informacije će biti kodiranebinarno!
• Uzrok pojave grešaka.• Kodovi za detekciju grešaka
– u stanju su da detektuju grešku, ali ne i da jekoriguju
• Kodovi za korekciju grešaka– detekcija i korekcija grešaka
Kodovi za detekciju grešaka• Najjednostavnije je da se doda još jedan bit tako da
ukupan broj jedinica u poruci bude paran ili neparan.• Primer:
– originalna poruka: 001101– sa dodatnim bitom (uk. br. jedinica paran):
0011011– sa greškom: 0001011– vidimo da je došlo do greške pošto je ukupan broj jedinica
neparan!• Greške od više od jednog bita mogu da prođu
nedetektovane!1111011
46/46
• Najjednostavnije je da se doda još jedan bit tako daukupan broj jedinica u poruci bude paran ili neparan.
• Primer:– originalna poruka: 001101– sa dodatnim bitom (uk. br. jedinica paran):
0011011– sa greškom: 0001011– vidimo da je došlo do greške pošto je ukupan broj jedinica
neparan!• Greške od više od jednog bita mogu da prođu
nedetektovane!1111011
Karakter za proveru bloka
b1 b2 b3 b4 p1b5 b6 b7 b8 p2p3 p4 p5 p6 p7• U slučaju greške od jednog bita bilo gde,
moguće je detektovati i korigovati grešku:b1 b2 b3 b4 p1b5 b6 b7 b8 p2p3 p4 p5 p6 p7
47/46
b1 b2 b3 b4 p1b5 b6 b7 b8 p2p3 p4 p5 p6 p7• U slučaju greške od jednog bita bilo gde,
moguće je detektovati i korigovati grešku:b1 b2 b3 b4 p1b5 b6 b7 b8 p2p3 p4 p5 p6 p7
CRC kod
• Cyclic Redundancy Character• Poruka se kao niz bitova deli sa nekim
unapred dogovorenim brojem, rezultat seodbacuje a ostatak pri deljenju se doda uzporuku.
• Na prijemnoj strani se primljena porukadeli istim brojem i ostatak se poredi saprimljenim ostatkom.
48/46
• Cyclic Redundancy Character• Poruka se kao niz bitova deli sa nekim
unapred dogovorenim brojem, rezultat seodbacuje a ostatak pri deljenju se doda uzporuku.
• Na prijemnoj strani se primljena porukadeli istim brojem i ostatak se poredi saprimljenim ostatkom.
Računarski praktikum
Rešavanje problema primenomračunara
Rešavanje problema primenomračunara
• Tri faze (opšte):– analiza problema– specifikacija rešenja– realizacija
2/36
• Tri faze (opšte):– analiza problema– specifikacija rešenja– realizacija
Rešavanje problema primenomračunara
• Tri faze:– analiza problema– razvoj algoritma za rešavanje problema– transformacija algoritma u računarski program
(programiranje).
3/36
• Tri faze:– analiza problema– razvoj algoritma za rešavanje problema– transformacija algoritma u računarski program
(programiranje).
Analiza problema
• Cilj: da pruži preciznu definiciju i opisproblema, specifikaciju ulaznih podataka,specifikaciju izlaznih podataka (rezultatekoji se očekuju), kao i postupak da se dotakvih rezultata dođe.
• Specifikacija ulaznih i izlaznih podatakaodređuje u izvesnom stepenu i algoritamobrade podataka.
4/36
• Cilj: da pruži preciznu definiciju i opisproblema, specifikaciju ulaznih podataka,specifikaciju izlaznih podataka (rezultatekoji se očekuju), kao i postupak da se dotakvih rezultata dođe.
• Specifikacija ulaznih i izlaznih podatakaodređuje u izvesnom stepenu i algoritamobrade podataka.
Algoritmi• Algoritam predstavlja niz uputstava koja tačno
određuju redosled operacija koje će dovesti dorešenja za probleme datog tipa.
• Karakteristike:– broj operacija koje se moraju izvršiti za rešenje
konkretnog problema nije poznat unapred.– procedura koja je određena algoritmom je
deterministički proces – data u obliku konačnog brojainstrukcija
– instrukcije koje čine algoritam definišu proceduru kojase može izvršiti na odgovarajućem skupu podataka iu svakom slučaju dovodi do korektnog rezultata.
5/36
• Algoritam predstavlja niz uputstava koja tačnoodređuju redosled operacija koje će dovesti dorešenja za probleme datog tipa.
• Karakteristike:– broj operacija koje se moraju izvršiti za rešenje
konkretnog problema nije poznat unapred.– procedura koja je određena algoritmom je
deterministički proces – data u obliku konačnog brojainstrukcija
– instrukcije koje čine algoritam definišu proceduru kojase može izvršiti na odgovarajućem skupu podataka iu svakom slučaju dovodi do korektnog rezultata.
Algoritmi
• 5 važnih osobina:– konačnost– definisanost (bez dvosmislenosti – opis u
odgovarajućem jeziku)– ulaz– izlaz– efikasnost (vreme ili količina zauzete
memorije)
6/36
• 5 važnih osobina:– konačnost– definisanost (bez dvosmislenosti – opis u
odgovarajućem jeziku)– ulaz– izlaz– efikasnost (vreme ili količina zauzete
memorije)
Predstavljanje algoritama
• Različite tehnike:– prirodni jezici– blok dijagrami algoritma (grafička predstava)– meta jezici (između prirodnih i programskih
jezika)– programski jezici
7/36
• Različite tehnike:– prirodni jezici– blok dijagrami algoritma (grafička predstava)– meta jezici (između prirodnih i programskih
jezika)– programski jezici
Blok dijagram algoritma
8/36
Simbol obrade
• Za predstavljanje svih operacija u kojima dolazido transformacije informacionih strukturanajčešće aritmetičkim, logičkim ili operacijamaprenosa informacionog sadržaja.
9/36
A <- B * 3
Simbol obrade
POČETAK
X 2
10/36
Y X * 4
KRAJ
Simbol ulaza/Izlaza
• Za predstavljanje ulazno/izlaznih operacija kojeuvode podatke u obradu i/ili ispisuju rezultateobrade.
POČETAK
11/36
UČITAJX
ULAZ N
KRAJ
IZLAZ REZ
REZ N * N
Simbol odluke
• Za označavanje operacijaodlučivanja ili grananjatoka izvođenja algoritma,a prema nekomkriterijumu odlučivanja.
• Dve vrste:– aritmetički– logički
E1:E2< >
=
12/36
• Za označavanje operacijaodlučivanja ili grananjatoka izvođenja algoritma,a prema nekomkriterijumu odlučivanja.
• Dve vrste:– aritmetički– logički L
DA
NE
E1:E2< >
=
Simbol podalgoritma• Da označi više
algoritamskih korakapogodno grupisanih ucelinu koju nazivamopodalgoritam i koju nijepotrebno dalje razlagati udetalje.
• Motivacija:– ponavljajuće delove
grupisati u podalgoritam– dekompozicija problema na
manje
Sortiranje niza A porastućem redosledu
13/36
• Da označi višealgoritamskih korakapogodno grupisanih ucelinu koju nazivamopodalgoritam i koju nijepotrebno dalje razlagati udetalje.
• Motivacija:– ponavljajuće delove
grupisati u podalgoritam– dekompozicija problema na
manje
Sortiranje niza A porastućem redosledu
Podalgoritmi
POČETAK
ULAZN, A
KRAJ
IZLAZREZ
A = {ai}, i = 1, ..., NN - br. el. niza
SABIR(A, N, REZ)
POČETAK
POVRATAK
=SUMA <- SUMA + X(i)
I <- 1SUMA <- 0
I <- I + 1
I > M
DA
NE
SABIR(X, M, SUMA)X = {xi}, i = 1, ..., M
M - br. el.SUMA - suma niza
14/36
POČETAK
ULAZN, A
KRAJ
IZLAZREZ
A = {ai}, i = 1, ..., NN - br. el. niza
SABIR(A, N, REZ)
POČETAK
POVRATAK
=SUMA <- SUMA + X(i)
I <- 1SUMA <- 0
I <- I + 1
I > M
DA
NE
SABIR(X, M, SUMA)X = {xi}, i = 1, ..., M
M - br. el.SUMA - suma niza
Osnovne algoritamske strukture
• Linijska struktura• Struktura sa grananjem• Petlja• Struktura sa podalgoritmima
15/36
• Linijska struktura• Struktura sa grananjem• Petlja• Struktura sa podalgoritmima
Linijska struktura
• Postoji samo jednagrana izvršavanja.
• Svaki algoritamskikorak se izvršavasamo jednom.
POČETAK
ULAZA, B
SUMA <- A+BRAZ<- A - B
IZLAZA, B, SUMA, RAZ
KRAJ
16/36
• Postoji samo jednagrana izvršavanja.
• Svaki algoritamskikorak se izvršavasamo jednom.
POČETAK
ULAZA, B
SUMA <- A+BRAZ<- A - B
IZLAZA, B, SUMA, RAZ
KRAJ
Struktura sa grananjem
• Kada se u algoritmupojavi korakodlučivanja, odn.aritmetičkog ililogičkog testa.
POČETAK
ULAZA
KRAJ
A:0< >
=
ABS <- - (A) ABS <- 0 ABS <- A
IZLAZA, ABS
17/36
• Kada se u algoritmupojavi korakodlučivanja, odn.aritmetičkog ililogičkog testa.
POČETAK
ULAZA
KRAJ
A:0< >
=
ABS <- - (A) ABS <- 0 ABS <- A
IZLAZA, ABS
Petlja (ciklična struktura)
• Odlikuje se višestrukim izvršavanjemjednog ili više algoritamskih koraka.
18/36
Petlja (ciklična struktura)
• Suma niza:– Niz:
A = {a1, a2, a3, ..., aN}= {ai}, i = 1, ..., N
POČETAK
ULAZN, A
KRAJ
=SUMA <- SUMA + A(i)
I <- 1SUMA <- 0
I <- I + 1
IZLAZSUMA
I > N
DA
NE
A = {ai}, i = 1, ..., N
19/36
POČETAK
ULAZN, A
KRAJ
=SUMA <- SUMA + A(i)
I <- 1SUMA <- 0
I <- I + 1
IZLAZSUMA
I > N
DA
NE
A = {ai}, i = 1, ..., N
Struktura sa podalgoritmima
• Veza između algoritma i podalgoritma –lista ulazno-izlaznih parametara– stvarna lista parametara – parametri koji se
prosleđuju podalgoritmu iz glavnog algoritma– formalna lista parametara – lista parametara
pozvanog algoritma• Broj, redosled i vrsta parametara stvarne i
formalne liste mora da se poklapa.
20/36
• Veza između algoritma i podalgoritma –lista ulazno-izlaznih parametara– stvarna lista parametara – parametri koji se
prosleđuju podalgoritmu iz glavnog algoritma– formalna lista parametara – lista parametara
pozvanog algoritma• Broj, redosled i vrsta parametara stvarne i
formalne liste mora da se poklapa.
Struktura sa podalgoritmima
POČETAK
ULAZN, A
KRAJ
IZLAZREZ
A = {ai}, i = 1, ..., NN - br. el. niza
SABIR(A, N, REZ)
POČETAK
POVRATAK
=SUMA <- SUMA + X(i)
I <- 1SUMA <- 0
I <- I + 1
I > M
DA
NE
SABIR(X, M, SUMA)X = {xi}, i = 1, ..., M
M - br. el.SUMA - suma niza
21/36
POČETAK
ULAZN, A
KRAJ
IZLAZREZ
A = {ai}, i = 1, ..., NN - br. el. niza
SABIR(A, N, REZ)
POČETAK
POVRATAK
=SUMA <- SUMA + X(i)
I <- 1SUMA <- 0
I <- I + 1
I > M
DA
NE
SABIR(X, M, SUMA)X = {xi}, i = 1, ..., M
M - br. el.SUMA - suma niza
Struktura sa podalgoritmima
• Primer:
)!(!
!
ini
nn
i
n
i
n
i i
in
11
POČETAK
ULAZ N, I
FAKT(N, FN)
FAKT(I, FI)
22/36
• Primer:
n
i
n
i i
in
11
10
n
nn
1
FAKT(N-I, FNI)
KRAJ
IZLAZ REZ
REZ FN/(FI*FNI)
Struktura sa podalgoritmima
• Parametar N jeulazni
• Parametar F jeizlazni– u njemu je
sračunati faktorijel(faktorijel od N)
POČETAK
I 1F 1
F F * I
FAKT(N, F)F – Faktorijelod N
23/36
• Parametar N jeulazni
• Parametar F jeizlazni– u njemu je
sračunati faktorijel(faktorijel od N)
POVRATAK
F F * I
I I + 1
I <=NDA
NE
Struktura sa podalgoritmima
• Bolje rešenje:
)!(!
!
ini
nn
i
n
i
n
i i
in
11
POČETAK
ULAZ N, I
24/36
• Bolje rešenje:
n
i
n
i i
in
11
10
n
nn
1
BIN(N, I, REZ)
KRAJ
IZLAZ REZ
Struktura sa podalgoritmima
• Bolje rešenje:
)!(!
!
ini
nn
i
n
i
n
i i
in
11
POČETAK
K 0REZ 1
REZ (N-K)/(K+1)*REZ
BIN(N, I, REZ)REZ – Bin. koefod N nad I
25/36
• Bolje rešenje:
n
i
n
i i
in
11
10
n
nn
1
POVRATAK
REZ (N-K)/(K+1)*REZ
K K + 1
K <=IDA
NE
UML
• Objedinjeni jezik modeliranja (UNIFIEDMODELING LANGUAGE)
• Jezik za modeliranje koji je standardizovanod strane OMG (Object ManagementGroup), najšire korišćen u ObjektnoOrijentisanoj (OO) analizi i dizajnu
• Vizuelni jezik• UML daje standardizovanu notaciju i
semantiku za skup OO apstrakcija
26/36
• Objedinjeni jezik modeliranja (UNIFIEDMODELING LANGUAGE)
• Jezik za modeliranje koji je standardizovanod strane OMG (Object ManagementGroup), najšire korišćen u ObjektnoOrijentisanoj (OO) analizi i dizajnu
• Vizuelni jezik• UML daje standardizovanu notaciju i
semantiku za skup OO apstrakcija
Dijagrami• Slučajevi korišćenja (use-case diagram)• Statički
– dijagram klasa (class diagram)• Dinamički
– dijagram sekvenci (sequence diagram)– dijagram saradnje (collaboration diagram)– dijagram stanja (statechart diagram)– dijagram aktivnosti (activity diagram)
• Fizički– dijagram komponenti (component diagram)– dijagram razmeštaja (deployment diagram)
27/36
• Slučajevi korišćenja (use-case diagram)• Statički
– dijagram klasa (class diagram)• Dinamički
– dijagram sekvenci (sequence diagram)– dijagram saradnje (collaboration diagram)– dijagram stanja (statechart diagram)– dijagram aktivnosti (activity diagram)
• Fizički– dijagram komponenti (component diagram)– dijagram razmeštaja (deployment diagram)
Slučajevi korišćenja – primer
Radnik kod aplikanta : 4Obradjivač/ komisija : 9
Registacija spoljnjeg korisnika
Formiranje validne prijave kroz interakciju Aplikanta i Obrađivača
Podnošenje konačne prijave
28/36
Radnik kod aplikanta : 4Obradjivač/ komisija : 9
Registacija spoljnjeg korisnika
Formiranje validne prijave kroz interakciju Aplikanta i Obrađivača
Podnošenje konačne prijave
Dijagram klasa – primer
29/36
Dijagram sekvenci – primer
Dijagram saradnje - primer
Dijagram stanja – primer
32/36
Dijagram aktivnosti – primerRadnik kod aplikanta Obrađivač/ komisija
[Nije istekao]
[Istekao]
Provera da li je istekao zvanican rok za
preliminarnuobradupodataka
Npr. Receno je da 5(N) dana pre isteka
zvanicnog rokasekretarijat nece imati
vremena zapreliminarnu obradu i
nece se time baviti
[Da]
[Ne]
[Ne]
[Da]
<<decisionInput>>Da li je prikupljena
dokumentacijakompletna?
<<decisionInput>>Da li korisnik želi danastavi da sakupljadokumentaciju i da
konkurise?
Sakupljanje dokumentacije potrebne za konkurs
Proveravanje kompletnosti primljene dokumentacije
Sakupljena konkursna dokumentacija [inicijalno]
Dokumentacija kompletna
Obaveštavanje aplikanta
Obaveštavanje aplikanta o potrebnoj dodatnoj dokumentacij iNastavak sakupljanja dokumentacije
Sakupljanje dodatne dokumentacije
Sakupljena konkursna dokumentacija [dopunjeno]
Provera roka
Radnik kod aplikanta Obrađivač/ komisija
[Nije istekao]
[Istekao]
Provera da li je istekao zvanican rok za
preliminarnuobradupodataka
Npr. Receno je da 5(N) dana pre isteka
zvanicnog rokasekretarijat nece imati
vremena zapreliminarnu obradu i
nece se time baviti
[Da]
[Ne]
[Ne]
[Da]
<<decisionInput>>Da li je prikupljena
dokumentacijakompletna?
<<decisionInput>>Da li korisnik želi danastavi da sakupljadokumentaciju i da
konkurise?
Sakupljanje dokumentacije potrebne za konkurs
Proveravanje kompletnosti primljene dokumentacije
Sakupljena konkursna dokumentacija [inicijalno]
Dokumentacija kompletna
Obaveštavanje aplikanta
Obaveštavanje aplikanta o potrebnoj dodatnoj dokumentacij iNastavak sakupljanja dokumentacije
Sakupljanje dodatne dokumentacije
Sakupljena konkursna dokumentacija [dopunjeno]
Provera roka
Dijagram komponenti – primeră
Primarni
ă
agentski centar
ă
Agentsk i
ă
centar 1
ă
Agentski
ă
centar 2
ă
Agentski
ă
centar 3
ă
Agentski
ă
centar 4
ă
Agentski
ă
centar 5
ă
Agentski
ă
centar 6
ă
Primarni
ă
agentski centar
ă
Agentsk i
ă
centar 1
ă
Agentski
ă
centar 2
ă
Agentski
ă
centar 3
ă
Agentski
ă
centar 4
ă
Agentski
ă
centar 5
ă
Agentski
ă
centar 6
<<TCP/IP>>
Server baze:PowerPC
Dijagram razmeštaja – primer
<<TCP/IP>>
Atena:PENTIUM
Afrodita:PENTIUM
Programiranje• Implementacija algoritma na računaru• Program: niz naredbi (instrukcija) pisanih u
određenom programskom jeziku (izvornomjeziku) koji poseduje implicitan ili eksplicitanredosled izvršavanja na računaru.
• Nakon pisanja programa sledi:– testiranje i– otkrivanje grešaka (debagiranje – debugging):
• greška u lošoj definiciji problema• logičke greške u algoritmu• greške prilikom unosa programa.
36/36
• Implementacija algoritma na računaru• Program: niz naredbi (instrukcija) pisanih u
određenom programskom jeziku (izvornomjeziku) koji poseduje implicitan ili eksplicitanredosled izvršavanja na računaru.
• Nakon pisanja programa sledi:– testiranje i– otkrivanje grešaka (debagiranje – debugging):
• greška u lošoj definiciji problema• logičke greške u algoritmu• greške prilikom unosa programa.
Računarski praktikum
Masovna memorija
Masovna memorija
• Magnetni diskovi– hard disk,– flopi disk
• Optički uređaji– CD-ROM– CD-Recordable (CD-R)– CD-R/W– DVD
• Magnetna traka2/41
• Magnetni diskovi– hard disk,– flopi disk
• Optički uređaji– CD-ROM– CD-Recordable (CD-R)– CD-R/W– DVD
• Magnetna traka
Magnetni diskovi
• Podloga u obliku diska presvučena magnetnimmaterijalom
• Podloga– je ranije bila aluminijum– je sada od stakla
• uniformnija površina– povećana čitljivost podataka
• smanjen broj oštećenja površine– smanjen broj grešaka
• manja udaljenost glave od površine• čvršće?• veća otpornost na udarce
3/41
• Podloga u obliku diska presvučena magnetnimmaterijalom
• Podloga– je ranije bila aluminijum– je sada od stakla
• uniformnija površina– povećana čitljivost podataka
• smanjen broj oštećenja površine– smanjen broj grešaka
• manja udaljenost glave od površine• čvršće?• veća otpornost na udarce
Čitanje i pisanje po magnetnimdiskovima
• Čitanje i pisanje preko navoja žice zvanog glava• Za vreme čitanja i pisanja, glava je fiksirana, a ploča se rotira ispod nje• Čitanje (nekada)
– magnetno polje koje se pomera ispod glave izaziva indukciju struje navoju glave– isti navoj i za čitanje i za pisanje
• Čitanje (sada)– odvojene glave za čitanje i pisanje, jedna uz drugu– delimično oklopljni senzor koji menja otpornost u zavisnosti od magnetnog polja
(magnetoresistive sensor – MR sensor)• električna otpornost senzora zavisi od smera magnetnog polja• ovo omogućuje rad na većim frekvencijama
– veća gustina zapisa i brzina
• Pisanje– struja kroz navoj izaziva pojavu magnetnog polja– impulsi se šalju u navoj– magnetno polje izaziva namagnetisanje materijala ispod glave
• različit smer struje izaziva različit smer namagnetisanja 4/41
• Čitanje i pisanje preko navoja žice zvanog glava• Za vreme čitanja i pisanja, glava je fiksirana, a ploča se rotira ispod nje• Čitanje (nekada)
– magnetno polje koje se pomera ispod glave izaziva indukciju struje navoju glave– isti navoj i za čitanje i za pisanje
• Čitanje (sada)– odvojene glave za čitanje i pisanje, jedna uz drugu– delimično oklopljni senzor koji menja otpornost u zavisnosti od magnetnog polja
(magnetoresistive sensor – MR sensor)• električna otpornost senzora zavisi od smera magnetnog polja• ovo omogućuje rad na većim frekvencijama
– veća gustina zapisa i brzina
• Pisanje– struja kroz navoj izaziva pojavu magnetnog polja– impulsi se šalju u navoj– magnetno polje izaziva namagnetisanje materijala ispod glave
• različit smer struje izaziva različit smer namagnetisanja
Inductive Write MR Read
5/41
Organizacija podataka iformatiranje
• Disk se sastoji iz koncentričnih krugova ilistaza– postoji razmak između staza
• smanjenje razmaka povećava kapacitet
• Staze se dele na sektore– najmanji blok podataka je sektor
• Isti broj bitova po stazi (varijabilna gustinapakovanja)– konstantna ugaona brzina
6/41
• Disk se sastoji iz koncentričnih krugova ilistaza– postoji razmak između staza
• smanjenje razmaka povećava kapacitet
• Staze se dele na sektore– najmanji blok podataka je sektor
• Isti broj bitova po stazi (varijabilna gustinapakovanja)– konstantna ugaona brzina
Staze i sektori
7/41
Brzina obrtanja diska• Zbog konstantne ugaone brzine, bitovi bliže centru
putuju sporije od bitova na spoljnom delu diska• Postoji razlika u razmaku između bitova na različitim
stazama (da bi ukupan protok bio isti na svimstazama)
• Konstantna ugaona brzina (constant angular velocity- CAV):– sektori po stazama imaju oblik pite (pie shaped)– glava se pomera do zadate staze i čeka da sektor prođe
ispod– gubi se prostor na spoljnim stazama
• smanjena gustina podataka8/41
• Zbog konstantne ugaone brzine, bitovi bliže centruputuju sporije od bitova na spoljnom delu diska
• Postoji razlika u razmaku između bitova na različitimstazama (da bi ukupan protok bio isti na svimstazama)
• Konstantna ugaona brzina (constant angular velocity- CAV):– sektori po stazama imaju oblik pite (pie shaped)– glava se pomera do zadate staze i čeka da sektor prođe
ispod– gubi se prostor na spoljnim stazama
• smanjena gustina podataka
Raspored sektora
9/41
Pronalaženje sektora
• Glava mora da pronađe stazu i početaksektora
• Formatiranje diska– zapisivanje dodatne informacije koja nije
dostupna korisniku– označava staze i sektore
10/41
• Glava mora da pronađe stazu i početaksektora
• Formatiranje diska– zapisivanje dodatne informacije koja nije
dostupna korisniku– označava staze i sektore
Fizičke karakteristike magnetnihdiskova
1. Fiksna ili pomerajuća glava2. Promenljivi (removable) ili fiksni3. Jednostran ili dvostran (single/double
sided) medijum4. Jedna ili više ploča5. Mehanizam glave:
– kontaktni (floppy)– fiksan razmak– plutajući (leteći) – Winchester
11/41
1. Fiksna ili pomerajuća glava2. Promenljivi (removable) ili fiksni3. Jednostran ili dvostran (single/double
sided) medijum4. Jedna ili više ploča5. Mehanizam glave:
– kontaktni (floppy)– fiksan razmak– plutajući (leteći) – Winchester
1. Fiksna ili pomerajuća glava
• Fiksna glava– jedna glava po stazi– glava montirane na fiksnom postolju, svaka
iznad svoje staze• Pomerajuća glava
– jedna glava po strani– glava montirana na postolju koje se može
pomerati iznad staza
12/41
• Fiksna glava– jedna glava po stazi– glava montirane na fiksnom postolju, svaka
iznad svoje staze• Pomerajuća glava
– jedna glava po strani– glava montirana na postolju koje se može
pomerati iznad staza
2. Promenljivi ili fiksni diskovi
• Promenljivi (removable) disk– može da se ukloni iz uređaja i da se zameni
drugim diskom– “neograničen kapacitet”– jednostavan prenos podataka (frisby net)
• Fiksni disk– trajno montiran u uređaju
13/41
• Promenljivi (removable) disk– može da se ukloni iz uređaja i da se zameni
drugim diskom– “neograničen kapacitet”– jednostavan prenos podataka (frisby net)
• Fiksni disk– trajno montiran u uređaju
3. Jedna ili dve strane
• Magnetni sloj može biti na obe ili samo najednoj strani podloge
14/41
4. Jedna ili više ploča
• Više ploča:– jedna glava po strani– glave su poravnate i spojene na istu podlogu– staze istog prečnika formiraju cilindre
• Podaci su razmešteni po cilindru– cilindar je skup staza sa istim prečnikom– smanjuje pomeranje glave– povećava brzinu prenosa (transfer rate)
15/41
• Više ploča:– jedna glava po strani– glave su poravnate i spojene na istu podlogu– staze istog prečnika formiraju cilindre
• Podaci su razmešteni po cilindru– cilindar je skup staza sa istim prečnikom– smanjuje pomeranje glave– povećava brzinu prenosa (transfer rate)
Više ploča
16/41
Staze istog prečnika formiraju cilindar
17/41
5. Mehanizam glave
• Procep na glavi bi trebalo da je što manji– manji procep, veća gustina podataka– manji procep, manja razdaljina od glave do površine
• veća verovatnoća greške zbog nečistoća i nesavršenostipodloge
• Tri vrste mehanizma glave:– kontaktni (floppy)– fiksan razmak– plutajući (leteći) – Winchester
• moderni hard diskovi
18/41
• Procep na glavi bi trebalo da je što manji– manji procep, veća gustina podataka– manji procep, manja razdaljina od glave do površine
• veća verovatnoća greške zbog nečistoća i nesavršenostipodloge
• Tri vrste mehanizma glave:– kontaktni (floppy)– fiksan razmak– plutajući (leteći) – Winchester
• moderni hard diskovi
Floppy Disk
• 8”, 5.25”, 3.5”• Mali kapacitet
– do 1.44Mbyte (2.88M nikada nije zaživeo)• Sporo• Jevtino• Zastarelo!
19/41
• 8”, 5.25”, 3.5”• Mali kapacitet
– do 1.44Mbyte (2.88M nikada nije zaživeo)• Sporo• Jevtino• Zastarelo!
Winchester Hard Disk
• Razvijen u IBM-u, u Winchester (USA)• Hermetički zatvoren disk• Jedna ili više ploča• Lagane glave lebde na sloju vazduha koji
se pomera usled okretanja diska• Veoma mali razmak između glave i ploče
20/41
• Razvijen u IBM-u, u Winchester (USA)• Hermetički zatvoren disk• Jedna ili više ploča• Lagane glave lebde na sloju vazduha koji
se pomera usled okretanja diska• Veoma mali razmak između glave i ploče
Vreme za jednu operaciju
21/41
RAID
• Redundant Array of Independent Disks• Redundant Array of Inexpensive Disks• 6 nivoa u upotrebi• Skup fizičkih diskova koji se vide kao jedan od
strane operativnog sistema• Podaci su distribuirani po fizičkim diskovima• Podaci su izdeljeni na trake (strip)
– skup blokova ili staza• Moguća upotreba redundantnih podataka da bi
se podaci sačuvali u slučaju otkaza diska 22/41
• Redundant Array of Independent Disks• Redundant Array of Inexpensive Disks• 6 nivoa u upotrebi• Skup fizičkih diskova koji se vide kao jedan od
strane operativnog sistema• Podaci su distribuirani po fizičkim diskovima• Podaci su izdeljeni na trake (strip)
– skup blokova ili staza• Moguća upotreba redundantnih podataka da bi
se podaci sačuvali u slučaju otkaza diska
RAID 0• Nema redundantosti• Podaci su distribuirani po diskovima na
principu Round Robin• Povećana brzina
– uzastopni zahtevi verovatno neće završiti naistom disku
• velika verovatnoća da će podaci biti na višediskova
– umesto da se pomeri na sledeću traku u jednom disku,čita se sledeća traka drugog diska
23/41
• Nema redundantosti• Podaci su distribuirani po diskovima na
principu Round Robin• Povećana brzina
– uzastopni zahtevi verovatno neće završiti naistom disku
• velika verovatnoća da će podaci biti na višediskova
– umesto da se pomeri na sledeću traku u jednom disku,čita se sledeća traka drugog diska
Data Mapping For RAID 0
24/41
RAID 0
25/41
RAID 1
• Podaci duplirani (Mirrored Disks)• Podaci su rapodeljeni po diskovima• Dve kopije svake trake na odvojenim diskovima• Čita se sa bilo kog diska• Piše se po svim diskovima• Spasavanje podataka je jednostavno:
– zameni se neispravan disk i prekopiraju se podaci– nema gubitka vremena (podaci se uvek mogu pročitati
sa ispravnog diska)• Skupo
26/41
• Podaci duplirani (Mirrored Disks)• Podaci su rapodeljeni po diskovima• Dve kopije svake trake na odvojenim diskovima• Čita se sa bilo kog diska• Piše se po svim diskovima• Spasavanje podataka je jednostavno:
– zameni se neispravan disk i prekopiraju se podaci– nema gubitka vremena (podaci se uvek mogu pročitati
sa ispravnog diska)• Skupo
RAID 1
27/41
SSD• Solid State Disk• Memorijska integrisana kola umesto magnetnog medijuma• Realizovan električno izbrisivom memorijom (flash
memorija)– čuva sadržaj i posle nestanka napajanja
• Problem: ograničen broj upisa u memorijske ćelije– 10.000 ili 100.000 upisa
• Podaci se snimaju u stranice (4KB), organizovane ublokove (512KB)– najmanja količina podataka je jedna stranica– može se pisati u stranicu, samo ako je prethodno obrisana– brišu se čitavi blokovi, a ne stranice
• Solid State Disk• Memorijska integrisana kola umesto magnetnog medijuma• Realizovan električno izbrisivom memorijom (flash
memorija)– čuva sadržaj i posle nestanka napajanja
• Problem: ograničen broj upisa u memorijske ćelije– 10.000 ili 100.000 upisa
• Podaci se snimaju u stranice (4KB), organizovane ublokove (512KB)– najmanja količina podataka je jedna stranica– može se pisati u stranicu, samo ako je prethodno obrisana– brišu se čitavi blokovi, a ne stranice
28/41
Optički uređaji
• CD-ROM• CD-Recordable (CD-R)• CD-R/W• DVD
29/41
• CD-ROM• CD-Recordable (CD-R)• CD-R/W• DVD
Optički medijum CD-ROM
• Originalno zamišljen za audio zapise• 650MB ili 70 minuta muzike
– u međuvremenu se kao standard pojavio CDkapaciteta 700MB
• Polikarbonat presvučen refleksnom materijom,obično aluminijumom
• Podaci su smešteni kao rupe• Podaci se čitaju laserom• Konstantna gustina podataka
– konstantna linearna brzina (promenljiva ugaonabrzina) 30/41
• Originalno zamišljen za audio zapise• 650MB ili 70 minuta muzike
– u međuvremenu se kao standard pojavio CDkapaciteta 700MB
• Polikarbonat presvučen refleksnom materijom,obično aluminijumom
• Podaci su smešteni kao rupe• Podaci se čitaju laserom• Konstantna gustina podataka
– konstantna linearna brzina (promenljiva ugaonabrzina)
Način rada CD-a
31/41
CD-ROM Brzine
• Audio je jednobrzinski (150 KB/s)– Konstantna linearna brzina (Constant linier
velocity)– 1.2 m/s– spiralna staza dugačka 5.27km
• Ostale brzine se daju kao umnošciosnovne brzine– primer: 24x
• Navedena brzina je maksimalna brzinakoju uređaj može da postigne 32/41
• Audio je jednobrzinski (150 KB/s)– Konstantna linearna brzina (Constant linier
velocity)– 1.2 m/s– spiralna staza dugačka 5.27km
• Ostale brzine se daju kao umnošciosnovne brzine– primer: 24x
• Navedena brzina je maksimalna brzinakoju uređaj može da postigne
CD-ROM Format
33/41
• SYNC – identifikacija početka bloka• ID – zaglavlje sa pozicijom bloka i modom (0 – prazan
blok, 1 – podaci sa korekcijom greške, 2 – podaci bezkorekcije greške)
• Data – podaci• ECC – dodatni podaci za korekciju greške (u modu 1),
još podataka u modu 2 (do ukupno 2336 bajtova)
Random Access na CD-ROM-u
• Teško se postiže:– glava se pomeri na približnu poziciju– brzina se prilagodi zadatoj poziciji– pročita se adresa– podesi se na željenu lokaciju
34/41
• Teško se postiže:– glava se pomeri na približnu poziciju– brzina se prilagodi zadatoj poziciji– pročita se adresa– podesi se na željenu lokaciju
Dobre i loše osobine CD-ROM-a
• Dobre:– velik kapacitet– jednostavna tehnologija za masovnu
proizvodnju– promenljiv medijum (removable)– robusno
• Loše:– skupo za male serije– sporo– može samo da se čita (read only) 35/41
• Dobre:– velik kapacitet– jednostavna tehnologija za masovnu
proizvodnju– promenljiv medijum (removable)– robusno
• Loše:– skupo za male serije– sporo– može samo da se čita (read only)
Ostali optički medijumi• CD-Recordable (CD-R)
– WORM (Write Once Read Many)• fabrički se naprave "plikovi" jakim laserom• u uređaju se zapisivanje svodi na "pucanje plikova" slabim
laserom
– Kompatibilno sa CD-ROM tehnologijom• CD-RW
– Izbrisivi medijum• Promena faze (phase change)• materijal ima različitu refleksivnost u dva stanja• stanje se menja laserom• ograničen broj upisa laserom
– Kompatibilno sa CD-ROM tehnologijom 36/41
• CD-Recordable (CD-R)– WORM (Write Once Read Many)
• fabrički se naprave "plikovi" jakim laserom• u uređaju se zapisivanje svodi na "pucanje plikova" slabim
laserom
– Kompatibilno sa CD-ROM tehnologijom• CD-RW
– Izbrisivi medijum• Promena faze (phase change)• materijal ima različitu refleksivnost u dva stanja• stanje se menja laserom• ograničen broj upisa laserom
– Kompatibilno sa CD-ROM tehnologijom
DVD
• Digital Video Disk– zamena za VHS kasete– u početku samo za puštanje filmova– sada mogu i da se snimaju filmovi
• Digital Versatile Disk– zamena za CD-ROM/CD-R/CD-RW– ista tehnologija, samo u računaru, pa se zato
kloristi i ovo objašnjenje skraćenice– velik kapacitet
37/41
• Digital Video Disk– zamena za VHS kasete– u početku samo za puštanje filmova– sada mogu i da se snimaju filmovi
• Digital Versatile Disk– zamena za CD-ROM/CD-R/CD-RW– ista tehnologija, samo u računaru, pa se zato
kloristi i ovo objašnjenje skraćenice– velik kapacitet
DVD - tehnologija
• Višeslojni medijum (multi-layer)• Veoma velik kapacitet (4.7GB po sloju)
– maksimalan kapacitet oko 17GB (dva sloja, dvestrane)
• Ceo film može da stane na jednom disku– uz upotrebu MPEG kompresije
• Filmovi koriste regionalno kodiranje– pokušaj sprečavanja piraterije – uređaji reprodukuju samo one filmove koji imaji
korektan region– može da se "sredi" 38/41
• Višeslojni medijum (multi-layer)• Veoma velik kapacitet (4.7GB po sloju)
– maksimalan kapacitet oko 17GB (dva sloja, dvestrane)
• Ceo film može da stane na jednom disku– uz upotrebu MPEG kompresije
• Filmovi koriste regionalno kodiranje– pokušaj sprečavanja piraterije – uređaji reprodukuju samo one filmove koji imaji
korektan region– može da se "sredi"
Izmenjivi DVD
• Izmenjivi samo jednom:– DVD -R– DVD +R
• DVD-RW– izbrisivi DVD
• DVD – RAM– izbrisivi DVD– nema spiralnu stazu, već sektore i staze
poput hard diska
39/41
• Izmenjivi samo jednom:– DVD -R– DVD +R
• DVD-RW– izbrisivi DVD
• DVD – RAM– izbrisivi DVD– nema spiralnu stazu, već sektore i staze
poput hard diska
CD and DVD
40/41
Magnetna traka
• Serijski pristup podacima• Sporo• Veoma jevtino• Koristi se za arhiviranje (backup)
41/41
• Serijski pristup podacima• Sporo• Veoma jevtino• Koristi se za arhiviranje (backup)
Računarski praktikum
1. Prenos podataka i računarskemreže
2. Internet
1. Prenos podataka i računarske mreže• Vrste veza
– Point-to-point – direktna veza.– Deljene veze – više prijemnika i predajnika dele medijum za
prenos.
Prijemnik Medijum Predajnik
2/36
Prijemnik Medijum Predajnik
Prijemnik Prijemnik Predajnik Predajnik
Medijum
Medijum
• Medijum - fizička veza• žični• bežični
• Karakteristike medijuma• slabljenje• kašnjenje• šum
3/36
• Medijum - fizička veza• žični• bežični
• Karakteristike medijuma• slabljenje• kašnjenje• šum
Žični – Parice
• Koriste se za prenos signala u• LAN – Lokalnim računarskim mrežama
• Udaljenosti prijemnika i predajnika do 100m• Prenos podataka na brzinama 10, 100, 1000 Mbps
• Javnim telekomunikacionim mrežama• Udaljenost prijemnika i predajnika je < 10km
Medijum
4/36
Žični – Parice
• Koriste se za prenos signala u• LAN – Lokalnim računarskim mrežama
• Udaljenosti prijemnika i predajnika do 100m• Prenos podataka na brzinama 10, 100, 1000 Mbps
• Javnim telekomunikacionim mrežama• Udaljenost prijemnika i predajnika je < 10km
Žični – Koaksijalni kabel• Širok propusni opseg• Otporan na elektromagnetne smetnje
Medijum
5/36
Žični – Optički kablovi
Medijum
6/36
Bežične veze• Neusmerene
• radio i televizija• wireless mrežni uređaji (802.11g)
• Usmerene – point-to-point• relejne veze
Medijum
7/36
Bežične veze• Neusmerene
• radio i televizija• wireless mrežni uređaji (802.11g)
• Usmerene – point-to-point• relejne veze
Računarske mreže
• LAN – Local Area Network• Definicija: mreža za prenos podataka, optimizovana
za geografski mala područja, kao što su zgrada ilikampus.
• MAN – Metropolitan Area Network• Definicija: mreže koje spajaju geografski veća
područja se ponekad nazivaju.
8/36
• LAN – Local Area Network• Definicija: mreža za prenos podataka, optimizovana
za geografski mala područja, kao što su zgrada ilikampus.
• MAN – Metropolitan Area Network• Definicija: mreže koje spajaju geografski veća
područja se ponekad nazivaju.
Topologije: prsten
• Stanice su međusobno povezane direktnim (point-to-point) vezama.
• Podaci se prenose paketski; paketi putuju kroz prsten ujednom smeru.
• Stanica koja želi da pošalje paket ubacuje ga u prsten.• Ista stanica čeka da se paket vrati i izbacuje ga iz
cirkulacije.
9/36
• Stanice su međusobno povezane direktnim (point-to-point) vezama.
• Podaci se prenose paketski; paketi putuju kroz prsten ujednom smeru.
• Stanica koja želi da pošalje paket ubacuje ga u prsten.• Ista stanica čeka da se paket vrati i izbacuje ga iz
cirkulacije.
Topologije: magistrala• Sve stanice su priključene na zajednički prenosni
medijum.• Svaka stanica može da primi svaki poslati paket.• Zajednički problem: upravljanje pristupom medijumu.
10/36
Topologije: zvezda
• Stanice su direktnim vezama povezane sa centralnimčvorištem.
• Klasičan primer: digitalna telefonska centrala.• Mreža fizički izvedena u obliku zvezde može se logički
ponašati kao magistrala (ili prsten).
11/36
Realizacija Topologijeprstena:Token Ring
• Dok je mreža slobodna za slanje, po njoj cirkuliše naročitkratak paket (token) koji to signalizira stanicama.
• Stanica koja želi da pošalje paket mora da sačekaslobodan token, modifikuje ga u zauzeti i odmah izanjega šalje podatke.
• Prsten se oslobađa kad stanica:• završi sa slanjem paketa i• ponovo primi zauzeti token.
12/36
• Dok je mreža slobodna za slanje, po njoj cirkuliše naročitkratak paket (token) koji to signalizira stanicama.
• Stanica koja želi da pošalje paket mora da sačekaslobodan token, modifikuje ga u zauzeti i odmah izanjega šalje podatke.
• Prsten se oslobađa kad stanica:• završi sa slanjem paketa i• ponovo primi zauzeti token.
Realizacija topologije magistralei zvezde:Ethernet
• Sistem sa zajedničkim medijumom.• Fizička izvedba:
• 10BASE5• 10BASE2• 10BASE-T• 100BASE-T• IEEE 802.3z Gigabit Ethernet
13/36
• Sistem sa zajedničkim medijumom.• Fizička izvedba:
• 10BASE5• 10BASE2• 10BASE-T• 100BASE-T• IEEE 802.3z Gigabit Ethernet
Ethernet: koaksijalni kabel [1]
• 10BASE5 (debeli ethernet):• 10 Mbits/s• pojedinačni segment: 500m• ukupna dužina: 2.5km• 100 stanica
14/36
Ethernet: koaksijalni kabel [2]
• 10BASE2 (tanki ethernet):• 10 Mbits/s• pojedinačni segment: 185m• ukupna dužina: 1km• 30 stanica
15/36
Ethernet: parice [1]
• 10BASE-T (UTP):– 10 MBits/s– dužina segmenta između stanice i hub-a: 100m
(neoklopljene parice)• 100BASE-T
• 100 Mbit/s• IEEE 802.3z Gigabit Ethernet
• 1 Gbits/s• Fizički se izvodi kao zvezda, sa hub-ovima ili switch-
evima kao čvorištima; logički funkcioniše kao magistrala.• Razlika između switch-a i hub-a.
16/36
• 10BASE-T (UTP):– 10 MBits/s– dužina segmenta između stanice i hub-a: 100m
(neoklopljene parice)• 100BASE-T
• 100 Mbit/s• IEEE 802.3z Gigabit Ethernet
• 1 Gbits/s• Fizički se izvodi kao zvezda, sa hub-ovima ili switch-
evima kao čvorištima; logički funkcioniše kao magistrala.• Razlika između switch-a i hub-a.
Ethernet: parice [2]
17/36
1. Internet
Počeci Interneta
• 1957. god. Sovjetski savez lansira Sputnjik(prvi veštački satelit).
• 1958. god., kao odgovor na lansiranjeSputnjik-a, SAD osnivaju AdvancedResearch Projects Agency (ARPA).
• 1962. god., usvojena ideja da se počnesaradnja sa univerzitetima – osnovaARPANET-a (preteča Interneta).
istorija
19/36
• 1957. god. Sovjetski savez lansira Sputnjik(prvi veštački satelit).
• 1958. god., kao odgovor na lansiranjeSputnjik-a, SAD osnivaju AdvancedResearch Projects Agency (ARPA).
• 1962. god., usvojena ideja da se počnesaradnja sa univerzitetima – osnovaARPANET-a (preteča Interneta).
ARPANET
• 1969. god. mreža računara na ARPANET-u se sastoji od 4 računara:
•UCLA (University ofCalifornia LosAngeles)
•SRI (StanfordResearch Institute)
•UCSB (University ofCalifornia SantaBarbara)
•University of UtahSalt Lake City
istorija
20/36
•UCLA (University ofCalifornia LosAngeles)
•SRI (StanfordResearch Institute)
•UCSB (University ofCalifornia SantaBarbara)
•University of UtahSalt Lake City
ARPANET
• 1971. god. ARPANET proširen (15čvorova):
istorija
21/36
• 1971. god. ARPANET proširen (15čvorova):
ARPANET
• 1971. god. definisan email – Elektronskapošta.
• 1973. god.– definisan File Transfer – razmena datoteka,– prvi čvor u ARPANET-u izvan SAD –
University College of London (Engleska),– email čini 75% saobraćaja na ARPANET-u.
• 1975. god. definisane mailing liste –diskusione grupe.
istorija
22/36
• 1971. god. definisan email – Elektronskapošta.
• 1973. god.– definisan File Transfer – razmena datoteka,– prvi čvor u ARPANET-u izvan SAD –
University College of London (Engleska),– email čini 75% saobraćaja na ARPANET-u.
• 1975. god. definisane mailing liste –diskusione grupe.
ARPANET• 1979. god.
– dat predlog da se uvedu tekstualni znaci koji označavajuemocije – smajliji: :-) ;-) :-(
– kreiran BITNET, kao još jedna mreža računara• 1980. god. ARPANET u kompletnom zastoju zbog
virusa.• 1981. god. ukupan broj servera u mreži: 213.• kreiran CSNET, kao mreža institucija izvan
ARPANET-a.• 1982. god. osnovan Europe Unix Network – EUnet
– u početku spajao Holandiju, Dansku, Švedsku i VelikuBritaniju.
istorija
23/36
• 1979. god.– dat predlog da se uvedu tekstualni znaci koji označavaju
emocije – smajliji: :-) ;-) :-(– kreiran BITNET, kao još jedna mreža računara
• 1980. god. ARPANET u kompletnom zastoju zbogvirusa.
• 1981. god. ukupan broj servera u mreži: 213.• kreiran CSNET, kao mreža institucija izvan
ARPANET-a.• 1982. god. osnovan Europe Unix Network – EUnet
– u početku spajao Holandiju, Dansku, Švedsku i VelikuBritaniju.
ARPANET i druge mreže
• 1983. god.– ustanovljen Domain Name System – sistem
simboličkih adresa umesto numeričkih.– ukupan broj servera na mreži: 562.
• 1984. god.– iz CSNET-a kreiran NSFNET.– ukupan broj servera na mreži: 1024.
• 1985. god. ukupan broj servera na mreži:1.961.
istorija
24/36
• 1983. god.– ustanovljen Domain Name System – sistem
simboličkih adresa umesto numeričkih.– ukupan broj servera na mreži: 562.
• 1984. god.– iz CSNET-a kreiran NSFNET.– ukupan broj servera na mreži: 1024.
• 1985. god. ukupan broj servera na mreži:1.961.
Internet• 1986. god. kreiran IETF (Internet Engineering Task
Force) – telo za tehničku koordinaciju mreža.• 1989. god.
– broj servera na mreži prelazi 100.000.– objavljena priča o hakeru iz Nemačke koji je provaljivao u
vojne računare u SAD i prodavao informacije SovjetskomSavezu.
• 1990. god.– ARPANET prestaje da postoji.– osmišljen hipertekst sistem koji će postati osnova WWW
(World Wide Web).– prvi komercijalni provajder – World (world.std.com).– ukupan broj servera na mreži 313.000.
istorija
25/36
• 1986. god. kreiran IETF (Internet Engineering TaskForce) – telo za tehničku koordinaciju mreža.
• 1989. god.– broj servera na mreži prelazi 100.000.– objavljena priča o hakeru iz Nemačke koji je provaljivao u
vojne računare u SAD i prodavao informacije SovjetskomSavezu.
• 1990. god.– ARPANET prestaje da postoji.– osmišljen hipertekst sistem koji će postati osnova WWW
(World Wide Web).– prvi komercijalni provajder – World (world.std.com).– ukupan broj servera na mreži 313.000.
Internet
• 1991. god. startovan prvi WWW server(nxoc01.cern.ch – kasnije preimenovan uinfo.cern.ch).
• 1992. god.– broj servera na mreži prelazi 1.000.000,– pojavio se izraz “surfovati po mreži”.
• 1993. god.– Bela Kuća postavila svoju prezentaciju na internet:
www.whitehouse.gov– broj servera na mreži: 2,056,000.
istorija
26/36
• 1991. god. startovan prvi WWW server(nxoc01.cern.ch – kasnije preimenovan uinfo.cern.ch).
• 1992. god.– broj servera na mreži prelazi 1.000.000,– pojavio se izraz “surfovati po mreži”.
• 1993. god.– Bela Kuća postavila svoju prezentaciju na internet:
www.whitehouse.gov– broj servera na mreži: 2,056,000.
Internet• 1994. god.
– kupovina preko Interneta (naručivanje pice kod Pizza Hut),– broj servera: 3.864.000.
• 1995. god.– WWW postaje servis broj jedan na Internetu,– broj servera: 6.642.000.
• 1996. god.– pojavljuju se kompanije koje omogućavaju telefoniranje preko
Interneta,– provaljeni (uhakovani) sajtovi: US Dept of Justice, CIA, US Air
Force,– pretraživači interneta (Altavista, Yahoo, i dr.),– SR Jugoslavija dobila pristup na Internet (podignute sankcije).
istorija
27/36
• 1994. god.– kupovina preko Interneta (naručivanje pice kod Pizza Hut),– broj servera: 3.864.000.
• 1995. god.– WWW postaje servis broj jedan na Internetu,– broj servera: 6.642.000.
• 1996. god.– pojavljuju se kompanije koje omogućavaju telefoniranje preko
Interneta,– provaljeni (uhakovani) sajtovi: US Dept of Justice, CIA, US Air
Force,– pretraživači interneta (Altavista, Yahoo, i dr.),– SR Jugoslavija dobila pristup na Internet (podignute sankcije).
Internet
• 1997 – danas:– uvođenje e-commerce,– prvi veliki sajber-rat za vreme bombardovanja SRJ
(napadi hakera na NATO i ostale institucije),– panika zbog milenijumske greške (godina 2000.),– mobilni telefoni pristupaju Internetu (WAP, GPRS),– uvođenje Interneta v6 – više čvorova,– 2003. god. broj servera na Internetu: 171.000.000.
istorija
28/36
• 1997 – danas:– uvođenje e-commerce,– prvi veliki sajber-rat za vreme bombardovanja SRJ
(napadi hakera na NATO i ostale institucije),– panika zbog milenijumske greške (godina 2000.),– mobilni telefoni pristupaju Internetu (WAP, GPRS),– uvođenje Interneta v6 – više čvorova,– 2003. god. broj servera na Internetu: 171.000.000.
Adresiranje na Internetu• Aktuelna verzija Interneta je v4• Računari se identifikuju preko IP adrese:
a.b.c.da, b, c, d su brojevi u rasponu od 0 do 255
• Primer:147.91.173.1
• Podela IP adresa:– javne (jedinstvene na Internetu, vidljive sa svake adrese na
Internetu),– privatne (unutar privatnih mreža; primer: 192.168.0.1),– specijalne namene (broadcast).
• Internet verzija 6 (v6) omogućuje postojanje većeg brojaadresa– sve više računara podržava ovaj standard– Internet v4 uskoro ostaje bez javnih IP adresa
29/36
• Aktuelna verzija Interneta je v4• Računari se identifikuju preko IP adrese:
a.b.c.da, b, c, d su brojevi u rasponu od 0 do 255
• Primer:147.91.173.1
• Podela IP adresa:– javne (jedinstvene na Internetu, vidljive sa svake adrese na
Internetu),– privatne (unutar privatnih mreža; primer: 192.168.0.1),– specijalne namene (broadcast).
• Internet verzija 6 (v6) omogućuje postojanje većeg brojaadresa– sve više računara podržava ovaj standard– Internet v4 uskoro ostaje bez javnih IP adresa
Adresiranje na Internetu• Alternativan način identifikacije – simbolička
adresa:ime_računara.domendomen = institucija.tip_institucije.lokacija
• Primeri:www.uns.ac.rswww.ftn.uns.ac.rswww.whitehouse.gov
• Domeni:– nacionalni,– internacionalni/američki
30/36
• Alternativan način identifikacije – simboličkaadresa:ime_računara.domendomen = institucija.tip_institucije.lokacija
• Primeri:www.uns.ac.rswww.ftn.uns.ac.rswww.whitehouse.gov
• Domeni:– nacionalni,– internacionalni/američki
Nacionalni domen• Lokacija – dvoslovna skraćenica na kraju
adrese, prema ISO-3166 standardu (rs – Srbija, uk –Velika Britanija, itd.).
• Tip institucije:– ac (akademske ustanove),– co (komercijalne ustanove),– org (nekomercijalne organizacije),– itd.
• Primer nacionalnog domena iskorišćenog uinternacionalne svrhe:www.mtv.tv (tv je skraćenica za državu Tuvalu!)
31/36
• Lokacija – dvoslovna skraćenica na krajuadrese, prema ISO-3166 standardu (rs – Srbija, uk –Velika Britanija, itd.).
• Tip institucije:– ac (akademske ustanove),– co (komercijalne ustanove),– org (nekomercijalne organizacije),– itd.
• Primer nacionalnog domena iskorišćenog uinternacionalne svrhe:www.mtv.tv (tv je skraćenica za državu Tuvalu!)
Internacionalni/američki domen• Tip institucije:
– edu (akademske ustanove),– com (komercijalna ustanova),– org (nekomercijalne organizacije),– mil (vojne organizacije),– gov (vladine organizacije),– itd.
• Primer:www.ibm.comwww.revlon.comwww.sony.com
• SAD uglavnom koriste domene: edu, gov, mil(www.whitehouse.gov).
32/36
• Tip institucije:– edu (akademske ustanove),– com (komercijalna ustanova),– org (nekomercijalne organizacije),– mil (vojne organizacije),– gov (vladine organizacije),– itd.
• Primer:www.ibm.comwww.revlon.comwww.sony.com
• SAD uglavnom koriste domene: edu, gov, mil(www.whitehouse.gov).
Servisi na Internetu
• Servisi su usluge.• Vrste:
– WWW (World Wide Web) – multimedijalnidokumenti na Internetu,
– Chat, voice chat, video telefonija,– Elektronska pošta (email, e-mail, Email, ...),– Prenos datoteka (FTP – File Transfer,
Protocol),– Telnet – rad na udaljenom računaru.
33/36
• Servisi su usluge.• Vrste:
– WWW (World Wide Web) – multimedijalnidokumenti na Internetu,
– Chat, voice chat, video telefonija,– Elektronska pošta (email, e-mail, Email, ...),– Prenos datoteka (FTP – File Transfer,
Protocol),– Telnet – rad na udaljenom računaru.
WWW• Sistem se sastoji iz klijenata i servera.• Multimedijalni dokumenti se kreiraju upotrebom HTML
jezika (HyperText Markup Language).• WWW Klijenti:
– spajaju se na WWW servere i zahtevaju resurse (html datoteke,slike, muziku, itd.)
– trenutno aktuelni: Internet Explorer, Mozilla, Opera, itd.• WWW Serveri:
– čekaju klijente i opslužuju njihove zahteve– trenutno aktuelni: Apache, Internet Information Services (IIS), itd.
• Protokol za komunikaciju između klijenata i servera jeHTTP protokol (HyperText Transfer Protocol).
34/36
• Sistem se sastoji iz klijenata i servera.• Multimedijalni dokumenti se kreiraju upotrebom HTML
jezika (HyperText Markup Language).• WWW Klijenti:
– spajaju se na WWW servere i zahtevaju resurse (html datoteke,slike, muziku, itd.)
– trenutno aktuelni: Internet Explorer, Mozilla, Opera, itd.• WWW Serveri:
– čekaju klijente i opslužuju njihove zahteve– trenutno aktuelni: Apache, Internet Information Services (IIS), itd.
• Protokol za komunikaciju između klijenata i servera jeHTTP protokol (HyperText Transfer Protocol).
Chat, telefonija
• Chat – mogućnost komunikacije pisanimporukama u realnom vremenu
• Voice chat – razgovor preko interneta• Video telefonija – razgovor uz upotrebu
kamere preko interneta.• Programi:
– MIRC, Yahoo messanger, MS Messanger,Skype, ICQ, ...
35/36
• Chat – mogućnost komunikacije pisanimporukama u realnom vremenu
• Voice chat – razgovor preko interneta• Video telefonija – razgovor uz upotrebu
kamere preko interneta.• Programi:
– MIRC, Yahoo messanger, MS Messanger,Skype, ICQ, ...
email• Sistem se sastoji iz klijenata i servera.• Protokoli za komunikaciju između klijenata i servera:
SMTP (Simple Mail Transport Protocol), POP3 (PostOffice Protocol), IMAP (Internet Message AccessProtocol).
• Organizovano po principu postojeće pošte (elektronskosanduče prima poruke, klijenti preuzimaju poruke izsandučeta i prikazuju, postoji adresa primaoca, pošiljalacne mora da se identifikuje).
• Email adresa: username@adresa_računara• Primer: [email protected]• Trenutno aktuelni klijenti: Mozilla Thunderbird, Microsoft
Outlook, Microsoft Outlook Express, itd.
36/36
• Sistem se sastoji iz klijenata i servera.• Protokoli za komunikaciju između klijenata i servera:
SMTP (Simple Mail Transport Protocol), POP3 (PostOffice Protocol), IMAP (Internet Message AccessProtocol).
• Organizovano po principu postojeće pošte (elektronskosanduče prima poruke, klijenti preuzimaju poruke izsandučeta i prikazuju, postoji adresa primaoca, pošiljalacne mora da se identifikuje).
• Email adresa: username@adresa_računara• Primer: [email protected]• Trenutno aktuelni klijenti: Mozilla Thunderbird, Microsoft
Outlook, Microsoft Outlook Express, itd.
Programski jezik Java
Uvod
Uvod
• Dr Milan Vidaković• Preporučena literatura:Java i Internet programiranje,Branko Milosavljević, Milan Vidaković,FTN izdavaštvo, Novi Sad, 2007.ISBN 978-86-7892-047-9
2/47
• Dr Milan Vidaković• Preporučena literatura:Java i Internet programiranje,Branko Milosavljević, Milan Vidaković,FTN izdavaštvo, Novi Sad, 2007.ISBN 978-86-7892-047-9
Programski jezik Java1.1. JavaJava:: platforma za izvršavanje programaplatforma za izvršavanje programa
2.2. JavaJava:: programski jezikprogramski jezik
3/47
1.1. JavaJava:: platforma za izvršavanje programaplatforma za izvršavanje programa
2.2. JavaJava:: programski jezikprogramski jezik
Java kao platforma
• dizajniran da što manje zavisi odspecifičnih karakteristika konkretnogračunarskog sistema
• jednom napisan i preveden program seizvršava na bilo kojoj platformi kojapodržava Javu
4/47
• dizajniran da što manje zavisi odspecifičnih karakteristika konkretnogračunarskog sistema
• jednom napisan i preveden program seizvršava na bilo kojoj platformi kojapodržava Javu
Java kao platforma
• interpretirani jezik– just in time compiler
• bajt-kod– specifikacija je dostupna – više
implementacija kompajlera• Java virtuelna mašina (JVM)
– specifikacija je dostupna – višeimplementacija JVM
5/47
• interpretirani jezik– just in time compiler
• bajt-kod– specifikacija je dostupna – više
implementacija kompajlera• Java virtuelna mašina (JVM)
– specifikacija je dostupna – višeimplementacija JVM
Java kao programski jezik• jezik opšte namene• konkurentno, objektno-orijentisano
programiranje• literatura
– Referentna dokumentacija: JavaSoft homepagehttp://java.sun.com
– Preporučena knjiga:Milosavljević, Vidaković: Java i InternetprogramiranjeBruce Eckel: Thinking in Java,http://www.bruceeckel.com
6/47
• jezik opšte namene• konkurentno, objektno-orijentisano
programiranje• literatura
– Referentna dokumentacija: JavaSoft homepagehttp://java.sun.com
– Preporučena knjiga:Milosavljević, Vidaković: Java i InternetprogramiranjeBruce Eckel: Thinking in Java,http://www.bruceeckel.com
Izvršavanje programa
• metoda main()
Hello.javaclass Hello {public static void main(String args[]) {
System.out.println(“Hello world!”);}
}
7/47
• metoda main()
Hello.javaclass Hello {public static void main(String args[]) {
System.out.println(“Hello world!”);}
}
Prevođenje i pokretanje
• prevođenje:javac Hello.java
• pokretanje:java Hello
8/47
• prevođenje:javac Hello.java
• pokretanje:java Hello
[ ovo važi sa standardni razvojni paket JDK (Java Development Kit) ]
Osnovni koncepti• sintaksa: podseća na C++• programski blok je ograđen vitičastim zagradama:
{ ... }• tipovi podataka
– primitivni tipovi• kao lokalne promenljive i parametri metoda, čuvaju se na steku• kao parametri, uvek se prenose po vrednosti!
– objekti• čuvaju se na heap-u• postoje samo reference na objekte, nikada se ne može pristupiti
samom objektu• kao lokalne promenljive i parametri metoda, reference se čuvaju na
steku• metode: povratna_vrednost naziv(parametri) { }
9/47
• sintaksa: podseća na C++• programski blok je ograđen vitičastim zagradama:
{ ... }• tipovi podataka
– primitivni tipovi• kao lokalne promenljive i parametri metoda, čuvaju se na steku• kao parametri, uvek se prenose po vrednosti!
– objekti• čuvaju se na heap-u• postoje samo reference na objekte, nikada se ne može pristupiti
samom objektu• kao lokalne promenljive i parametri metoda, reference se čuvaju na
steku• metode: povratna_vrednost naziv(parametri) { }
Osnovni koncepti
• primitivni tipovi podataka
Primitivni tip Veličina Minimum Maksimumboolean 1-bit – –char 16-bit Unicode 0 Unicode 216- 1byte 8-bit -128 +127short 16-bit -215 +215 – 1int 32-bit -231 +231 – 1long 64-bit -263 +263 – 1float 32-bit IEEE754 IEEE754double 64-bit IEEE754 IEEE754void – – –
10/47
• primitivni tipovi podataka
Primitivni tip Veličina Minimum Maksimumboolean 1-bit – –char 16-bit Unicode 0 Unicode 216- 1byte 8-bit -128 +127short 16-bit -215 +215 – 1int 32-bit -231 +231 – 1long 64-bit -263 +263 – 1float 32-bit IEEE754 IEEE754double 64-bit IEEE754 IEEE754void – – –
Konstante• Celobrojne konstante:
– 2,– 2000000L
• Razlomljene konstante: 3.14• Heksadecimalne konstante: 0xF, 0xFF• Znakovne konstante:
– ‘a’– ‘\n’– ‘\xxx’, gde je xxx oktalni ASCII kod karaktera
• String konstante: “ovo je tekst”11/47
• Celobrojne konstante:– 2,– 2000000L
• Razlomljene konstante: 3.14• Heksadecimalne konstante: 0xF, 0xFF• Znakovne konstante:
– ‘a’– ‘\n’– ‘\xxx’, gde je xxx oktalni ASCII kod karaktera
• String konstante: “ovo je tekst”
Deklaracija promenljive primitivnogtipa
• Promenljiva se može deklarisati u bilo kom bloku– ne mora na početku metode.
• int a;
• int a = 0;
• int a, b;
• int a = 0, b = 3;
12/47
• Promenljiva se može deklarisati u bilo kom bloku– ne mora na početku metode.
• int a;
• int a = 0;
• int a, b;
• int a = 0, b = 3;
Implicitna konverzija tipova
• Sa “užeg” ili “manjeg” tipa na “širi” ili “veći”tip.
• Nema gubitka informacije jer “uži” tippodatka staje u “širi” tip podatka.
• Primer:long a;int i = 5;a = i;
13/47
• Sa “užeg” ili “manjeg” tipa na “širi” ili “veći”tip.
• Nema gubitka informacije jer “uži” tippodatka staje u “širi” tip podatka.
• Primer:long a;int i = 5;a = i;
Eksplicitna konverzija tipova
• Sa “šireg” na “uži” tip podatka – posledicaje gubljenje informacije.
• Primer:long a = 5L;int b = a;
Greška prikompajliranju!
14/47
• Sa “šireg” na “uži” tip podatka – posledicaje gubljenje informacije.
• Primer:long a = 5L;int b = a;
Greška prikompajliranju!
Eksplicitna konverzija tipova
• Pravilna eksplicitna konverzija – upotrebacast operatora:
• Primer:long a = 5L;int b = (int)a;
15/47
• Pravilna eksplicitna konverzija – upotrebacast operatora:
• Primer:long a = 5L;int b = (int)a;
Enumeracije
• Nabrojivi tipovi podataka (celobrojni)• Primer:enum Size {SMALL, MEDIUM, LARGE,
EXTRA_LARGE};Size s = Size.MEDIUM;enum Days {MON, TUE, WEN, THU, FRI,
SAT, SUN};Days d = Days.MON;
16/47
• Nabrojivi tipovi podataka (celobrojni)• Primer:enum Size {SMALL, MEDIUM, LARGE,
EXTRA_LARGE};Size s = Size.MEDIUM;enum Days {MON, TUE, WEN, THU, FRI,
SAT, SUN};Days d = Days.MON;
Operatori
aritmetički operatori relacioni i logički bit-operatori operator dodele
17/47
aritmetički operatori relacioni i logički bit-operatori operator dodele
Aritmetički operatori
• Osnovne operacije:+, -, *, /, %• Umesto x = x + 1x += 1
• Automatski inkrement: ++x odn. x++
18/47
• Osnovne operacije:+, -, *, /, %• Umesto x = x + 1x += 1
• Automatski inkrement: ++x odn. x++
Aritmetički operatori
y = 5;
Operator Rezultatx=y+2 X 7x=y+2 X 7x=y-2 X 3x=y%2 X 1x=++y X6, y6x=y++ X5, y6x=--y X4, y4
Aritmetički operatorix = 10;y = 5;
Operator Isto kao Rezultatx=y x 5
20/47
x=y x 5x+=y x=x+y x 15x-=y x=x-y x 5x*=y x=x*y x 50x/=y x=x/y x 2x%=y x=x%y x 0
Relacioni i logički operatori
• Relacioni: < > <= >= == !=• Logički: && (I), || (ILI), ! (NE)
21/47
• Relacioni: < > <= >= == !=• Logički: && (I), || (ILI), ! (NE)
Relacioni operatorix = 5;Operator Rezultat== x == 8 je netačno (false)!= x != 8 je tačno (true)
22/47
!= x != 8 je tačno (true)> x > 8 je netačno (false)< x < 8 je tačno (true)>= x >= 8 je netačno (false)<= x <= 8 je tačno (true)
Logički operatori• Logički: && || !• Rezultat logičkih operatora je tačno (true) ili
netačno (false)• Operandi logičkih operatora su logički izrazi
• Logički: && || !• Rezultat logičkih operatora je tačno (true) ili
netačno (false)• Operandi logičkih operatora su logički izrazi
!
false true
true false
&& false true
false false false
true false true
|| false true
false false true
true true true
Logički operatorix = 6;y = 3;
Operator Objašnjenje Primer&& konjukcija (and, i) (x < 10 && y > 1)
tačno (true)
24/47
&& konjukcija (and, i) (x < 10 && y > 1)tačno (true)
|| disjunkcija (or, ili) (x==5 || y==5)netačno (false)
! negacija (not, ne) !(x==y)tačno (true)
Bit operatori
• Logičko I nad bitovima: &• Logičko ILI nad bitovima: |• Ekskluzivno ILI (XOR) nad bitovima: ^• Logička negacija nad bitovima -unarni
operator: ~• Kombinacija sa =:&= |= ^=
25/47
• Logičko I nad bitovima: &• Logičko ILI nad bitovima: |• Ekskluzivno ILI (XOR) nad bitovima: ^• Logička negacija nad bitovima -unarni
operator: ~• Kombinacija sa =:&= |= ^=
Bit operatori• a = 3; // a=011 binarno• b = 6; // b=110 binarno• c = a & b;
011& 110--------
010• c 2;
26/47
• a = 3; // a=011 binarno• b = 6; // b=110 binarno• c = a & b;
011& 110--------
010• c 2;
Bit operatori• Shift-ovanje (pomeranje):a>>b – pomera bitove u a za b mesta- ako je a pozitivan, ubacuje 0- ako je a negativan, ubacuje 1a<<b – pomera bitove u levo i ubacuje 0a>>>b – pomera bitove u a u desno za b mesta i
ubacuje 0 bez obzira na znak a.• Rezultat pomeranja je 32-bitan, osim ako
promenljiva koja prihvata rezultat nije long (tadaje 64-bitan)!
27/47
• Shift-ovanje (pomeranje):a>>b – pomera bitove u a za b mesta- ako je a pozitivan, ubacuje 0- ako je a negativan, ubacuje 1a<<b – pomera bitove u levo i ubacuje 0a>>>b – pomera bitove u a u desno za b mesta i
ubacuje 0 bez obzira na znak a.• Rezultat pomeranja je 32-bitan, osim ako
promenljiva koja prihvata rezultat nije long (tadaje 64-bitan)!
Pomeranje
• a = 3; // a = 011 binarno• b = a<<2; // b = 01100 binarno
• a = 7; // a = 111 binarno• b = a>>2; // b = 001 binarno
28/47
• a = 3; // a = 011 binarno• b = a<<2; // b = 01100 binarno
• a = 7; // a = 111 binarno• b = a>>2; // b = 001 binarno
Operator dodele
• Ako su operandi primitivni tipovi, kopira sesadržaj:
int i = 3, j = 6;i = j; // u i ubačeno 6• Ako su operandi reference, kopira se
sadržaj reference, a ne kompletni objektina koje ukazuju!
21.10
29/47
• Ako su operandi primitivni tipovi, kopira sesadržaj:
int i = 3, j = 6;i = j; // u i ubačeno 6• Ako su operandi reference, kopira se
sadržaj reference, a ne kompletni objektina koje ukazuju!
Kontrola toka
• if else• switch• for• while• do while• break• continue
30/47
• if else• switch• for• while• do while• break• continue
if
if (uslov)akcija
if (uslov)akcija
elsedruga_akcija
31/47
if (uslov)akcija
if (uslov)akcija
elsedruga_akcija
if else
int result = 0;if(testval > target)result = -1;
else if(testval < target)result = +1;
elseresult = 0; // match
32/47
int result = 0;if(testval > target)result = -1;
else if(testval < target)result = +1;
elseresult = 0; // match
if (bodovi >= 95)ocena = 10;
else if (bodovi >= 85)ocena = 9;
else if (bodovi >= 75)ocena = 8;
else if (bodovi >= 65)ocena = 7;
else if (bodovi >= 55)ocena = 6;
elseocena = 5;
33/47
if (bodovi >= 95)ocena = 10;
else if (bodovi >= 85)ocena = 9;
else if (bodovi >= 75)ocena = 8;
else if (bodovi >= 65)ocena = 7;
else if (bodovi >= 55)ocena = 6;
elseocena = 5;
Uslovni operatora = i < 10 ? i * 100 : i * 10;
• isto kao:if (i < 10)
a = i * 100;else
a = i * 10;
34/47
a = i < 10 ? i * 100 : i * 10;
• isto kao:if (i < 10)
a = i * 100;else
a = i * 10;
switch
• Izraz u switch() izrazu mora da proizvedecelobrojnu vrednost.
• Ako ne proizvodi celobrojnu vrednost, nemože da se koristi switch,() već if()!
• Ako se izostavi break; propašće u sledećicase:
• Kod default: izraza ne mora break; - to sepodrazumeva.
35/47
• Izraz u switch() izrazu mora da proizvedecelobrojnu vrednost.
• Ako ne proizvodi celobrojnu vrednost, nemože da se koristi switch,() već if()!
• Ako se izostavi break; propašće u sledećicase:
• Kod default: izraza ne mora break; - to sepodrazumeva.
switch
switch(c) {case 'a':case 'e':case 'i':case 'o':case 'u':
System.out.println("samoglasnik");break;
default:System.out.println("suglasnik");
}36/47
switch(c) {case 'a':case 'e':case 'i':case 'o':case 'u':
System.out.println("samoglasnik");break;
default:System.out.println("suglasnik");
}
varijanta 1, bez switchif (ocena == 5)
System.out.println(“odlican”);else if (ocena == 4)
System.out.println(“vrlo dobar”);else if (ocena == 3)
System.out.println(“dobar”);else if (ocena == 2)
System.out.println(“dovoljan”);else if (ocena == 1)
System.out.println(“nedovoljan”);else
System.out.println(“nepostojeca ocena”);37/47
if (ocena == 5)System.out.println(“odlican”);
else if (ocena == 4)System.out.println(“vrlo dobar”);
else if (ocena == 3)System.out.println(“dobar”);
else if (ocena == 2)System.out.println(“dovoljan”);
else if (ocena == 1)System.out.println(“nedovoljan”);
elseSystem.out.println(“nepostojeca ocena”);
varijanta 2switch (ocena) {
case 5: System.out.println(“odlican”);break;
case 4: System.out.println(“vrlo dobar”);break;
case 3: System.out.println(“dobar”);break;
case 2: System.out.println(“dovoljan”);break;
case 1: System.out.println(“nedovoljan”);break;
default: System.out.println(“nepostojeca ocena”);} 38/47
switch (ocena) {case 5: System.out.println(“odlican”);
break;case 4: System.out.println(“vrlo dobar”);
break;case 3: System.out.println(“dobar”);
break;case 2: System.out.println(“dovoljan”);
break;case 1: System.out.println(“nedovoljan”);
break;default: System.out.println(“nepostojeca ocena”);
}
for
• Za organizaciju petlji kod kojih se unapredzna koliko puta će se izvršiti telo ciklusa.
• Petlja sa početnom vrednošću, uslovom zakraj i blokom za korekciju.
• Opšta sintaksa:for (inicijalizacija; uslov; korekcija)
telo
39/47
• Za organizaciju petlji kod kojih se unapredzna koliko puta će se izvršiti telo ciklusa.
• Petlja sa početnom vrednošću, uslovom zakraj i blokom za korekciju.
• Opšta sintaksa:for (inicijalizacija; uslov; korekcija)
telo
forfor (int i = 0; i < 10; i++)
System.out.println(i);• može i višestruka inicijalizacija i step-statement:for(int i = 0, j = 1;i < 10 && j != 11;i++, j++)• oprez (može da se ne završi):
for (double x = 0; x != 10; x+=0.1) ...
40/47
for (int i = 0; i < 10; i++)System.out.println(i);
• može i višestruka inicijalizacija i step-statement:for(int i = 0, j = 1;i < 10 && j != 11;i++, j++)• oprez (može da se ne završi):
for (double x = 0; x != 10; x+=0.1) ...
while
• Za cikličnu strukturu kod koje se samo znauslov za prekid.
• Telo ciklusa ne mora ni jednom da seizvrši
• Opšta sintaksa:while (uslov)
telo• Važno: izlaz iz petlje na false!
41/47
• Za cikličnu strukturu kod koje se samo znauslov za prekid.
• Telo ciklusa ne mora ni jednom da seizvrši
• Opšta sintaksa:while (uslov)
telo• Važno: izlaz iz petlje na false!
whileint i = 0;while (i <= 10){System.out.println("Trenutnoje " + i);i=i+1;
}• Važno: izlaz iz petlje na false!
42/47
int i = 0;while (i <= 10){System.out.println("Trenutnoje " + i);i=i+1;
}• Važno: izlaz iz petlje na false!
do while
• Za cikličnu strukturu kod koje se samo znauslov za prekid
• Razlika u odnosu na while petlju je u tomešto se telo ciklusa izvršava makar jednom.
• Opšta sintaksa:dotelo
while (uslov);• Važno: izlaz iz petlje na false!
43/47
• Za cikličnu strukturu kod koje se samo znauslov za prekid
• Razlika u odnosu na while petlju je u tomešto se telo ciklusa izvršava makar jednom.
• Opšta sintaksa:dotelo
while (uslov);• Važno: izlaz iz petlje na false!
do while
int i = 0;do {System.out.println(i++);
} while (i < 10);• Važno: izlaz iz petlje na false!
44/47
int i = 0;do {System.out.println(i++);
} while (i < 10);• Važno: izlaz iz petlje na false!
break i continue
• break – prekida telo tekuće cikličnestrukture (ili case: dela) i izlazi iz nje.
• continue – prekida telo tekuce cikličnestrukture i otpočinje sledeću iteracijupetlje.
45/47
• break – prekida telo tekuće cikličnestrukture (ili case: dela) i izlazi iz nje.
• continue – prekida telo tekuce cikličnestrukture i otpočinje sledeću iteracijupetlje.
break i continuefor(int i = 0; i < 10; i++) {
if (i==7) {break;}if (i == 2)continue;
System.out.println("Broj je:" + i);}
46/47
for(int i = 0; i < 10; i++) {if (i==7) {break;}if (i == 2)continue;
System.out.println("Broj je:" + i);}
Izlaz iz ugnježdene petljefor (...){
for (...){...if (uslov)break;
}}
47/47
for (...){
for (...){...if (uslov)break;
}}
Računarski pratikum
Nizovi, kolekcije i asocijativne mape
Stringovi
Nizoviint a[]; // još uvek nije napravljen niz!a = new int[5]; // niz od 5 nulailiint a[] = new int[5]; // niz od 5 nulailiint a[] = { 1, 2, 3, 4, 5 };
2/26
int a[]; // još uvek nije napravljen niz!a = new int[5]; // niz od 5 nulailiint a[] = new int[5]; // niz od 5 nulailiint a[] = { 1, 2, 3, 4, 5 };
Nizovi primitivnih tipova 1/3
3/26
heapstek
a
int a[];
Nizovi primitivnih tipova 2/3
4/26
heapstek
a
0 0 0 0 0
a = new int[5];
Nizovi primitivnih tipova 3/3
5/26
heapstek
a
1 2 3 4 5
a[0]=1; a[1]=2; a[2]=3; a[3]=4; a[4]=5;
Nizovi primitivnih tipovajednim potezom
6/26
heapstek
a
1 2 3 4 5
int a[] = { 1, 2, 3, 4, 5 };
Višedimenzionalni nizovi
int a[][] = { {1, 2, 3 }, {4, 5,6 } };
int a[][] = new int[2][3];
int a[][] = new int[2][];for(int i = 0; i < a.length; i++){
a[i] = new int[3];}
7/26
int a[][] = { {1, 2, 3 }, {4, 5,6 } };
int a[][] = new int[2][3];
int a[][] = new int[2][];for(int i = 0; i < a.length; i++){
a[i] = new int[3];}
Klasa String• Niz karaktera je podržan klasom String. String nije samo
niz karaktera – on je klasa!• Objekti klase String se ne mogu menjati (immutable)!• Reprezentativne metode:
– str.length()– str.charAt(i)– str.indexOf(s)– str.substring(a,b), str.substring(a)– str.equals(s), str. equalsIgnoreCase(s) – ne koristiti ==– str.startsWith(s)
8/26
• Niz karaktera je podržan klasom String. String nije samoniz karaktera – on je klasa!
• Objekti klase String se ne mogu menjati (immutable)!• Reprezentativne metode:
– str.length()– str.charAt(i)– str.indexOf(s)– str.substring(a,b), str.substring(a)– str.equals(s), str. equalsIgnoreCase(s) – ne koristiti ==– str.startsWith(s)
Klasa Stringclass StringTest {public static void main(String args[]) {String s1 = "Ovo je";String s2 = "je string";System.out.println(s1.substring(2));
// karakter na zadatoj pozicijiSystem.out.println(s2.charAt(3));
// poređenje po jednakostiSystem.out.println(s1.equals(s2));
// pozicija zadatog podstringaSystem.out.println(s1.indexOf("je"));
// dužina stringaSystem.out.println(s2.length());
// skidanje whitespace-ova sa poč. i krajaSystem.out.println(s1.trim());
// provera da li string počinje podstringomSystem.out.println(s2.startsWith("je"));
}}
Ispis na konzoli:
o je
s
false
4
9
Ovo je
true
9/26
class StringTest {public static void main(String args[]) {String s1 = "Ovo je";String s2 = "je string";System.out.println(s1.substring(2));
// karakter na zadatoj pozicijiSystem.out.println(s2.charAt(3));
// poređenje po jednakostiSystem.out.println(s1.equals(s2));
// pozicija zadatog podstringaSystem.out.println(s1.indexOf("je"));
// dužina stringaSystem.out.println(s2.length());
// skidanje whitespace-ova sa poč. i krajaSystem.out.println(s1.trim());
// provera da li string počinje podstringomSystem.out.println(s2.startsWith("je"));
}}
Ispis na konzoli:
o je
s
false
4
9
Ovo je
true
Redefinisan + operator sastringovima
• Ako je jedan od operanada klase String, ceoizraz je string!
String a = “Vrednost i je: “ + i;• metoda toString()
10/26
• Ako je jedan od operanada klase String, ceoizraz je string!
String a = “Vrednost i je: “ + i;• metoda toString()
Metoda split() klase String• "cepa" osnovni string na niz stringova po
zadatom šablonu– originalni string se ne menja– parametar je regularni izraz
• Poziv: String[] rez = s.split(“regex”);• Primer:String s = "ja sam svetski mega car";String[] rez = s.split(" ");
11/26
• "cepa" osnovni string na niz stringova pozadatom šablonu– originalni string se ne menja– parametar je regularni izraz
• Poziv: String[] rez = s.split(“regex”);• Primer:String s = "ja sam svetski mega car";String[] rez = s.split(" ");
Metoda split() klase Stringclass SplitTest {
public static void main(String args[]) {String text = "Ovo je probni tekst";String[] tokens = text.split(" ");for (int i = 0; i < tokens.length; i++)System.out.println(tokens[i]);
}}
}
12/26
class SplitTest {public static void main(String args[]) {String text = "Ovo je probni tekst";String[] tokens = text.split(" ");for (int i = 0; i < tokens.length; i++)System.out.println(tokens[i]);
}}
}
Kolekcije
• Nizovi imaju jednu manu – kada sejednom naprave nije moguće promenitiveličinu.
• Kolekcije rešavaju taj problem.• Zajedničke metode:
– dodavanje elemenata,– uklanjanje elemenata,– iteriranje kroz kolekciju elemenata
13/26
• Nizovi imaju jednu manu – kada sejednom naprave nije moguće promenitiveličinu.
• Kolekcije rešavaju taj problem.• Zajedničke metode:
– dodavanje elemenata,– uklanjanje elemenata,– iteriranje kroz kolekciju elemenata
Kolekcije
Implementacija
Koncept
Hashtable
ResizableArray
BalancedTree
LinkedList
Hash table +Linked list
Set HashSet TreeSet LinkedHashSet
List ArrayList LinkedList
Map HashMap TreeMap LinkedHashMap
Tipizirane kolekcije - Generics
• U dosadašnjim kolekcijama mogli su da se smeste bilo koji objekti.• Mana: prilikom pristupa elementu iz kolekcije, obavezno se kastuje
u konkretan tip:
ArrayList kolekcija = new ArrayList();kolekcija.add("tekst");String s = (String)kolekcija.get(0);• Tipizirane kolekcije omogućavaju smeštaj samo jednog tipa podatka
u kolekciju.• Primer:ArrayList<String> kolekcija = new ArrayList<String>();kolekcija.add("tekst");String s = kolekcija.get(0);
Potencijalan problemprilikom pogrešnog
kastovanja
15/26
• U dosadašnjim kolekcijama mogli su da se smeste bilo koji objekti.• Mana: prilikom pristupa elementu iz kolekcije, obavezno se kastuje
u konkretan tip:
ArrayList kolekcija = new ArrayList();kolekcija.add("tekst");String s = (String)kolekcija.get(0);• Tipizirane kolekcije omogućavaju smeštaj samo jednog tipa podatka
u kolekciju.• Primer:ArrayList<String> kolekcija = new ArrayList<String>();kolekcija.add("tekst");String s = kolekcija.get(0);
Potencijalan problemprilikom pogrešnog
kastovanja
for bez indeksiranja(poznat i kao foreach)
• Omogućuje prolazak kroz niz ili kolekciju.• Opšta sintaksa:for (varijabla : niz) {
... // telo}• Primer:for (int i : niz) {System.out.println(i);
}for (Auto a : kolekcija) {System.out.println(a.radi);
}
16/26
• Omogućuje prolazak kroz niz ili kolekciju.• Opšta sintaksa:for (varijabla : niz) {
... // telo}• Primer:for (int i : niz) {System.out.println(i);
}for (Auto a : kolekcija) {System.out.println(a.radi);
}
Klasa ArrayList• Predstavlja kolekciju, odn. dinamički niz• Elementi se u ArrayList dodaju metodom
add()• Elementi se iz ArrayList uklanjaju
metodom remove()• Elementi se iz ArrayList dobijaju (ne
uklanjaju se, već se samo čitaju) metodomget()
17/26
• Predstavlja kolekciju, odn. dinamički niz• Elementi se u ArrayList dodaju metodom
add()• Elementi se iz ArrayList uklanjaju
metodom remove()• Elementi se iz ArrayList dobijaju (ne
uklanjaju se, već se samo čitaju) metodomget()
Klasa ArrayListArrayList<Integer> lista = newArrayList<Integer>();lista.add(5);lista.add(10);lista.add(1, 15);System.out.println("Velicina je: " +lista.size());lista.remove(0);int broj = lista.get(0);System.out.println(broj);System.out.println("Velicina je: " +lista.size());
ArrayList<Integer> lista = newArrayList<Integer>();lista.add(5);lista.add(10);lista.add(1, 15);System.out.println("Velicina je: " +lista.size());lista.remove(0);int broj = lista.get(0);System.out.println(broj);System.out.println("Velicina je: " +lista.size());
Klasa ArrayListimport java.util.ArrayList;class ArrayListTest {public static void main(String args[]) {ArrayList v = new ArrayList();v.add("Ovo");v.add("je");v.add("probni");v.add("tekst");for (int i = 0; i < v.size(); i++)System.out.println(v.get(i));
}}
19/26
import java.util.ArrayList;class ArrayListTest {public static void main(String args[]) {ArrayList v = new ArrayList();v.add("Ovo");v.add("je");v.add("probni");v.add("tekst");for (int i = 0; i < v.size(); i++)System.out.println(v.get(i));
}}
Tipizirana klasa ArrayListimport java.util.ArrayList;class ArrayListTest {public static void main(String args[]) {ArrayList<String> v = new ArrayList<String>();v.add("Ovo");v.add("je");v.add("probni");v.add("tekst");for (int i = 0; i < v.size(); i++)System.out.print((String)v.get(i) + " ");
}}
20/26
import java.util.ArrayList;class ArrayListTest {public static void main(String args[]) {ArrayList<String> v = new ArrayList<String>();v.add("Ovo");v.add("je");v.add("probni");v.add("tekst");for (int i = 0; i < v.size(); i++)System.out.print((String)v.get(i) + " ");
}}
Asocijativne mape
• Memorijske strukture koje omogućuju brzupretragu sadržaja po ključu
21/26
• Memorijske strukture koje omogućuju brzupretragu sadržaja po ključu
Klasa HashMap• Predstavlja asocijativnu mapu• U HashMap se stavljaju dva podatka:
– ključ po kojem će se pretraživati– vrednost koja se skladišti u HashMap i koja se
pretražuje po ključu• Metodom put() se ključ i vrednost
smeštaju u HashMap• Metodom get() se na osnovu ključa
dobavlja (samo čita) vrednost iz HashMap
22/26
• Predstavlja asocijativnu mapu• U HashMap se stavljaju dva podatka:
– ključ po kojem će se pretraživati– vrednost koja se skladišti u HashMap i koja se
pretražuje po ključu• Metodom put() se ključ i vrednost
smeštaju u HashMap• Metodom get() se na osnovu ključa
dobavlja (samo čita) vrednost iz HashMap
Klasa HashMapimport java.util.HashMap;public class HashMapTest {public static void main(String args[]) {HashMap ht = new HashMap();ht.put("E10020", "Marko Markovic");ht.put("E10045", "Petar Petrovic");ht.put("E10093", "Jovan Jovanovic");String indeks = "E10045";System.out.println("Student sa brojem indeksa " +
indeks + " je " + ht.get(indeks));indeks = "E10093";System.out.println("Student sa brojem indeksa " +
indeks + " je " + ht.get(indeks));}
23/26
import java.util.HashMap;public class HashMapTest {public static void main(String args[]) {HashMap ht = new HashMap();ht.put("E10020", "Marko Markovic");ht.put("E10045", "Petar Petrovic");ht.put("E10093", "Jovan Jovanovic");String indeks = "E10045";System.out.println("Student sa brojem indeksa " +
indeks + " je " + ht.get(indeks));indeks = "E10093";System.out.println("Student sa brojem indeksa " +
indeks + " je " + ht.get(indeks));}
Tipizirana klasa HashMapimport java.util.HashMap;public class HashMapTest {public static void main(String args[]) {HashMap<String, String> ht =new HashMap<String, String>();
ht.put("E10020", "Marko Markovic");ht.put("E10045", "Petar Petrovic");ht.put("E10093", "Jovan Jovanovic");String indeks = "E10045";System.out.println("Student sa brojem indeksa " +
indeks + " je " + ht.get(indeks));indeks = "E10093";System.out.println("Student sa brojem indeksa " +
indeks + " je " + ht.get(indeks));}
24/26
import java.util.HashMap;public class HashMapTest {public static void main(String args[]) {HashMap<String, String> ht =new HashMap<String, String>();
ht.put("E10020", "Marko Markovic");ht.put("E10045", "Petar Petrovic");ht.put("E10093", "Jovan Jovanovic");String indeks = "E10045";System.out.println("Student sa brojem indeksa " +
indeks + " je " + ht.get(indeks));indeks = "E10093";System.out.println("Student sa brojem indeksa " +
indeks + " je " + ht.get(indeks));}
Klasa StringTokenizer• Radi sličan posao kao i metoda split()
klase String – "cepa" zadati string podelimiteru (ili delimiterima)
• Ne radi sa regularnim izrazima• Reziltat cepanja je kolekcija stringovva
kroz koju se iterira metodamahasMoreTokens() i nextToken()
25/26
• Radi sličan posao kao i metoda split()klase String – "cepa" zadati string podelimiteru (ili delimiterima)
• Ne radi sa regularnim izrazima• Reziltat cepanja je kolekcija stringovva
kroz koju se iterira metodamahasMoreTokens() i nextToken()
Klasa StringTokenizerimport java.util.*;class TokenizerTest {public static void main(String args[]) {String text = "Ovo je probni tekst";StringTokenizer st = new StringTokenizer(text, " ");while (st.hasMoreTokens()) {System.out.println(st.nextToken());
}}
}
26/26
import java.util.*;class TokenizerTest {public static void main(String args[]) {String text = "Ovo je probni tekst";StringTokenizer st = new StringTokenizer(text, " ");while (st.hasMoreTokens()) {System.out.println(st.nextToken());
}}
}
Računarski praktikum
Funkcije
Funkcije
• Motivacija:– ponavljanje koda– dekompozicija na manje celine
• Osnovni elementi:– definicija– poziv
2/16
• Motivacija:– ponavljanje koda– dekompozicija na manje celine
• Osnovni elementi:– definicija– poziv
Definicija• Opšta sintaksa:povratni_tip ime_funkcije(parametri) {...
}
• Povratni tip je bilo koji tip podatka ili void ako funkcija ne vraćavrednost.– funkcija vraća najviše jednu vrednost!
• Parametri se deklarišu na isti način kao i promenljive.– Ako funkcija nema parametara ostave se prazne zagrade.
• Ako funkcija vraća vrednost, to se postiže return naredbom:– return a;– return (a);
3/16
• Opšta sintaksa:povratni_tip ime_funkcije(parametri) {...
}
• Povratni tip je bilo koji tip podatka ili void ako funkcija ne vraćavrednost.– funkcija vraća najviše jednu vrednost!
• Parametri se deklarišu na isti način kao i promenljive.– Ako funkcija nema parametara ostave se prazne zagrade.
• Ako funkcija vraća vrednost, to se postiže return naredbom:– return a;– return (a);
Parametri i rezultat metoda• parametri mogu biti:
– primitivni tipovi– reference na objekte
• rezultat može biti:– primitivni tip– referenca na objekat
• Metoda vraća vrednost naredbom:return vrednostilireturn (vrednost)
4/16
• parametri mogu biti:– primitivni tipovi– reference na objekte
• rezultat može biti:– primitivni tip– referenca na objekat
• Metoda vraća vrednost naredbom:return vrednostilireturn (vrednost)
Primeri definicijestatic int max(int a, int b) {
if (a > b)return a;
elsereturn b;
}
static void printInt(int i) {System.out.printf("%d", i);
}5/16
static int max(int a, int b) {if (a > b)
return a;else
return b;}
static void printInt(int i) {System.out.printf("%d", i);
}
Primer• Napisati funkciju sinus koja izračunava sinus razvojem u
Tejlorov red, tačnosti 10-6, po formuli:sinus(x) = x/1! - x3/3! + x5/5! - x7/7! + ...
sabirak = x; znak = 1; stepen = 1;while (Math.abs(sabirak) > 1E-6){
s = s + sabirak;znak = znak*-1;stepen = stepen + 2;sabirak = znak *Math.pow(x,stepen)/fakt(stepen);
}
Sinus.java
6/16
• Napisati funkciju sinus koja izračunava sinus razvojem uTejlorov red, tačnosti 10-6, po formuli:sinus(x) = x/1! - x3/3! + x5/5! - x7/7! + ...
sabirak = x; znak = 1; stepen = 1;while (Math.abs(sabirak) > 1E-6){
s = s + sabirak;znak = znak*-1;stepen = stepen + 2;sabirak = znak *Math.pow(x,stepen)/fakt(stepen);
}
Parametri funkcija
• Parametri funkcija se u nekimprogramskim jezicima prenose povrednosti ili po referenci– u programskom jeziku Java, prenos je
isključivo po vrednosti
7/16
• Parametri funkcija se u nekimprogramskim jezicima prenose povrednosti ili po referenci– u programskom jeziku Java, prenos je
isključivo po vrednosti
Prenos parametarapo vrednosti
• Prenos parametara po vrednosti:– prave se kopije parametara i te kopije se
prosleđuju funkciji– posledica: nije moguće promeniti prosleđenu
promenljivu iz funkcije
8/16
• Prenos parametara po vrednosti:– prave se kopije parametara i te kopije se
prosleđuju funkciji– posledica: nije moguće promeniti prosleđenu
promenljivu iz funkcije
Prenos parametarapo vrednosti
static void f(int i){
i = 3;}public static void main(String[] a) {
int i = 5;f(i);System.out.printf("%d", i);
}
Vrednost.java
9/16
static void f(int i){
i = 3;}public static void main(String[] a) {
int i = 5;f(i);System.out.printf("%d", i);
}Šta će biti
odštampano?
Nizovi kao parametri funkcija• U listi parametara funkcije ne navode se
dimenzije.• Primer:void f(int a[]) {...a[3] = 5;
}• Ako je potrebna veličina niza, ona se može
saznati iz atributa length:a.length
Ovo će promeniti a[3] u pozivajućojfunkciji!POSLEDICA:• Niz se može promeniti iz funkcije!• Nizovi se ne prosleđuju po vrednosti,tj. ne pravi se kopija niza!
10/16
• U listi parametara funkcije ne navode sedimenzije.
• Primer:void f(int a[]) {...a[3] = 5;
}• Ako je potrebna veličina niza, ona se može
saznati iz atributa length:a.length
Ovo će promeniti a[3] u pozivajućojfunkciji!POSLEDICA:• Niz se može promeniti iz funkcije!• Nizovi se ne prosleđuju po vrednosti,tj. ne pravi se kopija niza!
Nizovi.java
Višedimenzionalni nizovi kaoparametri funkcija
• U listi parametara funkcije se ne navodedimenzije– ta informacija se može saznati iz same promenljive
• a.length – broj vrsta• a[0].length – broj kolona
• Primer:void f(int a[][]) {...a[3][3] = 5;
}11/16
• U listi parametara funkcije se ne navodedimenzije– ta informacija se može saznati iz same promenljive
• a.length – broj vrsta• a[0].length – broj kolona
• Primer:void f(int a[][]) {...a[3][3] = 5;
}Nizovi.java
Opseg vidljivosti promenljivih
• Promenljive deklarisane unutar funkcije se“vide” samo u funkciji– to su lokalne promenljive
• Pomenljive deklarisane izvan funkcije se“vide” i u ostalim funkcijama– to su atributi
12/16
• Promenljive deklarisane unutar funkcije se“vide” samo u funkciji– to su lokalne promenljive
• Pomenljive deklarisane izvan funkcije se“vide” i u ostalim funkcijama– to su atributi
Opseg vidljivosti promenljivihvoid f(int i) {i = 3;
}int a;void f2(int i) {int b;a = 5;i = 3;
}void f3(int i) {int a;a = 5;i = 3;
} 13/16
void f(int i) {i = 3;
}int a;void f2(int i) {int b;a = 5;i = 3;
}void f3(int i) {int a;a = 5;i = 3;
}
Rekurzivne funkcije• Rekurzija: funkcija poziva
samu sebe• Svaka rekurzivna funkcija
mora da ima uslov zaizlaz iz rekurzije!
• Pozitivno:– razumljivije– ponekad i jedino moguće
(Akermanova funkcija)• Mana:
– opterećuje stek– brzina
14/16
• Rekurzija: funkcija pozivasamu sebe
• Svaka rekurzivna funkcijamora da ima uslov zaizlaz iz rekurzije!
• Pozitivno:– razumljivije– ponekad i jedino moguće
(Akermanova funkcija)• Mana:
– opterećuje stek– brzina
Rekurzivne funkcijeint fakt(int n){int i, f=1;for (i = 1; i <= n; i++){f *= i;
}return f;
}
int fakt(int n){if (n < 2)return 1;
return n * fakt(n-1);}
15/16
int fakt(int n){int i, f=1;for (i = 1; i <= n; i++){f *= i;
}return f;
}
int fakt(int n){if (n < 2)return 1;
return n * fakt(n-1);}
Fakt1.java Fakt2.java
Varijabilan broj parametara
• Ako želimo da metoda ima varijabilan brojparametara, deklarišemo na sledeći način:
void f(int... params) {...}• Parametrima se pristupa kao elementima
niza:int a = params[2];
16/16
• Ako želimo da metoda ima varijabilan brojparametara, deklarišemo na sledeći način:
void f(int... params) {...}• Parametrima se pristupa kao elementima
niza:int a = params[2];
Računarski praktikum
Ulazno izlazni podsistem
Ulazno izlazni podsistem• standardna biblioteka za ulazno/izlazne operacije
• izvorišta/odredišta:
• tastatura/konzola
• fajl sistem
• memorija
• mrežne konekcije
• oslanja se na tokove (streams) i čitače/pisače(reader/writer)
2/20
• standardna biblioteka za ulazno/izlazne operacije
• izvorišta/odredišta:
• tastatura/konzola
• fajl sistem
• memorija
• mrežne konekcije
• oslanja se na tokove (streams) i čitače/pisače(reader/writer)
Štampanje na ekran
• System.out je izlazni tok:System.out.print(“Poruka”);System.out.println(“Poruka”);• Ispis se može i formatirati:System.out.printf(“format”, argumenti);System.out.printf(“%.2f %d”, (10000.0 / 3), 5);
3/20
• System.out je izlazni tok:System.out.print(“Poruka”);System.out.println(“Poruka”);• Ispis se može i formatirati:System.out.printf(“format”, argumenti);System.out.printf(“%.2f %d”, (10000.0 / 3), 5);
Štampanje na ekran
• Funkcija printf iz biblioteke stdio.h• Prvi parametar je specifikator formata ispisa,
a ostali parametri su varijable čija se vrednostštampa.
• Specifikator formata:%[širina][.preciznost]tip
4/20
• Funkcija printf iz biblioteke stdio.h• Prvi parametar je specifikator formata ispisa,
a ostali parametri su varijable čija se vrednostštampa.
• Specifikator formata:%[širina][.preciznost]tip
printf - širina• Definiše broj cifara
[širina]¦ Kako utiče na preciznost---------+--------------------------------------------------------
n ¦ Štampa zadati broj cifara.0n ¦ Štampa zadati broj cifara.
¦ Ako broj nema toliko cifara, sa leve se popunjava nulama.
5/20
• Definiše broj cifara
[širina]¦ Kako utiče na preciznost---------+--------------------------------------------------------
n ¦ Štampa zadati broj cifara.0n ¦ Štampa zadati broj cifara.
¦ Ako broj nema toliko cifara, sa leve se popunjava nulama.
printf – tip - brojevi
Tip ¦ Očekivan ulaz ¦ Format rezultat------------------------------------------------------------------------------Brojevi------------------------------------------------------------------------------
b ¦ Boolean ¦ Booleand ¦ Integer ¦ Signed decimal integero ¦ Integer ¦ Unsigned octal integeru ¦ Integer ¦ Unsigned decimal integerh,x¦ Integer ¦ Unsigned hexadecimal int (with a, b, c, d, e, f)H,X¦ Integer ¦ Unsigned hexadecimal int (with A, B, C, D, E, F)f ¦ Floating point ¦ Signed value oblika [-]dddd.dddd.e ¦ Floating point ¦ Signed value oblika [-]d.dddd or e[+/-]dddg ¦ Floating point ¦ Kraći zapis od %f i %eE ¦ Floating point ¦ Isto kao e; samo ima ‘E’ za eksponentG ¦ Floating point ¦ Isto kao e; samo ima ‘E’ za eksponent ako je e format
------------------------------------------------------------------------------
6/20
Tip ¦ Očekivan ulaz ¦ Format rezultat------------------------------------------------------------------------------Brojevi------------------------------------------------------------------------------
b ¦ Boolean ¦ Booleand ¦ Integer ¦ Signed decimal integero ¦ Integer ¦ Unsigned octal integeru ¦ Integer ¦ Unsigned decimal integerh,x¦ Integer ¦ Unsigned hexadecimal int (with a, b, c, d, e, f)H,X¦ Integer ¦ Unsigned hexadecimal int (with A, B, C, D, E, F)f ¦ Floating point ¦ Signed value oblika [-]dddd.dddd.e ¦ Floating point ¦ Signed value oblika [-]d.dddd or e[+/-]dddg ¦ Floating point ¦ Kraći zapis od %f i %eE ¦ Floating point ¦ Isto kao e; samo ima ‘E’ za eksponentG ¦ Floating point ¦ Isto kao e; samo ima ‘E’ za eksponent ako je e format
------------------------------------------------------------------------------
printf – tip - karakteri
Tip ¦ Očekivan ulaz ¦ Format rezultat---------------------------------------------------------------------------Karakteri---------------------------------------------------------------------------
c ¦ Character ¦ Jedno slovos ¦ String ¦ Štampa string do kraja ili do zadatog broja slova% ¦ Ništa ¦ Štampa znak %
---------------------------------------------------------------------------
7/20
Tip ¦ Očekivan ulaz ¦ Format rezultat---------------------------------------------------------------------------Karakteri---------------------------------------------------------------------------
c ¦ Character ¦ Jedno slovos ¦ String ¦ Štampa string do kraja ili do zadatog broja slova% ¦ Ništa ¦ Štampa znak %
---------------------------------------------------------------------------
printf - primeriSystem.out.printf("celobrojni: %d\n", c); --> celobrojni: 356System.out. printf("celobrojni: %6d\n", c); --> celobrojni: 356System.out. printf("celobrojni: %-6d\n", c); --> celobrojni: 356System.out. printf("celobrojni: %+6d\n", c); --> celobrojni: +356System.out. printf("celobrojni: %+6d\n", -c); --> celobrojni: -356
System.out. printf("razlomljeni: %f\n", 3.141); --> razlomljeni: 3.141000System.out. printf("razlomljeni: %6.2f\n", 3.141); --> razlomljeni: 3.14System.out. printf("razlomljeni: %e\n", 3.141); --> razlomljeni: 3.141000e+00System.out. printf("razlomljeni: %6.2e\n", 3.141); --> razlomljeni: 3.14e+00System.out. printf("razlomljeni: %g\n", 3.141); --> razlomljeni: 3.14100
8/20
System.out.printf("celobrojni: %d\n", c); --> celobrojni: 356System.out. printf("celobrojni: %6d\n", c); --> celobrojni: 356System.out. printf("celobrojni: %-6d\n", c); --> celobrojni: 356System.out. printf("celobrojni: %+6d\n", c); --> celobrojni: +356System.out. printf("celobrojni: %+6d\n", -c); --> celobrojni: -356
System.out. printf("razlomljeni: %f\n", 3.141); --> razlomljeni: 3.141000System.out. printf("razlomljeni: %6.2f\n", 3.141); --> razlomljeni: 3.14System.out. printf("razlomljeni: %e\n", 3.141); --> razlomljeni: 3.141000e+00System.out. printf("razlomljeni: %6.2e\n", 3.141); --> razlomljeni: 3.14e+00System.out. printf("razlomljeni: %g\n", 3.141); --> razlomljeni: 3.14100
TestPrintf.java
Unos sa tastature
• System.in je ulazni tok:BufferedReader in = new BufferedReader(new
InputStreamReader(System.in));String s = in.readLine();• Alternativa je klasa Scanner koja ne
učitava samo stringove:Scanner sc = new Scanner(System.in);String s = sc.nextLine();int i = sc.nextInt();float f = sc.nextFloat();
9/20
• System.in je ulazni tok:BufferedReader in = new BufferedReader(new
InputStreamReader(System.in));String s = in.readLine();• Alternativa je klasa Scanner koja ne
učitava samo stringove:Scanner sc = new Scanner(System.in);String s = sc.nextLine();int i = sc.nextInt();float f = sc.nextFloat();
Unos drugih primitivnih tipova satastature
• Koristi se wrapper klasa i njena metodaparseXxx():
BufferedReader in = new BufferedReader( newInputStreamReader(System.in));
String s = in.readLine();int i = Integer.parseInt(s);• Kraće je klasom Scanner:Scanner sc = new Scanner(System.in);int i = sc.nextInt();
10/20
• Koristi se wrapper klasa i njena metodaparseXxx():
BufferedReader in = new BufferedReader( newInputStreamReader(System.in));
String s = in.readLine();int i = Integer.parseInt(s);• Kraće je klasom Scanner:Scanner sc = new Scanner(System.in);int i = sc.nextInt();
Klasa Console• Sistemska konzola:
– Console c = System.console();• Metode:
– printf("format", promenljive)– readLine()– readLine("format", promenljive)
• ispiše promenljive u zadatom formatu, pa učita jedan redteksta
– readPassword()• čita šifru sa tastature, bez prikazivanja slova
– readPassword("format", promenljive)• ispiše promenljive u zadatom formatu, pa učita šifru sa
tastature, bez prikazivanja slova
11/20
• Sistemska konzola:– Console c = System.console();
• Metode:– printf("format", promenljive)– readLine()– readLine("format", promenljive)
• ispiše promenljive u zadatom formatu, pa učita jedan redteksta
– readPassword()• čita šifru sa tastature, bez prikazivanja slova
– readPassword("format", promenljive)• ispiše promenljive u zadatom formatu, pa učita šifru sa
tastature, bez prikazivanja slova
ConsoleTest.java
File klasa
• Za manipulaciju datotekama idirektorijumima:– kreiranje datoteka i direktorijuma– brisanje datoteka i direktorijuma– pristup atributima datoteka i direktorijuma– modifikacija naziva i atributa datoteka i
direktorijuma
12/20
• Za manipulaciju datotekama idirektorijumima:– kreiranje datoteka i direktorijuma– brisanje datoteka i direktorijuma– pristup atributima datoteka i direktorijuma– modifikacija naziva i atributa datoteka i
direktorijuma
FileTest.java
File klasa
• File f = new File(".");• File f = new File("C:\Windows");• f = new File(f, "pera");• f = new File(f, "..");
• if(f.exists()) ...• if(f.isDirectory()) ...• f.createNewfile();
13/20
• File f = new File(".");• File f = new File("C:\Windows");• f = new File(f, "pera");• f = new File(f, "..");
• if(f.exists()) ...• if(f.isDirectory()) ...• f.createNewfile();
Tokovi (streams) 1/4
• Bazirani na bajtovima– prenos jednog bajta– prenos niza bajtova– rad sa primitivnim tipovima podataka (int,
boolean, float, ...)
14/20
• Bazirani na bajtovima– prenos jednog bajta– prenos niza bajtova– rad sa primitivnim tipovima podataka (int,
boolean, float, ...)
Tokovi (streams) 2/4
• Osmišljeni kao mehanizam koji omogućuje unificiranpristup podacima
• Isti kôd se koristi za čitanje/pisanje iz, na primer,datoteke ili mrežne konekcije
• Koncept filtera - donose dodatnu funkcionalnosttokovima:– prenos primitivnih tipova na mašinski nezavisan način
(DataInputStream, DataOutputStream)– baferizovan prenos podataka (BufferedInputStream,
BufferedOutputStream)
15/20
• Osmišljeni kao mehanizam koji omogućuje unificiranpristup podacima
• Isti kôd se koristi za čitanje/pisanje iz, na primer,datoteke ili mrežne konekcije
• Koncept filtera - donose dodatnu funkcionalnosttokovima:– prenos primitivnih tipova na mašinski nezavisan način
(DataInputStream, DataOutputStream)– baferizovan prenos podataka (BufferedInputStream,
BufferedOutputStream)
FileStreamTest.java
Tokovi (streams) 3/4
• Metode u tokovima:– read() – čita jedan bajt iz toka– read(byte[]) – čita niz bajtova
• vraća pročitan broj bajtova ili -1 ako je stigla dokraja datoteke
– skip(long n) – preskače zadati broj bajtova– available() – vraća broj raspoloživih bajtova iz
toka koji se mogu pročitati pre blokiranjasledećeg čitanja
– close() – zatvara tok
16/20
• Metode u tokovima:– read() – čita jedan bajt iz toka– read(byte[]) – čita niz bajtova
• vraća pročitan broj bajtova ili -1 ako je stigla dokraja datoteke
– skip(long n) – preskače zadati broj bajtova– available() – vraća broj raspoloživih bajtova iz
toka koji se mogu pročitati pre blokiranjasledećeg čitanja
– close() – zatvara tok
Tokovi (streams) 4/4
• Primer upotrebe – kopiranje sadržaja datoteke:
byte[] buffer = new byte[BUFFER_LENGTH];while((read=in.read(buffer, 0,BUFFER_LENGTH)) != -1) {
// obrada učitanog niza bajtovaout.write(buffer);
}
17/20
• Primer upotrebe – kopiranje sadržaja datoteke:
byte[] buffer = new byte[BUFFER_LENGTH];while((read=in.read(buffer, 0,BUFFER_LENGTH)) != -1) {
// obrada učitanog niza bajtovaout.write(buffer);
}
CopyFile.java
Čitači/pisači (readers/writers) 1/2
• Koriste se za prenos Unicode teksta:• Čitači/pisači ne zamenjuju tokove – oni ih
dopunjuju• Čitači/pisači se koriste kada je potrebno
preneti Unicode stringove ili karaktere – uostalim situacijama koriste se tokovi
18/20
• Koriste se za prenos Unicode teksta:• Čitači/pisači ne zamenjuju tokove – oni ih
dopunjuju• Čitači/pisači se koriste kada je potrebno
preneti Unicode stringove ili karaktere – uostalim situacijama koriste se tokovi
Čitači/pisači (readers/writers) 2/2
• Metode u čitačima:– read() – čita jedan karakter iz toka– read(char[]) – čita niz karaktera– skip(long n) – preskače zadati broj karaktera– close() – zatvara čitač
• Baferizovani čitač (BufferedReader)– metoda readLine vraća učitan string ili null ako je
stigao do kraja datoteke• Štampanje stringova u datoteku (PrintWriter)
– metoda println štampa tekst u datoteku
19/20
• Metode u čitačima:– read() – čita jedan karakter iz toka– read(char[]) – čita niz karaktera– skip(long n) – preskače zadati broj karaktera– close() – zatvara čitač
• Baferizovani čitač (BufferedReader)– metoda readLine vraća učitan string ili null ako je
stigao do kraja datoteke• Štampanje stringova u datoteku (PrintWriter)
– metoda println štampa tekst u datoteku
FileReaderWriterTest.java
Zaključak• Podaci se u čitaju iz ulaznih tokova, a pišu u
izlazne tokove• Iz programa se retko radi direktno sa bajtovima
– zato se tokovi ugrađuju u Filter klase koje imajuodgovarajuće metode za čitanje/pisanje
– zato imamo tokove objekata, tokove primitivnih tipovaitd.
• Ako radimo sa karakterima/stringovima,koristimo čitače i pisače
20/20
• Podaci se u čitaju iz ulaznih tokova, a pišu uizlazne tokove
• Iz programa se retko radi direktno sa bajtovima– zato se tokovi ugrađuju u Filter klase koje imaju
odgovarajuće metode za čitanje/pisanje– zato imamo tokove objekata, tokove primitivnih tipova
itd.• Ako radimo sa karakterima/stringovima,
koristimo čitače i pisače
Računarski praktikum
Sortiranje
Sortiranje
• Sortiranje ili uređenje• Preuređenje niza tako da svi elementi
nakon toga zauzimaju rastući ili opadajućiporedak
• Vreme za sortiranje raste sa brojemelemenata u nizu– kvadratno (n2): selection sort, bubble sort, itd.– logaritamski (n log n): quick sort, merge sort, itd.
2
• Sortiranje ili uređenje• Preuređenje niza tako da svi elementi
nakon toga zauzimaju rastući ili opadajućiporedak
• Vreme za sortiranje raste sa brojemelemenata u nizu– kvadratno (n2): selection sort, bubble sort, itd.– logaritamski (n log n): quick sort, merge sort, itd.
Kvadratna zavisnost vremena
• Vreme za sortiranje raste sa kvadratom brojaelemenata niza
3
Logaritamska zavisnost vremena
• Vreme za sortiranje raste u skladu sa formulomn * log(n), gde je n broj elemenata niza
4
Selection sort
• Prolazi se kroz niz i traži se najmanjielement.
• Najmanji element se stavlja na prvo mestoniza.
• Zatim se prođe kroz preostali niz (oddrugog elementa, pa na dalje) i traži senajmanji element.
• Ovo se ponavlja dok se ne dođe do krajaniza.
5
• Prolazi se kroz niz i traži se najmanjielement.
• Najmanji element se stavlja na prvo mestoniza.
• Zatim se prođe kroz preostali niz (oddrugog elementa, pa na dalje) i traži senajmanji element.
• Ovo se ponavlja dok se ne dođe do krajaniza.
Select.java
Selection sort
• Pronalaženje najmanjeg elementa:– prvi element se fiksira– polazi se od drugog, pa do kraja– traženje najmanjeg elementa se odvija
uzastopnom zamenom ova dva elementakada god se ustanovi da je drugi manji odprvog.
6
• Pronalaženje najmanjeg elementa:– prvi element se fiksira– polazi se od drugog, pa do kraja– traženje najmanjeg elementa se odvija
uzastopnom zamenom ova dva elementakada god se ustanovi da je drugi manji odprvog.
Bubble sort
• Porede se dva uzastopna elementa niza izamenjuju se ako je drugi manji od prvog.
• Nakon prvog prolaza, na kraju niza je najvećielement.
• Algoritam se ponavlja za preostali deo niza (odprvog do pretposlednjeg elementa) i na mestupretposlednjeg elementa će ostati najvećielement iz tog podniza.
• Algoritam se ponavlja dok ne smanjimo podnizna prva dva elementa.
7
• Porede se dva uzastopna elementa niza izamenjuju se ako je drugi manji od prvog.
• Nakon prvog prolaza, na kraju niza je najvećielement.
• Algoritam se ponavlja za preostali deo niza (odprvog do pretposlednjeg elementa) i na mestupretposlednjeg elementa će ostati najvećielement iz tog podniza.
• Algoritam se ponavlja dok ne smanjimo podnizna prva dva elementa.
Bubble.java
Pretraga niza• Tražimo element u nizu• Razlika između pretrage u uređenom i
neuređenom nizu– ako je neuređen, nemamo izbora
• prolazimo kroz sve elemente niza dok ne nađemo element ilistignemo do kraja
– ako je niz uređen, imamo dve mogućnosti:• prolazimo kroz sve elemente niza dok ne nađemo element ili
stignemo do kraja• krenemo od sredine niza i proverimo koji je element tu
– ako je traženi element veći od tekućeg, znači da moramo datražimo u gornjoj polovini niza
– ako je traženi element manji od tekućeg, znači da moramo datražimo donjoj polovini niza
– ponavljamo ovu proceduru za odabranu polovinu niza dok nenađemo element, ili dok ne iscrpimo niz
SearchL.java SearchB.java
8
• Tražimo element u nizu• Razlika između pretrage u uređenom i
neuređenom nizu– ako je neuređen, nemamo izbora
• prolazimo kroz sve elemente niza dok ne nađemo element ilistignemo do kraja
– ako je niz uređen, imamo dve mogućnosti:• prolazimo kroz sve elemente niza dok ne nađemo element ili
stignemo do kraja• krenemo od sredine niza i proverimo koji je element tu
– ako je traženi element veći od tekućeg, znači da moramo datražimo u gornjoj polovini niza
– ako je traženi element manji od tekućeg, znači da moramo datražimo donjoj polovini niza
– ponavljamo ovu proceduru za odabranu polovinu niza dok nenađemo element, ili dok ne iscrpimo niz