Szervusz!
Szervusz!
FRONT PAGE html code
<meta http-equiv="Content-Language" content="enus"> <meta http-equiv="Content-Type" content="text/html; charset=windows-1252"> <meta name="GENERATOR" content="Microsoft FrontPage 4.0"> <meta name="ProgId" content="FrontPage.Editor.Document">New Page 1
KONTROLNA PITANJA 46. Koje su glavne usluge Internet-a? 47. Koje su glavne komponente elektronske pošte? 48. Koji su najpoznatiji Internet-browser programi i koje su njihove glavne osobine? 49. Navedite karakteristike i strukturu e-mail adresa i web adresa! 50. Opišite glavne osobine programa za uredjivanje web-dokumenata!
Zadaci: 1.
Konstruišite sopstveni home page. Primenite bilo koji html editor, koji vam stoji na raspolaganje.
2.
Konstruišite za preduzeće XYZ predstavljanje na web-u. Neka portal sadrži i fotografiju, zvučne efeke i link na direktorov home page!
4. MATEMATIČKI I LOGIČKI OSNOVI 4.1. BROJNI SISTEMI Razvojem ljudske civilizacije zapisivanje brojeva i računskih operacija sa brojevima prešla su značajan razvojni put. Naš zadatak u ovom kursu nije izučavanje tog razvojnog puta, ali zbog potpunog shvatanja današnjeg načina pisanja brojeva i operacija sa njima, potrebno je da upoznamo osnovna svojstva ranije upotrebljavanih brojevnih sistema.
4.1.1. A NEPOZICIONI BROJNI SISTEMI U nepozicionim brojnim sistemima za zapisivanje svakog “značajnog” broja koristi se poseban znak. Svaki takav znak jednoznačno označava jedan jedini broj. U nizu svih ostalih znakova taj znak broja je značio uvek isto: samo taj broj, bez obzira na poziciju u zapisanom nizu znakova. Brojevi, koji nisu raspolagali samostalnim znakom zapisani su pomoću postojećih znakova za brojeve, poštujući sledeće principe:
princip repetitivnosti (ponavljanja), i princip aditivnosti (sabiranja).
PRIMER NEPOZICIONOG BROJNOG SISTEMA: RIMSKI NAČIN PISANJA BROJEVA Upotreba rimskog načina pisanja je bila prilično rasprostranjena, čak i danas često zapisujemo brojeve rimskim ciframa (istina, više u dekorativne svrhe). Treba istaći, da danas korišćeni način pisanja brojeva rimskim ciframa već koristi neka pravila, koja nisu karakteristika originalnih nepozicionih brojnih sistema. Radi korišćenja tih pravila u eventualnom zadatku za pisanje programa konverzije zapisa brojeva iz rimskog načina u naš brojni sistem, upoznajmo ih detaljnije! I
X
C
M
V
L
D
1
10
100
1000
5
50
500
osnovne cifre
pomoćne cifre
Pored repetitivnosti i aditivnosti dodatna pravila zapisivanja brojeva rimskim ciframa su sledeća: samo osnovne cifre možemo ponavljati (repetirati) u cilju adicije (sabiranja) – i to najviše tri puta, pomoćna cifra može stajati samo iza neposredno veće glavne cifre, i to samo jedanput osnovna cifra može da stoju samo iza veće glavne ili pomoćne cifre, IZUZETAK: osnovna cifra može da stoji i ispred neposredno veće osnovne ili pomoćne cifre isključivo jedanput – ali tada njegovu vrednost ODUZIMAMO.
1956 = MCMLVI 2001 = MMI 999 = CMXCIX neispravno: IC 990 = CMXC neispravno : XM 49 = XLIX neispravno : IL 1234 = MCCXXXIV
4.1.2. POZICIONI BROJNI SISTEMI 4.1.2.1. DECIMALNI BROJNI SISTEM I kod nepozicionih brojnih sistema se već prećutno pojavio jedan princip, kojeg sada posebno ističemo: to je princip grupisanja. Po tom principu svaki sistem zapisivanja brojeva ima jedan osnovni broj, i čim se pojavi onoliko jedinica, koliki je osnovni broj, odmah to obuhvatamo jednom jedinicom višeg reda (grupišemo). U decimalnom brojnom sistemu taj osnovni broj je deset. 2 hiljade + 4 stotine + 3 desetice + 7 jedinica 2103 + 4102 + 3101 + 2100 Ako u ovom poslednjem zapisu po dogovoru (konvenciji) izostavljamo stepene osnovnog broja i operacijske znakove, tada broj zapisujemo na sledeći način: 2431
Skup cifara: C = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
4.1.2.2. POZICIONI BROJNI SISTEMI SA OSNOVOM M≠10 Obeležimo osnovu brojnog sistema sa M. Na osnovu iskustava iz sistema sa osnovom deset, skup cifara ovog sistema sadrži M elemenata: C = {0, 1, . . . , M-1}. Posmatrajmo sistem sa osnovom 8. Skup cifara je: C(8) = {0, 1, 2, 3, 4, 5, 6, 7} Značenje broja zadatog zapisom u „oktalnom” sistemu preveden na zapis u poznati „dekadni” sistem je sledeće:
7265.23(8) = 783 + 282 + 681 + 580 + 28-1 + 38-2 = = 7512 + 264 + 68 + 5 + 20,125 + 30,015625 = = 3584 + 128 + 48 + 5 + 0,25 + 0.03125 = 3765,28125(deset)
Osmotrimo jedan primer zapisa broja u sistemu sa osnovom koja je veća od broja deset. Svi brojevi, koji su manji od osnovnog broja a veći su od “deset” (svakako i oni, koji su manji od deset) moraju biti obeleženi jednom cifrom! Neka je: C(T) = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B}, gde slovo T označava broj „tuce” (dvanaest). Cifra A označava broj deset, a cifra B označava jedanaest. Pokazujemo konverziju zapisa broja iz sistema sa osnovom „tuce” u sistem sa osnovom deset: 34A,0B(T) =3122 + 4121 + 10120 + 012-1 + 1112-2 = =3144 + 412 + 10 + 0 + 110,00694444... = = 432 + 48 + 10 + 0,07638888... = 490,0763888.. Primedba: Zapis racionalnog broja u bilo kojem brojnom sistemu ili je konačan, ili je beskonačan periodični razlomak.
Heksadecimalni brojni sistem ima posebno važnu primenu. Obeležimo heksadecimalni zapis broja sa indeksom (H). Ovo je brojni sistem sa osnovom „šesnaest”. Skup cifara je sledeći: C(H) = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F} Evidentno je dogovoreno značenje cifara: A = „deset", B = „jedanaest", C = „dvanaest", D = "trinaest", E = „četrnaest", F = „petnaest". Neka su data ČETIRI broja: X, Y, Z i W. Poređajmo ih u rastući redosled! X = 12345 Y = 12345(7) Z = 12345(T) W = 1234(H) Sa brojem X nemamo šta činiti. Zapise ostalih brojeva moramo konvertovati u decimalni brojni sistem: Y = 12345(7) = 174 + 273 + 372 + 471 + 570 = 3267 Z = 12345(T) = 1124 + 2123 + 3122 + 4121 + 5120 = 24677 W = 12345(H) = 1164 + 2163 + 3162 + 4161 + 5160 =74565 Nakon te konverzije možemo brojeve uporediti: Y < X < Z < W.
Izvršimo sada konverziju dekadnog celog broja 2431 u brojni sistem sa osnovom 5! Vršimo sledeće operacije: 2431 = 5 486 + 1 486 = 5 97 + 1 97 = 5 19 + 2 19 = 5 3 + 4 3= 5 0+3
1
Skraćeno zapisujemo: 2431 486 97 19 3 0
1 1 2 4 3
Tvrdimo sledeću činjenicu: 2431 = 34211(5) Zaista: 34211(5) = 3 54 + 4 53 + 2 52 + 1 51 + 1 50 = = 3 625 + 4 125 + 2 25 + 1 5 + 1 = 2431.
Konverziju razlomljenog dela dekadnog broja takođe prvo pokazujemo prema sistemu sa osnovom 5. Vršimo sledeće operacije: 0,2431 5 = 1,2155 0,2155 5 = 1,0775 0,0775 5 = 0,3875 0,3875 5 = 1,9375 0,9375 5 = 4,6875 0,6875 5 = 3,4375 0,4375 5 = 2,1875 0,1875 5 = 0,9375 0,9375 5 = 4,6875 .... .... 1
Skraćeno zapisujemo: 0,2431 0,2155 0,0775 0,3875 0,9375 0,6875 0,4375 0,1875 0,9375 0,6875 ....
1 1 0 1 4 3 2 0 4 3 ...
Prema tome rezultat konverzije je: 0,2431 = 0,1101(4320)(5)
4.1.2.3. BROJNI SISTEMI SA OSNOVOM 2N (N=1,2,3,4) Brojni sistemi sa osnovom 2N (N=1,2,3,4) imaju posebno važnu ulogu na području računarske tehnike. Ti brojni sistemi su sledeći: Za N=1 → 2N = 2 imamo binarni brojni sistem sa skupom cifara: C(2) = {0, 1} Za N=2 → 2N = 4 imamo kvartalni brojni sistem sa skupom cifara: C(4) = {0, 1, 2, 3} Za N=3 → 2N = 8 imamo oktalni brojni sistem sa skupom cifara: C(8) = {0, 1, 2, 3, 4, 5, 6, 7} i Za N=4 → 2N = 16 imamo heksadecimalni brojni sistem sa ciframa: C(H) = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F} Konverzija zapisa brojeva izmedju ovih sistema može se izvršiti mnogo lakše posredstvom binarnog brojnog sistema (izostavljamo dekadni brojni sistem!)
Uočiti sledeće činjenice: Zapisivanje cifara kvartalnog broja možemo izvršiti sa najviše dve binarne cifre, cifre oktalnog broja zahtevaju najviše tri binarne cifre, a cifre heksadecimalnog broja se mogu zapisati pomoću 4 binarne cifre. Koristeći ove konstatacije, pronalazimo veoma jednostavan i udoban način medjusobne konverzije zapisa brojeva u tim sistemima.
0
0
0
0
0
1
0
0
0
1
2
0
0
1
0
3
0
0
1
1
4
0
1
0
0
5
0
1
0
1
6
0
1
1
0
7
0
1
1
1
8
1
0
0
0
9
1
0
0
1
A
1
0
1
0
B
1
0
1
1
C
1
1
0
0
D
1
1
0
1
E
1
1
1
0
F
1
1
1
1
Posmatramo primer konverzije oktalnog zapisa broja na binarni, odmah zatim dalju konverziju broja sa binarnog na heksadecimalni zapis: Princip je grupisanje: umesto jednog kvartalnog znaka dva binarna (i obrnuto), a takodje i umesto četiri binarne cifre jedna heksadecimalna cifra (naravno: i ornuto). U slučaju oktalnih cifara imamo tri binarne cifre (i obrnuto: trima binarnim ciframa odgovara jedan oktalni znak). „Zamena” se vrši upotrebom prikazane tabele. (U slučaju „okrnjene” grupe cifara vrši se dopunjavanje nolama za zauzimanje odgovarajućih mesta.) Grupisanje uvek počinjemo kod zapete, koja razdvaja razlomljeni deo od celog dela zapisa broja! Konvertovati oktalni zapis 7453,657(8) na heksadecimalni!
7 4 5 3 , 6 5 7(8) = 111100101011,110101111(2) = = 111100101011,110101111000(2) = = F 2 B , C 7 8(H).
4.1.2.4. OPERACIJE U BROJNIM SISTEMIMA Konstatujemo, da izmedju brojnih sistema ne postoje principijelne razlike. Jedina razlika je u „pravilima igre": grupisanje se vrši po drugom osnovnom broju. Pokušajmo brojanje zapisati u sistemu sa osnovom 6. Ispod zapisa brojeva u sistemu sa osnovom 6 ispisali smo i dekadni zapis istih brojeva: Niz prirodnih brojeva zapisan u sistemu sa osnovom 6: 1,2,3,4,5,10,11,12,13,14,15,20,21, ... ,53,54,55,100,... Isti niz u dekadnom sistemu: 1,2,3,4,5, 6, 7, 8, 9,10,11,12,13, ... ,33,34,35, 36,... Zašto je 12(6) = 8, ili 26 = 42(6), Videti zašto je 36 = 100(6) ?
Naredni primeri bez suvišnih objašnjenja prikazuju sabiranje u nekoliko brojna sistema. Skrećemo pažnju na činjenicu, da i "tehnika" sabiranja je potpuno ista, koju smo naučili u osnovnoj školi i svakodnevno primenjujemo kod dekadnog brojnog sistema.
N=3
N=6
N=9
21202 +11120 110022
543032 +541013 1524045
868777616 +151272333 1131161050
N = "tuce" heksadecimalni 45A0B5 ABCD102 + 32B0A + F2345 491003 ACBF447
N=2 101110101110101 1101001110101 + 111101110111 1000011101100001
Proučimo i primere oduzimanja!
N=3 211222212 – 22222222 111222220
N=5 32343244 – 4434332 22403412
N=2 1000100010001000 – 10010010010010 110001111110110
Imamo dva značajna razloga, zbog kojih moramo potražiti drugi metod oduzimanja brojeva u nedekadnim zapisima: jedan razlog je komplikovanost postupka (sabiranje se još nekako može analogijom izvršiti, ali oduzimanje mnogo više odudara od postupka na koji smo naviknuti), a (pojednostavljen) drugi razlog je to, da računar „ume samo da sabira" (?!). Odgovor na ovo (prividno) nemoguće pitanje dobija se iscrpan odgovor u okvirima drugih predmeta. Pokušajmo da na neki način „zamenimo” oduzimanje sabiranjem!
Za predstavljanje negativnih brojeva definišemo komplement broja. U dekadnom sistemu deveti komplement broja je zapis čije cifre dopunjavaju odgovarajuće cifre posmatranog broja do DEVET. Deseti komplement broja je zapis koji se dobija tako, što na najnižoj poziciji devetom komplementu dodamo 1.
Dekadni broj
45689 235,123
0,0365
000236,1200
Deveti komplement 54310
764,876
9,9634
999763,8799
Deseti komplement 54311
764,877
9,9635
999763,8800
Pojam komplementa na prirodan način se može preneti i na nedekadne brojne sisteme. Ako je osnova sistema broj N, tada cifre N-1-vog komplementa dopunjuju odgovarajuće cifre prvobitnog broja do N-1, a N-ti komplement se dobija iz N-1-vog uvećanjem za 1 na najnižoj poziciji. Posmatrajmo primere: Broj sa osnovom 5
43214
234,123 0,03112 000233,1200
Četvrti komplement
01230
210,321 4,41332 444211,3244
Peti komplement
01231
210,322 4,41333 444211,3300
Heksadecimalni broj
ABC034
34,123
0,03112 00023F,1200
15-ti komplement
543FCB
CB,EDC
F,FCEED FFFDC0,EDFF
16-ti komplement
543FCC
CB,EDD
F,FCEEE FFFDC0,EE00
Pokazujemo primere za korišćenje komplementa za zamenu oduzimanja sabiranjem. Prvi primeri ponovo su uzeti iz sistema sa osnovom 10 i odabrani su tako da je razlika pozitivna.
Uobičajeno oduzimanje
Oduzimanje dodavanjem 9-tog komplementa
5879,123 – 0345,110 5534,013 POSTOJI PRELIVANJE, znači razlika je pozitivan broj. Prelivanje ZANEMARIMO, cifri na najnižoj mesnoj poziciji dodamo 1.
+
5879,123 9654,889
1 5534,012
Oduzimanje dodavanjem 10tog komplementa
5879,123 + 9654,890
1 5534,013
+1 5534,013 POSTOJI PRELIVANJE, znači razlika je pozitivan broj. Prelivanje ZANEMARIMO, preostaje korektan rezultat.
Osmotrimo primere, kada je razlika negativna!
Uobičajeno oduzimanje
345,110 –5879,123 –5534,013
Oduzimanje dodavanjem 9-tog komplementa
0345,110 4120,876
+
0 4465,986 – 5534,013
NEMA PRELIVANJA, znači rezultat je negativan broj, tražena razlika je 9-ti komplement ovog zbira. KOMPLEMENTIRATI!
Oduzimanje dodavanjem 10tog komplementa 0345,110 + 4120,877
0 4465,987 5534,012 +1 – 5534,013
NEMA PRELIVANJA, znači rezultat je negativan broj, tražena razlika je 10-ti komplement ovog zbira. KOMPLEMENTIRATI!
Primer iz binarnog sistema (N = 2): Binarno oduzimanje 11001100,10001 –10111111,11111 1100,10010
Sa prvim komplementom
Sa drugim komplementom
11001100,10001 +01000000,00000
11001100,10001 +01000000,00001
100001100,10001
100001100,10010
+1 1100,10010 1111,11111 000001111,11111 –100000000,01101 +011111111,10010 -11110000,01110 0100001111,10001 -11110000,01110
000001111,11111 +011111111,10011
0100001111,10010 011110000,01101 +1 -11110000,01110
Primer iz heksadecimalnog brojnog sistema (N = 16) : Heksadecimalno oduzimanje
Sa 15-tim komplementom
Sa 16-tim komplementom
A0F,130 –166,5C5 8A8,B6B
A0F,130 +D99,A3A 18A8,B6A +1 8A8,B6B
A0F,130 +D99,A3B 18A8,B6B
546,653 –B29,110 -6D2,ABD
546,653 +3D6,EEF 092D,542 -6D2,ABD
546,653 +3D6,EF0 092D,543 6D2,ABC +1 -6D2,ABD
1011100011001 : 11011 = 1101101 -11011↓↓↓↓↓↓↓ 100110↓↓↓↓↓↓ Jer je: 11011011 ⋅ 11011 Ako je -11011↓↓↓↓↓↓ 11011011 a:b = c =10110↓↓↓↓↓ 11011011 onda 11011011 101101↓↓↓↓ c⋅b = a 11011011 -11011↓↓↓↓ =100101↓↓↓ 111 1 111 11 1 -11011↓↓↓ =10100↓↓ 1011100011001 101000↓ I: 1011100011001 : 11011011 = 11011 -11011↓ -11011011↓↓↓↓ =11011 =100101101↓↓↓ -11011 i =0 -11011011↓↓↓ a:c = b ==10100100↓↓ =101001000↓ -11011011↓ Primer za binarno =11011011 deljenje -11011011 =0
Zadaci: Izvršiti naznačene operacije u odgovarajućem brojnom sistemu, a tačnost izvršenih operacija kontrolisati konverzijom u dekadni brojni sistem! a)
256,512(7) + 616,16(7) =
b) 656,512(7) – 416,16(7) =
c)
256,512(9) + 616,16(9) =
d) 656,512(9) – 416,16(9) =
e)
256,512(8) + 616,16(7) =
f) 656,512(8) – 416,16(7) =
g)
2B6,512(T) + 616,16(T) =
h) 656,512(T) – A16,16(T) =
i)
2EF,512(H) + 616,16(H) =
j) 656,512(H) – EF6,16(H) =
Oduzimanje izvršiti na tri načina: direktno u datom brojnom sistemu, upotrebom “nepotpunog” (osnovni broj–1) i upotrebom “potpunog” komplementa!
Kontrolna pitanja. 1.
Koje su karakteristike nepozicionih brojnih sistema?
2.
Šta znači princip repetitivnosti?
3.
Šta znači princip aditivnosti?
4.
Koja pravila koristimo danas u rimskom načinu pisanja brojeva?
5.
Koje su glavne karakteristike pozicionih brojnih sistema?
6.
Šta znače cifre pozicionih brojnih sistema?
7.
Koje su cifre oktalnog brojnog sistema?
8.
Kako zapisujemo osnovni broj u proizvoljnom brojnom sistemu?
9.
Kako vršimo konverziju dekadnog celog broja u sistem sa osnovom različitom od 10.
10. Kako vršimo konverziju pozitivnog decimalnog broja manjeg od 1 u pozicioni brojni sistem sa nekom drugom osnovom? 11. Kakvu istorijsku ulogu je imao brojni sistem sa osnovom 12?
Kontrolna pitanja. 12. Koja veza postoji izmedju cifara brojnih sistema sa osnovom 2, 4, 8 i 16? 13. Kako se vrši medjusobna konverzija binarnih i kvartalnih brojeva? 14. Kako se vrši medjusobna konverzija binarnih i oktalnih brojeva? 15. Kako se vrši medjusobna konverzija binarnih i heksadecimalnih brojeva? 16. Kako sabiramo brojeve u jednom pozicionom brojnom sistemu? 17. Šta je nepotpuni komplement (N-1-vi komplement) broja u sistemu sa osnovom N? 18. Šta je potpuni komplement (N-ti komplement) broja u sistemu sa osnovom N? 19. Koja je uloga nepotpunog komplementa u oduzimanju brojeva? 20. Koja je uloga potpunog komplementa u oduzimanju brojeva? 21. Pokažite kako se vrši množenje u pozicionim brojnim sistemima (uzmite za primer binarni sistem)! 22. Pokažite kako se vrši deljenje u pozicionim brojnim sistemima (uzmite za primer binarni sistem)!)!
4.2. KODOVI I KODNI SISTEMI 4.2.1. KODIRANJE, KODNA AZBUKA Pojam informacije i podatka smo već ranije tretirali. Sada posmatramo mogućnosti kako zabeležiti, čuvati, obraditi i prenositi skup informacija B = {b1, b2, b3, ... , bN} Od tih pitanja prvenstveno se bavimo sa prvim: kako zabeležiti informaciju? (Ovo pitanje je veoma važno i sa aspekta sigurnog čuvanja, i efikasne obrade kao i brzog prenosa zabeleženih informacija tj. podataka).
Definišemo jedan fiksni skup znakova – azbuku, i samo pomoću znakova iz te azbuke – na osnovu precizno utvrdjenih pravila formiramo kombinacije i koristimo ih za beleženje informacija iz skupa B. Elemente tako formiranih kombinacija nazvaćemo karakterima. Karakteri su: slova, cifre i ostali znakovi. Dogovorno prihvatamo znak | kao znak rastavljanja (prinudno taj znak sada ne smatramo elementom koji pripada skupu za “prevodjenje”). Obeležimo taj skup sa A. Elementi skupa A su: |A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z|
velika slova
|a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z|
mala slova
|0|1|2|3|4|5|6|7|8|9|
cifre
|+|–|*|/|\|^|[|{|(|)|}|]|_|!|?|<|>|~|#|$|%|&|:|;|"|.| |,|
ostali znaci.
Konačan niz karaktera je reč. Reč, sastavljena isključivo od velikih i malih slova je alfabetski niz karaktera (primer: jabuka, perEc, MateMatiKa), nizovi koji se sastoje samo od cifara su numeričke reči (primer: 23 ili 999), mešoviti nizovi karaktera su, kao što je na primer H2O+ocat=3,1415 ili U2) su alfanumeričke reči. Ako elementima skupa informacija B = {b1, b2, b3, ... , bN} jednoznačno dodelimo po jednu reč formiranu pomoću elemenata iz skupa A, tada smo izvršili kodiranje elemenata skupa informacija. Na primer štampani materijali (knjige, novine, pisma) jesu kodirani oblik po jednog skupa informacija. Mi se bavimo opštim formama kodiranja informacija u računarskoj tehnici.
Naziv skupa reči formiranog od elemenata azbuke A fiksne dužine k je kodna azbuka. Zašto je računarska tehnika odabrala dvoelementnu azbuku za formiranje kodne azbuke? (Ta dva “slova” mogu biti obeležena bilo kako, ali je najpraktičnija oznaka {0,1}.) Odaberimo azbuku sa N elemenata i neka je dužina kodnih reči (kodne azbuke) n. Očevidno je, da skup kodnih reči sadrži m = Nn elemenata. Uzimajući u obzir činjenice, da je za predstavljanje dugačkih reči sa malo različita slova potreban veliki memorijski prostor, ali je i tehnička realizacija memorije koja “pamti” kratke reči sa mnogo slova je skupa, to potrebno je pomiriti dva suprotna zahteva: Kod reči date dužine k sa što manje upotrebljenih slova N bude moguće kodirati što veći broj informacija m. Prema tome potrebno je minimizirati funkciju f(N) = n ⋅ N pri konstantnom m.
Iz m = Nn, odnosno logNm = n sledi f(N) = n ⋅ N = N logNm. Izvršimo sledeću zamenu: logNm = (ln m)/(ln N): f(N) = N(ln m)/(ln N). Zaboravimo na trenutak, da je N diskretna promenljiva, i sredstvima matematičke analize potražimo ekstremne vrednosti funkcije f(N). Pronalazimo minimum, i to za ln N = 1, odnosno kada je N = e ≈ 2,71828182845905... Očevidno je, ne postoji azbuka sa 2,71... slova! Ostaje zamena sa najbližim prirodnim brojem, a to je 3, ili, ukoliko smo “skromniji” tu je broj 2, koji je nešto udaljeniji. Računarstvo se ipak odredilo za upotrebu dvoslovne azbuke, jer je ta (suprotno čak i matematičkim rezonima), ipak jeftinija i jednostavnija.
4.2.2. A BINARNO KODIRANJE Zapis decimalnog broja se ne konvertuje u binarni brojni sistem, već se kodira cifra po cifra: → svaka se zamenjuje sa po jednom grupom binarnih cifara fiksne dužine shodno strogo odredjenim pravilima tog dodeljivanja. Dobijeni nizovi binarnih cifara predstavljaju binarno kodirani decimalni broj: BCD – Binary Coded Decimals Broj informacija koje je potrebno kodirati je 10 (to su cifre od 0 do 9). To znači, broj kodnih reči treba da je najmanje 10. Ako sa elementima dvoznačne azbuke formiramo troslovne reči, dobijamo svega 8 različitih reči, a to je premalo.
Ako su kodne reči četvoroslovne – te reči nazivamo tetradama – tada imamo čak i višak, jer imamo 16 tetrada od kojih zauzimamo svega 10. Elementima skupa od 10 cifara elemente iz 16-toelementnog skupa tetrada možemo čak na 29 miliardi načina dodeliti ( to su varijacije od 16 elemenata desete klase bez ponavljanja) Navodimo elemnte skupa tetrada:
A = {0,1} T = A4 = {0000, 0001, 0010, 0011, 0100, 0101, 0110, 0111, 1000, 1001, 1010, 1011, 1100, 1101, 1110, 1111}
Primer: Dat je decimalni broj A = 7916,25 . Binarna konverzija broja je: A(2) = 1111011101100,01(2) NBC binarno kodirani oblik je ( to jedna od BCD mogućnosti): A(BCD) = 0111 1001 0001 0110.0010 0101
Prikazaćemo još nekoliko BCD kodnih sistema, kod kojih dodeljivanje kodnih reči ciframa ne dešava se na potpuno proizvoljan način, već na osnovu izvesnih uslova Dodeljivanje treba da je jednoznačno! Različitim ciframa treba da odgovaraju različiti kodovi. Od prikazanih kodnih siste taj zahtev SVAKI SISTEM ZADOVOLJAVA. Cifri koja ima najveću decimalnu vrednost, treba da odgovara kodna reč najveće binarne vrednosti. Od prikazanih sistema taj zahtev zadovoljava 4 kodna sistema. Parnim, odnosno neparnim decimalnim ciframa treba da odgovaraju kodne reči parne odnosno neparne binarne vrednosti. Ovaj zahtev ne ispunjavaju svi kodni sistemi. Ako za decimalne cifre α i β važi: α + β = 9 (tj da su 9-i komplementi jedan drugom), tada i dodeljene binarne kodne reči treba da budu uzajamno prvi komplementi jedna drugoj. Ima primera da se ovaj zahtev ispunjava, ali većina kodnih sistema to ne ispunjava.
2421 Aiken
8421 NBC
7321
5421
753-6
74-2-1
0000
0000
0000
0000
0000
0000
0000
0011
0001 0010
0001
0001
0001
0001
1001
0111
0100
0011 0100
0010 1000
0010
0010
0010
0111
0110
0101
0101 0110
0011 1001
0011
0100 0011
0011
0010
0101
0110
0111
0100 1010
0100
0101
0100
1011
0100 1011
0111
1000
0101 1011
0101
0110
1000
0100
1010
1000
1001 1010
0110 1100
0110
0111
1001
1101
1001
1001
3321
5211
0
0000
1
0001
2
0010
3 4 5 6
0011 0100 1000 0101 1001 0110 1010 0111 1011 1100
XS-3
Stibitz
7
1101
1011 1100
0111 1101
0111
1000
1010
1000
1000
1010
8
1110
1101 1110
1110
1000
1001
1011
0110
1111
1011
9
1111
1111
1111
1001
1010
1100
1111
1110
1100
4.2.3. GRAY-OV KODNI SISTEM Veliki nedostatak prikazanih kodnih sistema je i sledeći (taj nedostatak kod nekih primena se pokazuje kao veoma značajan): Kodne reči dodeljene uzastopnim decimalnim ciframa razlikuju se u nekoliko (više od jednog) bitova. Naprimer u NBC kodnoj tabeli sa 1 na 2 dodeljene kodne reči 0001 i 0010 razlikuju se u dva bita. Naj izraženija je ta razlika izmedju nivoa 7 i 8: kodna reč 0111 menja se na 1000, tojest promena je kod sva 4 bita.
Broj koji pokazuje u koliko bitova se razlikuju dve kodne reči nazivamo HAMINGOVOA udaljenost. Gray-ov kod ispravlja ovu nepravilnost, i uzastopnim decimalnim ciframa dodeljuje kodne reči čija je Hamingova udaljenost 1.
Neka su gN,
gN–1, ... , g2, g1 cifre u Gray-ovoj kodnoj reči kako slede s leva na desno (N je dužina reči, gi ∈{0,1}).
Obeležimo sa bN,
bN–1, ... , b2, b1 cifre NBC koda iste decimalne cifre, takodje u redosledu s leva na desno, bi ∈{0,1}.
k =N bN gk = bk +1 ⊕ bk k < N znak ⊕ oznažava ekskluzivnu disjunkciju, takozvanu "XOR" operaciju:
⊕
0
1
0
0
1
1
1
0
NIVO 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 nastavite! ↓
NBC kod 00000 00001 00010 00011 0010 00101 00110 00111 01000 01001 01010 01011 01100 01101 01110 01111 10000 10001 10010 nastavite! ↓
31
11111
Gray - 3 000 001 011 010 110 111 101 100
Gray - 4 0000 0001 0011 0010 0110 0111 0101 0100 1100 1101 nastavite! ↓
Gray - 5 00000 00001 00011 00010 00110 00111 00101 00100 01100 01101 01111 01110 nastavite! ↓
NBC
Gray
1
1
0
1
1
0
1
1
0
0
1
1
0
⊕
⊕
⊕
⊕
⊕
⊕
⊕
⊕
⊕
⊕
⊕
1
0
1
1
0
1
0
1
0
1
⊕
⊕
⊕
⊕
⊕
⊕
⊕
⊕
⊕
⊕
1
1
0
1
1
0
0
1
1
0
1 ⊕
NBC
1
0
Tabela prikazuje „prevodjenje” dvanaestoslovne NBC kodne reči 101101100110 na Gray-ov kod i „inverzno prevodjenje”. Primena ekskluzivne disjunkvije (XOR) na prikazani način umnogome olakšava to prevodjenje.
4.2.4. SIMBOLIČKI KODNI SISTEMI Simbolički kodni sistemi služe za kodiranje slova i ostalih znakova za pisanje korišćenih u govornim jezicima. Videli smo da je za kodiranje decimalnih cifara bilo dovoljno koriščenje “tetrada” čak je još i ostalo neiskorišćenih kodnih reči. Skupimo sada sva slova i znakove koje je potrebno kodirati ako “prevodimo” pisani tekst. Sledimo logiku sastavljača kodova: engleska abeceda ima 26 slova (velika i mala slova – ukupno 52), i cifre je potrebno kodirati na ovaj način (10 znakova), takozvani interpunkcijski znakovi (tačka, zapeta, dvotačka, upitnik, uskličnik, zagrade, itd..) recimo 25 znakova, ukupno to je najmanje 87 znakova. Za kodiranje tog skupa moramo upotrebiti sedmoslovne kodne reči, jer je broj šestoslovnih reči nedovoljan (26 = 64). Dodelimo zato elementima navedenog skupa sedmoslovne kodne reči.
Očevidno, to dodeljivanje i sada može biti potpuno proizvoljno, ali moće da sledi i odredjenu logiku. Bilo kakvo je dodeljivanje, jedan princip mora biti ispunjen, a to je jednoznačnost! Evo jedne kodne tabele koja je poznata kao ASCII tabela (American Standard Code for Information Interchange). *
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
0
NUL
SOH
STX
ETX
EOT
ENQ
ACK
BEL
BS
TAB
LF
VT
FF
CR
SO
SI
1
DLE
DC1
DC2
DC3
DC4
NAK
SYN
ETB
CAN
EM
SUB
ESC
FS
GS
RS
US
!
"
#
$
%
&
'
(
)
*
+
,
-
.
/
2 3
0
1
2
3
4
5
6
7
8
9
:
;
<
=
>
?
4
@
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
5
P
Q
R
S
T
U
V
W
X
Y
Z
[
\
]
^
_
6
`
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
7
p
q
r
s
t
u
v
w
x
y
z
{
|
}
~
Umesto binarnih kodnih reči iz te tabele možemo da pročitamo odgovarajuće heksadecimalne vrednosti. Na primer slovo A se nalazi u horizontalnom redu sa oznakom 4 i u vertikalnoj koloni sa oznakom 1. prema tome: A → 41(H) = 0100 0001(2) = 65(decimalno)
Primećujemo, da te kodne reči nisu sedmoslovne, već osmoslovne. Osmi bit, koji nam se čini da je potpuno suvišan, ima jednu veoma važnu funkciju: kontrola tačnosti kodne reči! Nazovimo taj osmi bit bitom pariteta. Ako je u sedmobitnom delu kodne reči imamo neparan broj jedinica, tada bitu pariteta dodelimo vrednost 0, odnosno, ako je u sedmobitnom delu imamo paran broj jedinica, tada dodelimo paritenom bitu vrednost 1. Ovim se postiže, da je broj jedinica u osmobitnoj reči uvek neparan. Očevidno, upotreba paritetnog bita moguća je i u obrnutom smislu (0, ako u sedmobitnom delu ima paran broj jedinica, i 1 ako u sedmobitnom delu imamo neparan broj jedinica), tada u osmobitnoj reči uvek imamo paran broj jedinica. Primer za primenu oba pariteta:
Karakter
7 bitni kod
broj jedinica
8 bitni kod 8 bitni kod neparan paran
E
100 0101
3
0100 0101
1100 0101
e
110 0101
4
1110 0101
0110 0101
Brzo širenje upotreba računara izvan engleskog govornog područja učinilo je kodni sistem baziran na 26-toslovnoj engleskoj abecedi „nedovoljnim”, pa skup sedmobitnih kodnih reči postao usko grlo. Pored takozvanog medjunarodnog skupa slova pojavili su se još i noviji tipografski znaci, koji su morali biti takodje kodirani. Sve to dovodi do potrebe proširenja originalne ASCII tabele novim znacima. Sledi nekoliko ilustracija proširenja izvorne ASCII tabele, pro proširenje koje upotrebljava DOS:
Extended ASCII Codes (8th bit => 28) These were added later & are not true ASCII. There are different extended sets, but this is the most common
Pri dnu slajda su brojevi, koji su linkovi na različite kodne tabele. Sve tabele su izrasle na izvornoj ASCII tabeli. Broj 1 vodi nas na tabelu ISO8859 standarda sa proširenjem LATIN-1. WINDOWS sistemi upotrebljavaju ANSI tabelu, do koje nas vodi link na broju 2, na linku 3 možemo videti paralelno dva proširenja ASCII tabele, Kodna tabela EBCDIC se upotrebljava uglavnom u velikim računarima firme IBM. Ovu tabelu možemo pogledati koristeći link broj 4.. Sve kodne tabele se nalaze uglavnom u svim knjigama koje se bave osnovama računarstva.
Nekoliko zadataka: 1. Formirajte kodni sistem baziran na brojnom sistemu sa osnovom 3. Neka je to „ternarni” ili NTC kodni sistem koji, slično NBC sistemu, odnosi se samo na decimalne cifre. Koliko slova imaju te kodne reči, koliki je neupotrebljeni broj reči?
2. Izvršite binarno kodiranje sledeća tri broja sa svakim binarnim kodom, koji je prikazan na slajdu 10 ove prezentacije:
a) 325,333... b) 962.0101 c) 546576.23 .
3. Dat je binarni broj: 1101101101111: a) Ako to nije u Gray kodu, kako glasi “prevod” na Gray kod? b) Ako je to Gray-ov kod, kako glasi NBC kod tog broja?
4. Kako glasi ASCII kod reči MIKROPROCESOR ako upotrebite neproširenu (sedmobitnu) ASCII tabelu + paritetni bit :
a) sa neparnim paritetoml, b) sa parnim paritetom.
5. Izvršite ANSI kodiranje reči (pazite na velika i mala slova): Šišmiš i Žaba:
a) binarno (osmobitne kodne reči = bajtovi), b) oktalno, c) heksadecimalno.
6. U DOS okruženju posle prompta C:\> napravite prozor sa 4 okna koristeći simbole tabele: levi gornji ugao desni gornji ugao, itd upotrebom nuzmeričke tastature i tastera.
Primedba: I osnovni ASCII karakteri, ali i karakteri iz proširenog skupa mogu se “pozvati” na ekran držanjemtastera i ukucavanjem na numeričkoj tastaturi odgovarajuće decimalne vrednosti ASCII koda.
Kontrolna pitanja: 1. Šta podrazumevamo pod pojmom karaktera u računarstvu? 2. Navedite tipove karaktera. 3. Šta znači kodiranje? 4. Šta se podrazumeva pod pojmom kodnog sistema? 5. Koji su osnovni razlozi postojanja kodova i kodiranja? 6. Navedite osnovna svojstva ponderisanih BCD tetrada! 7. Zašto se upotrebljava binarno kodiranje, a ne neko drugo? 8. Šta je Hamingovo odstojanje kodnih reči? 9. Definišite način formiranja Gray-ovog koda.
10. Navedite svrhu upotrebe i način formiranja ASCII koda. 11. Koliko elemenata ima osnovni skup ASCII kodova. Koliko bitova sadrži svaka pojedinačna kodna reč? 12. Šta predstavlja bit pariteta? 14. Navedite razloge koji su doveli do proširenja ASCII koda. 15. Gde se upotrebljava ANSI kodna tabla? 16. Šta znači i gde se koristi EBCDIC kodni sistem?
4.3. ALGORITMi 4.3.1. POJAM ALGORITMA I ALGORITAMSKE STRUKTURE Algoritam je konačan niz koraka koje je potrebno izvesti za rešavanje nekog zadatka. Pod korakom podrazumevamo primenu nekog jednoznačno formulisanog pravila. Koje su karakteristike svakog algoritma?
Konačnost, Jednoznačnost, Izlaz, Ulaz, Efikasnost. Šta pojedinačno znači svaka od navedenih karakteristika?
Računar u toku rada izvršava algoritme, koje je programer napisao na pogodnom i jasnom jeziku, - na jeziku koji je „razumljiv” računaru.
Simboli za grafičko predstavljanje algoritama ou t
in
x, y
a,b,c,d,e,f
IZLAZ
ULAZ 1
D=0
ae-bd → D
0
ODLUKA
OBRADA
POTPROGRAM
SUBROU(A1 ,A2 ,...,An )
KONEKTORI
POČETAK/KRAJ 1
START STOP
3
Prosta linijska struktura algoritama START
Početak
in
a,b,c,d,e
Ulaz početnih vrednosti
a+b → b b+c → c
Operativni koraci
c+d → d d+e → e out
Izlaz rezultata
a,b,c,d,e
Završetak STOP
Razgranata linijska struktura algoritama START
Ulaz početnih vrednosti
in
a,b,c,d,e
Odluke
a>b
1
0 1
a
c+d+e → r
Izlaz. Samo je r novo!
c*d*e → r
out
a,b,c,d,e,r
STOP
(c+d) e → r
Ciklička algoritamska struktura (ciklus sa brojačem) START in
A∈R n ∈N
A, n 1 → S
n =0
1
0
S=An
n - 1 → n out
A*S → S
S
STOP
Ciklička algoritamska struktura (ciklus sa sa kontrolom tačnosti) START in
Z,
Z ≥0 ε>0
ε
Z+1 → a (a+Z/a)/2 → V
|a-V|<ε 0
V→a
1
V≈√ Z ou t
V
STOP
Način testiranja kriterijuma izlaska iz cilkusa Testiranje pre jezgra: ‘pretestiranje’
?
.......
1
.......
0
.......
Testiranje posle jezgra: ‘posttestiranje’
.......
.......
....... .......
....... .......
Jezgro ciklusa
1
? 0
.......
Organizacija više ciklusa u algoritmu
?
0
1
?
0
1
?
0
1
9
0
? 1
KONCENTRIČNA SERIJSKA 0
? 1
.......
.......
LOŠA!
?
1
1
....... 0
0
?
0
? 1
9
4.3.2. NUMERIČKI ALGORITMI Prikazaćemo nekoliko numeričkih algoritama koji su karaktreristični za pojedine strukture. Normalno je, da prilikom pisanja programa programer treba da ulaz i izlaz “okruži” sa odgovarajućim tekstom. Još jedna važna napomena: algoritmi ne sadrže korake “odbrane” od slučajnih ili namernih greški na ulazu, to programer sam treba da ugradi u izvorni kod programa.
4.3.2.1. POLINOMI Uočimo sledeća dva polinoma: Pn(x) = anxn + an-1xn-1+ ... + a2x2 + a1x + ao Qm(x) = bmxm + bm-1xm-1+ ... + b2x2 + b1x + bo
Ulazni podaci su koeficijenti polinoma. Odrediti zbir, razliku i proizvod data dva polinoma.
START
Sabiranje/oduzimanje polinoma
in
n,m,j
n< m
Ulaz stepena polinoma
0
1
n→k
m→k
0→i
„Izjednačavanje” stepena polinoma
0 → ai 0 → bi
i=k
0
i+1 → i
„Zauzimanje mesta”
1
Učitavanje polinoma P
0→i in
ai
i=n 1
1
0
i+1 → i
sledi nastavak
1
nastavak
0→i in
Učitavanje polinoma Q
bi
i=m
0
i+1 → i
1
j=1
0
1
−1 → s
1→s
Da li je sabiranje ili oduzimanje?
0→i
Izvršavanje operacije
a i +s*b i → ci
i=k
0
i+1 → i
1
0→i ou t
Ispisivanje izlaznih vrednosti
ci
i=k 1
STOP
0
i+1 → i
Množenje polinoma
START in
n,m 0 → i
Učitavanje stepena polinoma
in
ai
i=n
0
i+1 → i
1
0 → i
Učitavanje koeficijenata
in
bi
i=m
“Zauzimanje mesta” proizvoda
0
i+1 → i
1
n+m → k
0 → i
0 → ci
sledi nastavak
i=k 1 A
0
i+1 → i
A
nastavak
0→i
0→j
Izvršava množenje u okviru dva koncentrična ciklusa
a i *b j +ci +j → ci +j
j=m
0
j+1 → j
0
i+1 → i
1
i=n 1
0→i
Ispisivanje rezultata
out
ci
i=k 1
STOP
0
i+1 → i
4.3.2.2. NIZOVI I MATRICE
MATRIXIN( a, n, m)
Skup koeficijenata polinoma takodje tretiramo kao nizove (posebno je važno da uočimo: početni indeks je 0 a ne 1. U slučaju „običnih” nizova po pravilu koristimo početni index 1 a završni n, dok kod matrica koristimo opseg od 1 do n, odnosno od 1 do m
in
n,m 1→i 1→j in
ai j
j=m 1
i+1→i
0
i=n
RET
0
j+1→j
POTPROGRAM za učitavanje elemenata matrice tipa n,m sa pojedinačnom kontrolom
MATRIXIN( a, n, m) in
n,m i = 1,n j = 1,m
POTPROGRAM za učitavanje elemenata matrice tipa n,m orijentisan na programski jezik. MATRIXOUT( a, n, m)
in
ai j
in
n,m i = 1,n
RET
j = 1,m out
POTPROGRAM za ispisivanje elemenata matrice tipa n,m orijentisan na programski jezik.
ai j
RET
START MATRIXIN(A,N,M)
MATRIXIN(B,N,M)
i = 1,N j = 1,M
Učitavanje elemenata matrice AiB SABIRANJE elemenata matrica Dva koncetrična ciklusa
Ai j +Bi j → Ci j
MATRIXOUT(C,N,M) STOP
Ispisivanje elemenata zbira – matrica C
START MATRIXIN(A,N,M)
MATRIXIN(B,M,K)
Učitavanje elemenata matrice AiB
i = 1,N j = 1,K 0 → Ci j
MNOŽENJE elemenata matrica Tri koncetrična ciklusa
p = 1,M
Ai p * Bpj +Ci j → Ci j
Ispisivanje elemenata proizvoda – matrica C MATRIXOUT(C,N,K) STOP
START a ? c b
in
a,b,c
b
0
1
a→m
4.3.2.3. UREDJENJE BROJEVNIH SKUPOVA I SREDNJA VREDNOST
b→a m→ b
c
Uredjenje tri broja po veličini
0
1
c→m b→c 0
m
m→b
a→b m→ a
ou t
a,b,c
STOP
a≤b≤c
a
Uredjenje N brojeva u rastući redosled I
1→i Ai → min i +1 → j
START j>N
in
N
1
b
0 0
1→i
min → Ai 1→i
Aj < min 1
in
Ai
i=N
out
Aj → r 0
i+1 → i
i +1 → i
min → Aj
i=N 1
1
a
0
Ai
r → min
STOP i +1 → i
j +1 → j 1
i
b
a
START
Uredjenje N brojeva u rastući redosled II
in
N
1→i
1→i
i→m i +1 → j
in
Ai
i=N
0
j>N
i+1 → i
0
1
a
1
0
Am → r
b
Ai → Am
1→i
Aj < Am 1
j→m
r → Ai
out
i +1 → i
j +1 → j
i +1 → i 1
i
b
0
Ai
i=N 1
STOP
a
Uredjenje N brojeva u rastući redosled III
1→i 0 → sig i +1 → j
START
j>N
1
in
0
N 0
1→i
sig > 0
Aj < Ai
1
0 1
in
i=N 1
1→i
Aj → r
Ai 0
i+1 → i
Ai → Aj
out
Ai
r → Ai i=N
a sig +1 → sig
1
STOP i +1 → i
0
i +1 → i
START in
n
Varijante za izračunanje srednje vrednosti i standardne devijacije
START 0→E 0→E 0→D 0→D 1→i 0→n in in
ai
a
a*a + D → D
ai + E → E n+1 → n a i *ai + D → D a=0 i=n 1
0
i+1 → i
1
E/n → E
E/n → E D/n + E2 → D D/n + E2 → D D1 /2 → D
D1/2 → D ou t
E, D, n out
E, D
STOP
STOP
a+E→ E 0
ARCTG( X )
4.3.2.4. TRIGONOMETRIJA I π
in
X,
ε
0 → atgx
Učitavanje proizvoljnog broja X i ε
X→ Z
FUNKCIJA ili POTROGRAM
1→n
|Z|<ε 0
Izračunat ugao u radijanima: arctg(X)
1
out
atgx
atgx + Z → atgx n+2→n RET (-1)*Z*X2 → B B/n→Z
Povratak u glavni program RETURN
START
GLAVNI PROGRAM za izračunanje π upotrebom potprograma arctg(X)
ARCTG(1/8) 24*atgx → A ARCTG(1/57) 8*atgx → B ARCTG(1/239) 4*atgx → C A+B+C → pi out
pi
STOP
π Shanks & Wrench
Ulazni podaci: mera ugla u stepen/minut/ sekunda i tačnost računa 0 < do< 90 0 < m'< 60 0 < s''< 60 ε >0
SINDEG(d, m , s)
d, m, s,
a
ε |Z|<ε
3.14159265...→ pi out
d+(m+s/60)/60 → xdeg
sinx + Z → sinx n+2→n
(xdeg*pi)/180 → X
RET n * (n-1) → D
0 → sinx
Konverzija na radijansku meru
sinx
X→ Z 1→n a
(-1)*Z*X2 → B B/D→Z
START in
4.3.2.5. PRIMBROJEVI I MAGIČNI KVADRATI
N
1→j 2→i N→ m
ERATOSTENOVO SITO primbrojevi do N
0 → cj 0 → dj
1→Q 2
3 Q +1 → Q
1
Q*i
1
(nastavak)
1
0
Q*i=m
3
(nastavak) 1
dj = 0
Q→m 0
i → dj
j+1→j
1 + cj → c j
i+1→i
m=1
d1 = 0
2
0
0
1
1→k i > N1 /2 ou t
1
d k, ck
o ut
N "prime" k+1→k
k
0
0
STOP
ERATOSTENOVO SITO primbrojevi do N
START in
X
A1 > X
A1≤ A2≤ A3≤ ... ≤ AN
1
0
AN < X 0
X
1
out
"error" 1→k
Da li pripada ulazni broj X datom skupu brojeva?
STOP 2k → k
1
k
k/2 → k
(nastavak)
k→L
a
a
1
Ak < X 0
(nastavak)
1
Ak > X
L=1
1
0
1
L=1 0
0
L/2 → L
L/2 → L k+L → k
k+1 → k
k-L → k
k-1 → k X=A k
0
Da li pripada ulazni broj X datom skupu brojeva?
A k ≤ X < A k+1
k>N 1
L/2 → L k-L → k
A k -1 < X ≤ A k
o ut
k
STOP
Magični kvadrat sa neparnim brojem polja
1
2a k+1
k+1
k
Ovo je glavno pravilo!
k
2b
3a k
?
3b
k k+1
k k+1
k+1
Ostala pravila za slučajeve prinudne primene
START in
M 2*M+1 → N
Popunjavanje polja magičnog kvadrata sa neparnim brojem polja
i=1,N 1
j=1,N
j>N 0
1→j 0→Aij 1
Aij=0 0
k→1
1
0
1→i
i+2→i
m+1→j
j-1→j
k→Aij k +1 → k
1
i=1,N
k > N2 0
i -1 → i j=1,N j +1 → j
out
Aij i=0 0
STOP
j>N
1
N→ i
START in
A šta je ovo? Da li je uvek konačno?
M M→ k 1→n k → cn
max(cn )=?
1→q
q+1 → q
1
2*q < k 0
2*q = k
1
0
q→k
3*k+1 → k
0
n+1→n
Ako 1, stani!.
k=1 1
1→i
o ut
Ako je paran – polovi ga, ako je neparan – množi ga sa 3 i dodaj mu 1
i+1→i
0
ci
i
STOP
?( n < ∞ )?
START Fibonacci
in
N= 2 A 1 = A 2 = b1 = b2 = 1 M = 3,4,5,...
N, M 1→i in
Ai , b i
i
1
Uopšteni Fibonaccijev niz.
i+1 → i
0
i
0
1
1→i
i+1 → i 0 → Ai
1→j Ai + b j * Ai -N+j → Ai
1
j=N 0
j+1 → j
out
Ai
i
STOP
1
i+1 → i
Kontrolna pitanja (1). 1.
Odredite pojam algoritma!
2. Koje su karakteristike ispravnih algoritama? 3. Šta znači konačnost algoritma? 4. Šta znači jednoznačnost algoritma? 5. Šta znači zahtev ulaza/izlaza kod algoritma? 6. Šta znači kriterijum efikasnosti algoritma? 7. Koje standardne simbole upotrebljavamo za grafičko predstavljanje algoritama?
Kontrolna pitanja (2). 8.
Koje su osnovne strukture algoritama?
9. Koje su karakteristike prostih linijskih struktura? 10. Koje su karakteristike razgranatih linijskih struktura? 11. Koje su karakteristike cikličkih struktura? 12. Koji glavni tipove izlaznog kriterijuma postoje? 13. Izvršite klasifikaciju cikličkih struktura po položaju izlaznog kriterijuma u odnosu na jezgro ciklusa. 14. Koje su ispravne organizacije cikličkih algoritama i koja je najčešća pogrešna? 15. Koje početne vrednosti je neophodno postaviti kod “sabiračkih“ ciklusa? 16. Koje početne vrednosti je neophodno postaviti kod ciklusa za izračunavanje proizvoda niza brojeva?
Kontrolna pitanja (3). 17. Kako rešiti pitanje deljivosti broja A sa brojem B (sa ostatkom) bez primene operacije deljenja? 18. Šta znači u algoritmu (odnosno u odgovarajućem programskom koraku) dodeljivanje f(a)→a, gde ista promenljiva se javlja na obe strane? 19. Pokažite jednostavni primer “beskonačnog” algoritma! 20. Da li Vam je poznato, do koje decimale su izračunali poznati proizvodjači hardvera na svojim “svemoćnim” mašinama broj π ? Porazmislite o pitanju: ipak, i kapacitet najmoćnijih mašina je konačan! Ako bi smo imali računar sa “beskonačnim kapacitetom”, kabo bi izračunali broj π do proizvoljno velikog broja decimala tačnosti? Sačinite algoritam!
4.4. BOOLE-OVE OPERACIJE Radi proučavanja BOOLE-ovih funkcija odabraćemo područje matematičke logike, kao modela BOOLE-ove algebre. Elementi skupa proučavanja su iskazi. Znak istinite logičke konstante je 1, a neistinite je 0. Operaciju disjunkcije u daljem ćemo pominjati kao logičko sabiranje, a i znak će biti: » + «. Konjunkcija je logičko množenje i slično množenju brojeva, obeležavamo ga sa: » ⋅ « ali samo po potrebi – u većini slučajeva prosto taj znak izostavljamo. Znak negacije je gornja zapeta, odnosno “apostrof“: » ’ «. Iz praktičnih razloga nabrajamo aksiome BOOLE-algebre sa sada dogovorenim simbolima:
Aksiomi BOOLE algebre I.
x + y ∈ L,
x ⋅ y ∈ L,
x’, y’, z’ ∈ L;
II.
x + x = x,
x ⋅ x = x;
III.
x + y =y + x,
x ⋅ y = y ⋅ x;
IV.
(x + y) + z = x + ( y + z),
(x ⋅ y) ⋅ z = x ⋅( y ⋅ z);
V.
x + (x ⋅ y) = x,
x ⋅ (x + y ) = x;
VI.
x ⋅(y + z ) = (x ⋅ y) + (x ⋅ z),
x + (y ⋅ z ) = (x + y) ⋅ (x + z);
VII.
x + 1 = 1,
x ⋅1 = x;
VIII.
x ⋅ 0 = 0,
x + 0 = x;
IX.
0 ≠1.
BOOLE-ove funkcije Broj preslikavanja oblika B2 → B je konačan: skup sa 4 elementa možemo preskikati na (u) skup sa 2 elementa na svega 16 različita načina ( B = {0,1} ):
p q
1 2 3 4 5 6 7 16 15 14 13 12 11 10
8 9
9 8
10 11 12 13 14 15 16 7 6 5 4 3 2 1
0
0
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
0
1
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
1
0
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
1
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
Očevidno, izlišno je proučavati sve kolone, jer su kolone 16 – 1 negacije odgovarajućih kolona 1 – 16. Uočavamo sledeće: 2. kolona je poznata operacija konjunkcije – logičko množenje, 8. kolona je logičko sabiranje (disjunkcija). 1. kolona je konstantno preslikavanje na 0, i zato nije interesantna. 4 i 6 kolona takodje nije „uzbudljiva” jer nisu prave operacije sa dve promenljive: zavise samo od jedne ulazne vrednosti (samo od p ili samo od q). Lako se dokazuje tvrdjenje, da sve ostale operacije možemo izraziti upotrebom logičkog sabiranja, logičkog množenja i sa jednom operacijom jedne promenljive: negacijom Ispravnije rečeno: po toj teoremi je dovoljna samo jedna operacija sa dve promenljive i negacija za izražavanje svih ostalih operacija sa dve promenljive. Medjutim takva redukcija dovodi do preterane dužine i prostijih logičkih izrazail, pa zato zadržimo se na primeni navedene dve operacije sa dve promenljive i negacije.
4.4.1. BOOLE-ovi izrazi BOOLE-ovi izrazi su: a)
BOOLE-ove konstante 0 i 1, i BOOLE-promenljive: a, b, c,…;
b)
Ako su A i B BOOLE-ovi izrazi, tada su BOOLE-ovi izrazi i A+B, A⋅B i A’;
c)
BOOLE-ovi izrazi se dobijaju samo na način opisan u tački a. i b.
Elementarni proizvod (konjunkcija) je proizvod konačnog broja BOOLE-ovih promenljivih u afirmativnoj ili negiranoj formi. Elementarna konjunkcija je, naprimer p’⋅ q ⋅ r’⋅ s ⋅ t’, ili ab’c’d. U prvom izrazu smo upotrebili znak operacije, a u drugom smo ga izostavili.
Elementarni zbir (disjunkcija) je zbir konačnog broja BOOLE-ovih promenljivih u afirmativnoj ili negiranoj formi. Elementarna disjunkcija je, naprimer p’ + q + r’ + s + t’, ili a + b’ + c’ + d.
BOOLE-ov izraz je disjunktivna normalna forma, ako i samo je sačinjen od zbira (disjunkcija je) konačnog broja elementarnih proizvoda (konjunkcija), pri čemu sabirci nisu medjusobno implikante. Skraćena oznaka "disjunktivne normalne forme" je DNF. Primeri DNF: a + bc + a’c, pq + p’q’,
x y z + x’ + y’ z’
m Disjunktivna normalna forma je perfektna (savršena) disjunktivna normalna forma dužine n (PDNF), ako svaki sabirak sadrži svaku od n promenljivih (u afirmativnom ili negiranom obliku). Nekoliko PDNF: sa 3 promenljive: a’b’c’ + a’bc + abc’, sa 4 promenljive: p’qr’s + pq’r’s + p’q’r’s + p’qrs + pqrs Članove PDNF nazivamo i mintermi.
BOOLE-ov izraz je konjunktivna normalna forma, ako i samo ako je proizvod (konjunkcija) konačnog broja elementarnih zbireva (disjunkcija), pri čemu činioci nisu medjusobno implikante. Skraćenica za "konjunktivne normalne forme" je KNF. Nekoliko KNF: a’(b’+c’)( a+ c’) ,
(p+q+r)( p’+q’), (x + y + z) x’ ( y’ + z.’) Konjunktivna normalna formara je perfektna (savršena) konjuntivna normalna forma dužine n (PKNF) ako i samo ako svaki činilac sadrži kao sabirke svaku od n promenljivih (u afirmativnom ili negiranom obliku). Nekoliko KDNF: sa 3 promenljive: (a’+b’+c’)(a’+b+c)(a+b+c’), 4promenljive:
(p’+q+r’+s)(p+q’+r’+s)(p’+q’+r’+s)(p’+q+r+s)(p+q+r+s) Činioce PKNF nazivamo maxtermi.
4.4.1.1. Savršene normalne forme BOOLE-ovih izraza BOOLE-ova funkcija je svako preslikavanje tipa Bn → B, gde je B ={1, 0} i n ∈ N. Očevidno, svaka od tih funkcija mora biti zadata na neki način. Neka je način zadavanja tablički. BOOLE-ova funkcija sa n promenljivih ima 2n različite kombinacije vrednosti ulaznih argumenata (od 2 elemenata moguće je sačiniti 2n varijacija n-te klase sa ponavljanjem). Ove varijacije možemo da nabrojimo na različite načine, ali radi obezbedjenja iscrpljivanja svih mogućnosti odaberimo rastući redosled binarnih vrednosti od (0, 0, 0, … , 0) do (1, 1, 1, … , 1).
Data je tabela BOOLE-ove funkcije f(x1, x2, x3, …, xn) :
x1
x2
x3
0
0
0
... ...
xn-2
xn-1
xn
f(x1, x2, x3, …, xn)
0
0
0
f(0,0,0,…,0,0,0)
0
0
1
f(0,0,0,…,0,0,1)
0
0
0
...
...
...
...
...
...
...
...
1
1
1
...
1
1
0
f(1,1,1,…,1,1,0)
1
1
1
...
1
1
1
f(1,1,1,…,1,1,1)
Zadatak je: sačiniti BOOLE-ov izraz čije se vrednosti poklapaju sa vrednostima date funkcije. U formiranju tog izraza važnu ulogu imaju sledeće činjenice i oznake: a1 = a i ao = a’ Bez dokaza navodimo teoremu po kojoj se formiraju PDNF odnosno PKNF za BOOLE-ove funkcije zadate tabličkim načinom. Svaka tablički zadata BOOLE-ova funkcija f(x1, x2, x3,…, xn) moguće je zapisati na sledeći način: PDNF:
an a1 a2 ⋅ ⋅ ⋅ ⋅ ... f ( a , a ,..., a ) x x ... x f(x1, x2, x3,…, xn) = ∑∑ ∑ 1 2 n n 1 2 a1 a2
PKNF:
an
f(x1, x2, x3,…, xn) =. ∏∏ ∏( f (a , a ,...,a ) + x ...
a1
a2
1
an
2
n
a1′ 1
′
+ x2a2′ + ... + xnan
)
Jednostavni primer za BOOLE-ov izraz sa 3 promenljive: Tabela vrednosti „nepoznatog” izraza i formiranje PDNF: a
b
c
f(a,b,c)
f(a,b,c) =
0
0
0
0
= f (0,0,0) ⋅ ao ⋅ bo ⋅ co + f (0,0,1) ⋅ ao ⋅ bo ⋅ c1 +
0
0
1
1
+ f (0,1,0) ⋅ ao ⋅ b1 ⋅ co + f (0,1,1) ⋅ ao ⋅ b1 ⋅ c1 +
0
1
0
1
+ f (1,0,0) ⋅ a1 ⋅ bo ⋅ co + f (1,0,1) ⋅ a1 ⋅ bo ⋅ c1 +
0
1
1
0
+ f (1,1,0) ⋅ a1 ⋅ b1 ⋅ co + f (1,1,1) ⋅ a1 ⋅ b1 ⋅ c1 =
1
0
0
1
= 0 ⋅ a’ ⋅ b’ ⋅ c’ + 1 ⋅ a’ ⋅ b’ ⋅ c + 1 ⋅ a’ ⋅ b ⋅ c’ +
1
0
1
0
+ 0 ⋅ a’ ⋅ b ⋅ c + 1 ⋅ a ⋅ b’ ⋅ c’ + 0 ⋅ a’⋅ b’ ⋅ c +
1
1
0
0
+ 0 ⋅ a ⋅ b ⋅ c’ + 1 ⋅ a ⋅ b ⋅ c =
1
1
1
1
= a’ ⋅ b’ ⋅ c + a’ ⋅ b ⋅ c’ + a ⋅ b’ ⋅ c’ + a ⋅ b ⋅ c.
Prvi proizvod u PDNF odredjuje se na osnovu pridruživanja (0,0,0)→0 na sledeći način: f (0,0,0) ⋅ao⋅bo⋅co , drugi proizvod je na osnovu (0,0,1)→1 ima sledeći oblik: f (0,0,1)⋅ao⋅bo⋅c1 , itd. Na kraju ti proizvodi se saberu.
PKNF iste funkcije formira se na sledeći način: Svakoj kombinaciji ulaznih vrednosti odgovara jedan elementarni zbir. Pridruživanje (0, 0, 0) → 0 odredjuje zbir (f (0,0,0)+a1+b1+c1), pridruživanju (0,0,1)→1 odgovara zbir (f (0,0,1)+a1+b1+co ), itd. Na kraju ove zbirove medjusobno pomnožimo.
f(a,b,c) = = (f (0,0,0) + a1 + b1 + c1) ⋅ (f (0,0,1) + a1 + b1 + co ) ⋅ (f (0,1,0) + a1 + bo + c1) ⋅ ⋅ (f (0,1,1) + a1 + bo + co ) ⋅ (f (1,0,0) + ao + b1 + c1 ) ⋅ (f (1,0,1) + ao + b1 + co ) ⋅ ⋅ (f (1,1,0) + ao + bo + c1 ) ⋅ (f (1,1,1) + ao + bo + co ) = = (0 + a + b + c) ⋅ (1 + a + b + c’ ) ⋅ (1 + a + b’ + c) ⋅ (0 + a + b’ + c’ )⋅ ⋅(1 + a’ + b + c) ⋅ (0 + a’ + b + c’) ⋅(0 + a’ + b’ + c) ⋅ (1 + a’ + b’ + c’)= = (a + b + c)⋅(a + b’ + c’)⋅(a’ + b + c’)⋅(a’ + b’ + c). Zaključak: U PDNF su prisutni samo oni proizvodi kao članovi (mintermi), koji odgovaraju uslovu f(a,b,c) = 1. U PKNF su prisutni samo oni zbirovi kao činioci (maxtermi), koji odgovaraju uslovu f(a,b,c) = 0.
4.4.1.2. Minimalne forme BOOLE-ovih funkcija Pojednostavljivanje BOOLE-ove funkcije je postupak čiji koraci svode izraz funkcije na jednostavniji izraz, koji ima ekvivalentnu logičku vrednost. Nakon konačnog broja takvih koraka više nije moguće stvoriti još jednostavniji izraz: ne smanjuje se broj disjunktivnih i konjunktivnih komponenti niti se smanjuje broj promenljivih u tim komponentama. Stigli smo do minimalne forme funkcije. Postupak se ne može smatrati sistematskim, jer ga sačinjavaju neki put i intuitivni koraci. često se dešava i to, da funkcija ima više ekvivalentnih minimalnih formi. Iskustveni metodi će pokazati i način iznalaženja tih višeznačnih minimalnih formi. Iz praktičnih razloga se zadržimo na minimalizaciji PDNF BOOLE-ovih funkcija. Algebarska minimalizacija (sada to nije predmet razmatranja) koristi “prošireni” sistem aksioma. Proširenje čine sledeća tri para aksioma:
X.
p + p’ = 1
i
p ⋅ p’ = 0 .
XI.
p + p’ ⋅ q = p + q
i
p ⋅ (p’ + q) = p ⋅ q.
XII.
(p + q)’ = p’ ⋅ q’
i
(p ⋅ q)’ = p’ + q’.
Tabelu BOOLE-ove funkcije uvek popunjavamo u rastućem redosledu binarne vrednosti kombinacija ulaznih promenljivih: od (0, 0, 0, … , 0) → f(0, 0, 0, …, 0) do (1, 1, 1, … , 1) → f(1, 1, 1, …, 1). Smatramo li te kombinacije binarnim brojevima, tada kombinaciji (0, 0, 0, … , 0) odgovara 0 u decimalnom brojnom sistemu, a kombinaciji (1, 1, 1, … , 1) odgovara decimalno 2n–1. Za kondenzovani način zapisivanja PDNF date funkcije koristimo takozvanu QUINE-ovu notaciju. Primer:
f(x,y,z,v) = = ∑(0, 1, 3, 7, 10, 13, 15). znači BOOLE-ovu funkciju koja ima vrednost 1 za one kombinacije ulaznih promenljivih čija decimalna konverzija ima vrednost 0, 1, 3, 7, 10, 13 i 15, tojest:
f(x,y,z,v) = ∑(0, 1, 3, 7, 10, 13, 15). 0
p q r s f
1
2
3
4
5
6
7
8
9
10 11 12 13 14 15
0 0 0 0 0
0
0
0
1
1
1
1
1
1
1
1
0 0 0 0 1
1
1
1
0
0
0
0
1
1
1
1
0 0 1 1 0
0
1
1
0
0
1
1
0
0
1
1
0 1 0 1 0
1
0
1
0
1
0
1
0
1
0
1
1 1 0 1 0
0
0
1
0
0
1
0
0
1
0
1
PDNF funkcije date ovom tabelom je:
f(x,y,z,v) = x’ y’ z’ v’ + x’ y’ z’ v + x’ y’ z v + x’ y z v + + x y’ z v’ + x y z’ v + x y z v .
4.4.1.3. Minimizacija BOOLE-ovih izraza metodom QUINE-a Minimizaciju perfeknih (savršenih) disjunktivnih normalnih formi funkcija metodom QUINE-a proučavamo na sledećem primeru. Odrediti minimalnu formu funkcije:
f(x.y,z,v) = ∑(0, 1, 3, 7, 10, 13, 15) = = x’ y’ z’ v’ + x’ y’ z’ v + x’ y’ z v + x’ y z v + x y’ z v’ + + x y z’ v + x y z v . Sada ćemo ispuniti takozvanu “prvu tabelu” u koju unosimo konjukcije prisutne u PDNF:
1. tabela
i
Konjunktivni član
parovi
0 1 3 7 10 13 15
x’ y’ z’ v’ x’ y’ z’ v x’ y’ z v x’ y z v x y’ z v’ x y z’ v xyzv
3 3 3 3 --3 3
Uporedimo svaku konjunkciju sa svakom drugom, i u koloni “parovi” sa obeležimo parove koji razlikuju se isključivo u stanju jedne jedine promenljive. Primećujemo, da kombinacija 10 ostala “sama”. Ispunimo sada drugu tabelu sa zajedničkim delovima pronadjenih parova! Očevidno, primenjuje se tautologija A B + A B ’ = A (B + B ’) = A.
U prvoj fazi ostala je jedna jedina prosta implikanta to je konjunkcija koja odgovara kombinaciji 10 x y’z v’.
2. tabela
i,j
Konjunktivni član
parovi
0,1 1,3 3,7 7,15 13,15
x’ y’ z’ x’ y’ v x’ z v yzv xyv
-----------
U drugoj fazi je uparivanje proizvoda je neuspešno. Da li to znači da je svaka od njih “nezamenljiva prosta implikanta”? Svakako, to nije slučaj! QUINE-ova minimizacija to pitanje rešava u drugoj fazi, pomoću jedne druge tabele.
U slučaju uspešnog uparivanja parove bi ustrojili u treću tabelu, i samo nakon nemogućnosti daljeg nastavka bi prešli na drugu fazu.
Tabela druge faze:
0 1 3 x’y’z’v’ x’y’z’v x’y’zv x y’z v’ x’y’z’ «* «* x’y’v * * x’z v «* yzv xyv -
7 x’yzv «* * -
10 xy’zv’ «* -
13 xyz’v’ «*
15 xyzv * «*
Implikante dobijaju po jednu vrstu. U prvu vrstu upisujemo implikantu iz 1. tabele (vrednost 10) a u ostale vrste upisujeme sve implikante iz 2. tabele. Obeležimo sada sa * poreklo implikante u odgovarajućoj koloni. U prvoj vrsti samo u koloni sa oznakom 10 stavljamo *, jer samo taj član sadrži tu implikantu. U vrsti stavljamo * u kolonu 0 i 1 (to se da pročitati iz tabele 2.), u trećoj vrsti * je u koloni 1 i 3 , itd.
Primećujemo, da neki mintermi imaju i više “naslednika” dok neki imaju samo jednog. Ti jedini naslednici su “nezamenljivi”. Ove implikante su elementarne ili proste implikante! Obeležimo ih sa «. Sledimo li ovaj tok misli, zadržimo implikantu x’y’z’ koja zamenjuje članove 0 i 1. Odmah se uočava, da je treća implikanta (možda) suvišna. Nastavimo tako dalje! Implikante koje su “zamenljive” prepoznajemo tako, što u svakoj koloni potrebno je smestiti tačno jedan znak «. U pogledu vrsta: ako u nekom smo morali upotrebiti jedanput, tada ga upotrebljavamo u svakoj koloni, gde je prisutna *. Implikante koje uopšte nisu dobile znak «* jesu suvišne, jer originalni term je “zamenila” neka druga implikanta. Prema tome, možemo izostaviti članove x’y’v i y z v. Minimalna forma funkcije f koju smo zadali na početku primera je:
f = x y’z v’ + x’y’z’ + x’z v + x y v
4.4.1.4. Minimizacija BOOLE-ovih izraza KARNAUGH-ivim metodom Metod KARNAUGH-a u suštini ima iste karakteristike kao metod QUINE-a: Korake, koji se zasnivaju na logičkim zakonima, obuhvata u tabele i na taj način ceo postupak čini preglednijim i “opipljivijim”. KARNAUGH-ov grafički postupak minimizacije je primenljiv na funkcije sa najviše 6 promenljivih, medjutim mi prikazujemo, i primenjujemo ga na funkcije sa najviše 4 promenljivih. Primenu na funkcije sa pet i šest promenljivih slušaoci mogu proučavati u zbirci zadataka [Perišić] iz predložene liste. Posmatramjmo sledeće tri tabele koje prikazuju mintermove sa dve, tri i četiri promenljive uvrštene u tabele po strogo odredjenim principima.
b b’
a ab ab’
a’ a’b a’b’
a c c’
Mintermi sa dve promenljive
abc abc’ b
c’
ab’c a’b’c a’bc ab’c’ a’b’c’ a’bc’ b’ b
Mintermi sa tri promenljive
a c
a’
a’
abcd’
ab’cd’
a’b’cd’
a’bcd’
abcd
ab’cd
a’b’cd
a’bcd
abc’d
ab’c’d
a’b’c’d
a’bc’d
abc’d’
ab’c’d’ a’b’c’d’ a’bc’d’
b
b’
b
Mintermi sa četiri promenljive
d’ d d’
PDNF date funkcije (sa 2,3 ili 4 promenljive) tim tabelema se prikazuje na sledeći način: polje koje “pripada” prisutnom mintermu obeležimo znakom . Prikažimo sledeću funkciju upotrebom te tabele!
f(p,q,r,s) = p’q’r’s + p’q r’s + p’q r s’ + +p q’r’s’ + p q’r s + p q r’s’ + p q r’s.
p
p’
s
r
r’
s’
q
q’
q
s
Izuzetno je važan pojam bazičnog četvorougla. Bazični četvorougao je skup takvih susednih polja, kod kojih svaki je obeležen sa znakom a zajedno čine formaciju jednog pravougaonika ili kvadrata. Bazični četvorouglovi su ili disjunktne oblasti, ili se delimično preklapaju. Ne smatraju se bazičnim četvorouglovima polja, koja zadovoljavaju zahteve za bazične četvorouglove, ali se celi nalaze unutar drugog bazičnog četvorougla. Bazični četvorouglovi mogu biti sledeće oblasti: a) jedno pojedinačno polje, b) dva susedna polja (horizontalno ili vertikalno), c) četiri susedna polja u nizu (horizontalno ili vertikalno), d) četiri susedna polja u okviru kvadrata 2×2, e) osam polja u pravougaoniku 4×2 (horizontalno ili vertikalno). f) šesnaest polja u kvadratu 4×4.
Za formiranje bazičnih četvorouglova moramo imati u vidu još jednu činjenicu: tabelu treba smatratu omotačem valjka, pa mogu biti susedna polja i kvadrati na levom i desnom rubu tabele, kao i na gornjem i na donjem rubu tabele. Nije teško uočiti, da kod susednih polja se uvek pokazuje razlika samo u stanju jedne promenljive. Prema tome na susedne mintermove važi zakon AB + AB’ = A . Ako su dva susedna minterma prisutna u PDNF date funkcije, tada se oni mogu zameniti jednom njihovom implikantom. Svi bazični četvorouglovi predstavljaju po jednu imlikantu, zajednički deo mintermova koji su prisutni u četvorouglu, izostavljajući promenljive, koje se nalaze u različitim stanjima. Cilj: pokriti svako obeleženo polje sa minimalnim brojem bazičnih četvorouglova. To znači dimenzije tih četvorouglova treba da su najveće u datim okolnostima. Konačno pokrivanje nije uvek jednoznačno, ali sve dobijene forme (koliko ih ima), jesu minimalne i ravnopravne.
1. PRIMER: Minimizirati KARNAUGH-ovim metodom funkciju
F(a,b,c,d) = ∑(0, 1, 2, 6, 8, 10, 11, 12) = = a’b’c’d ’+ a’b’c’d + a’b’c d ’ + a’b c d ’ + + a b’c’d ’ + a b’c d ’ + a b’ c d+ a b c’ d ’ a
a’
c
d
d’
c’
b
b’
d b
F (a,b,c,d) = a b’c + a’c d’ + a c’ d ’ + a’b’c’
2. PRIMER: Minimizirati KARNAUGH-ovim metodom funkciju
G(p,q,r,s) =∑(3,4,6,7,9,11,12,14,15) = = p’q’r s + p’q r’s’ + p’q r s’+ p’q r s + +p q’r’s + p q’r s + p q r’s’ + p q r s’ + p q r s p r
p’
q
s
r’
s’ s
q’
q
G(p,q,r,s) = p q’s + r s + q s’
4.4.2. GRAFIČKO PREDSTAVLJANJE OPERACIJA BOOLE-OVE ALGEBRE Neki od standardizovanih znakova za predstavljanje operacija BOOLE-ove algebre prikazani su na sledećoj slici:
X
Y
"NOT" → negacija: Y = X '
X Y
Z
"OR" →disjunkcija: Z = X +Y
X Y
Z
"AND" →konjunkcija: Z = X ⋅ Y
X Y
Z
"NOR" →negirana disjunkcija: Z = (X +Y)'
X Y
Z
"NAND" →negirana konjunkcija: Z = X ⋅ Y
4.4.3. BOOLE-OVI IZRAZI I LOGIČKA KOLA Prikažimo logičko kolo potpune PDNF i minimalizovane forme sledeće dve funkcije upotrebom simbola datih na prethodnoj strani: a)
H(a,b,c) = a’b’c’ +a’bc’ +a’bc +abc Hmin(a,b,c) = a’c’ + b c . b)
F(p,q,r,s) = p’q’r’s’ + p’q r’s’ + p q’r’s’ + p q r’s’ + p q r s.
Fmin(p,q,r,s) = r’s’ + p q r s.
a
a)
b c
Hmin
H
p
b)
q r s
Fmin
F
Kontrolna pitanja: 1. Šta su logički iskazi? 2. Kako se formira disjunkcija dva iskaza? 3. Kako se formira konjunkcija dva iskaza? 4. Šta je negacija jednog iskaza? 5. Šta podrazumevamo pod BOOLE-ovim izrazom? 6. U pogledu kombinatorike, koliko postoji BOOLE-ovih funkcija sa dve promenljive? 7. Koje BOOLE-ove funkcije sa dve promenljive se nalaze u opštoj upotrebi? 8. Navedite aksiome BOOLE-ove algebre. 9. Šta se podrazumeva pod pojmom disjunktivne normalne forme BOOLE-ove funkcije sa više promenljivih?
Kontrolna pitanja (2): 10. Šta se podrazumeva pod pojmom konjunktivne normalne forme BOOLE-ove funkcije sa više promenljivih? 11. Koji BOOLE-ov izraz je perfektna (savršena) disjunktivna normalna forma? 12. Koji BOOLE-ov izraz je perfektna (savršena) konjunktivna normalna forma? 13. Koji se osnovni principi primenjuju prilikom minimizacije BOOLE-ovih izraza? 14. Navedite Vama poznate postupke minimizacije! 15. Šta znači princip minimalnog pokrivanja u primeni Karnaughovog metoda? 16. Koji su osnovni simboli za predstavljanje logičkih operacija?