Verifikacija softvera 7.čas Marjana Šolajić, Ana Vulović Matematički fakultet, Univerzitet u Beogradu 11. decembar 2018 Sadržaj 1 KLEE Upotreba

Величина: px
Почињати приказ од странице:

Download "Verifikacija softvera 7.čas Marjana Šolajić, Ana Vulović Matematički fakultet, Univerzitet u Beogradu 11. decembar 2018 Sadržaj 1 KLEE Upotreba"

Транскрипт

1 Verifikacija softvera 7.čas Marjana Šolajić, Ana Vulović Matematički fakultet, Univerzitet u Beogradu 11. decembar 2018 Sadržaj 1 KLEE Upotreba Klee alata Otkrivanje grešaka Primer semantičke greške Primer greške u radu sa pokazivačima Pronalaženje inverza zadate funkcije Korišćenje C bibliotečkih funkcija i simboličkog okruženja Primer sa simboličkim argumentom komandne linije Maze KLEE Klee je javno dostupan alat koji se distribuira pod licencom NCSA otvorenog kôda Univerziteta Ilinois. Služi za simboličko izvršavanje programa i za automatsko generisanje test primera. Klee vrši analizu nad llvm kôdom i koristi SMT rešavač STP za proveravanje uslova ispravnosti koje generiše. Klee koristi nekoliko optimizacija i heuristika za poboljšavanje pokrivenosti kôda prilikom simboličkog izvršavanja. Ovaj alat koristi se i kao sastavni deo raznih platformi za razvijanje novih alata za analizu programa. Klee ima dva cilja: 1. da pokrije svaku liniju izvornog kôda u programu 2. da detektuje svaku opasnu operaciju ako postoji ijedna ulazna vrednost koja može da prouzrokuje grešku 1.1 Upotreba Klee alata Naredni primer će nas sprovesti kroz osnovne korake pripreme izvornog kôda za korišćenje alata. Razmotrimo kratak program u kome se testira funkcija koja proverava da li je učitan ceo broj paran: #include <stdio.h> int even(int x) { if(x%2==0) return 1; if(x%2) return 1; // nedostizna naredba int main(int argc, char* argv[]) { int x; scanf("%d", &x); printf("%d", even(x)); marjana@matf.bg.ac.rs ana vulovic@matf.bg.ac.rs 1

2 Možemo primetiti da je poslednja naredba u definiciji funkcije even nedostižna, odnosno da će se uvek izvršiti prvi ili drugi return u funkciji. Priprema programa za simboličko izvršavanje: 1. uključiti zaglavlje klee/klee.h 2. umesto učitavanja vrednosti promenljive koja nas zanima, označiti je simboličkom pomoću funkcije klee make symbolic 3. umesto korišćenja eksterne funkcije za ispis koju naš alat ne može da proveri, povratnu vrednost funkcije even ćemo vratiti preko povratne vrednosti funkcije main Argumenti funkcije klee make symbolic, redom: 1. adresa promenljive 2. veličina promenljive 3. naziv promenljive (proizvoljna niska karaktera) Opciono: primetili smo da je poslednja linija funkcije even nedostižna, ali to možemo i potvrditi pozivom funkcije klee assert(0), što će signalizitati grešku alatu ukoliko bude postojala putanja kojom se dolazi do poziva ove funkcije. U slučaju da takva putanja ne postoji, neće biti signalizirana greška i potvrdiće se pretpostavka da ne postoji ulaz za koji je ta naredba dostižna. Napomena: korišćenje funkcije klee assert zahteva uključivanje zaglavlja assert.h. Program even.c, nakon izmena: #include <stdio.h> #include <assert.h> #include <klee/klee.h> int even(int x) { if(x%2==0) return 1; if(x%2) klee_assert(0); return 1; // nedostizna naredba int main(int argc, char* argv[]) { int x; klee_make_symbolic(&x, sizeof(x), "x"); return even(x); Pomoću alata clang za koji je uveden alias myclang se generiše llvm kôd pod nazivom even.bc sa kojim radi Klee alat: myclang -I /build/klee/include/ -emit-llvm -c -g even.c Nakon ovoga pokrećemo Klee preko aliasa myklee: myklee even.bc Nakon izvršenja prethodne naredbe dobijamo sledeći izlaz: 2

3 KLEE: output directory is "/home/student/build/klee/examples/even/klee-out-0" Using STP solver backend KLEE: done: total instructions = 42 KLEE: done: completed paths = 2 KLEE: done: generated tests = 2 Na osnovu dobijenog izlaza, postoje dve putanje u našem programu, kao što smo i očekivali, u zavisnosti od toga da li je argument paran ili neparan po vrednosti. Klee je generisao direktorijum pod nazivom klee-out-0 sa test primerom za svaku eksploatisanu putanju. Pri sledećem pokretanju generisao bi se direktorijum klee-out-1, tj. u opštem slučaju direktorijum pod nazivom klee-out-n za prvo slobodno N. Takode, napravljen je i simbolički link klee-last koji uvek ukazuje na poslednji klee-out direktorijum. Ukoliko izlistamo direktorijum klee-out-0, izmedu ostalog, primetićemo datoteke sa ekstenzijom.ktest. To su binarne datoteke koje sadrže test primere za svaku putanju zasebno i koje se mogu pročitati korišćenjem alata ktest-tool koji je kod nas pod aliasom myktest-tool. Čitanje test primera: $myktest-tool --write-ints test ktest ktest file : test ktest args : [ even.bc ] num objects: 2 object 0: name: model_version object 0: size: 4 object 0: data: 1 object 1: name: x object 1: size: 4 object 1: data: 0 $ myktest-tool --write-ints test ktest ktest file : test ktest args : [ even.bc ] num objects: 2 object 0: name: model_version object 0: size: 4 object 0: data: 1 object 1: name: x object 1: size: 4 object 1: data: 1 Primećujemo da je Klee generisao ulaz 0 i 1 za pokrivanje dve otkrivene putanje, tj. jednu parnu i jednu neparnu ulaznu vrednost. Da bismo proverili da li naš program daje očekivane izlaze za generisane test primere, možemo testirati polazni program korišćenjem vrednosti data iz pročitanih testova ili koristiti simbolički program zahvaljujući posebnoj biblioteci libkleeruntest i koja pozive funkcije klee make symbolic zamenjuje pozivom funkcije koja promenljivoj dodeljuje vrednost zapisanu u odgovarajućoj test datoteci. Testiranje pomoću libkleeruntest biblioteke: $ export LD LIBRARY PATH=/home/student/build/klee/Release+Asserts/lib $ gcc -I /home/student/build/klee/include/ -L /home/student/build/klee/release+asserts/lib even.c -lkleeruntest $ KTEST FILE=klee-last/test ktest./a.out $ echo $? 1 $ KTEST FILE=klee-last/test ktest./a.out $ echo $? 0 Očekivano, nismo dobili poruku od klee assert što potvrduje pretpostavku da je označen deo kôda nedostižan za bilo koji ulaz. 3

4 Statističke informacije u vezi sa izvršavanjem Klee alata nad nekim bitkôdom, kao što su broj izvršenih instrukcija, pokrivenost instukcija bitkôda, pokrivenost grana bitkôda i slično, možemo dobiti pomoću Python skripta klee-stats (alias koji koristimo je myklee-stats). Informacije se prikazuju u tabelarnoj formi. Ovaj alat se poziva nad direktorijumom koji je generisao Klee. Da bismo bili sigurni da je to najnovija verzija direktorijuma, najjednostavnije je alat pozvati sa argumentom klee-last. $ myklee-stats klee-last Path Instrs Time(s) ICov(%) BCov(%) ICount TSolver(%) klee-last Legendu za tabelu možemo dobiti pomoću opcije --help. LEGEND Instrs number of executed instructions Time total wall time (s) ICov instruction coverage in the LLVM bitcode (%) BCov branch coverage in the LLVM bitcode (%) ICount total static instructions in the LLVM bitcode TSolver time spent in the constraint solver Vizuelni prikaz statistike o simboličkom izvršavanju možemo dobiti korišćenjem alata KCachegrind kcachegrind klee-last/run.istats Izborom CoveredInstructions ili UncoveredInstructions i izborom kartice Source Code možemo tačno videti koje linije jesu, odnosno nisu pokrivene test primerima. Primetimo da brojevi koje sada vidimo su daleko veći od brojevi koje je prikazao klee-stats. Razlog je to što gcov razmatra samo linije u jednoj datoteci, a ne u celoj aplikaciji. Dok sa KCachegrind-om možemo čitati izlaz gcov-a o pokrivenosti kôda i da ispratimo koje su linije pokrivene, a koje ne. 1.2 Otkrivanje grešaka Ukoliko prilikom generisanja test primera za neku od putanja, pronade test primer koji izaziva grešku, Klee će pored tog test primera generisati još dve datoteke: test<n>.pc - uslovi ograničenja koji važe za tu putanju i koji su prosledeni solveru u KQuery sintaksi [2]. test<n>.<type>.err - dodatne informacije o grešci <TYPE> označava tip detektovane greške. Neke od grešaka koje Klee može da detektuje su: ptr: Čitanje ili pisanje u nevalidnu memorijsku lokaciju; free: Dupli ili nekorektan poziv funkcije free(); 4

5 abort: Program je pozvao funkciju abort(); assert: Uslov proveravan funkcijom assert nije tačan; div: Deljenje nulom ili računanje po modulu 0; user: Problem je u vezi sa ulazom (neispravan poziv klee intrinsic) ili pogrešan način upotrebe Klee-a. exec: Dogodio se problem koji je Klee sprečio u izvršavanju programa, npr. nepoznata instrukcija, poziv preko neispravnog pokazivača na funkciju ili inline funkcije. model: Klee nije mogao da ispuni kompletnu preciznost i ispituje samo deo svih stanja programa. Na primer, simboličke veličine prosledene malloc funkciji nisu trenutno podržane i u takvim situacijama Klee konkretizuje taj argument Primer semantičke greške Pogledajmo primer neispravne funkcije za proveru parnosti celog broja: int bad_even(int x) { if(x%2==0) return 1; if(x%2==1) return 1; // dostizna za negativne ulaze Ovaj primer, za razliku od prethodnog ima grešku prilikom provere neparnih negativnih brojeva jer je za njih ostatak pri deljenju jednak 1 pa nisu obuhvaćeni drugom if naredbom. Pokušaćemo da korišćenjem Klee alata otkrijemo ovu grešku i dobijemo test primer za koji je dostižna poslednja return naredba. Kao i malopre, u glavnom programu označavamo simboličku promenljivu i dodajemo poziv funkcije klee assert(0) koja će signalizirati grešku pri eksploatisanju putanje u kojoj je malopredašnja nedostižna naredba. Nakon dobijanja llvm kôda bad even.bc i pokretanja Klee alata: KLEE: output directory is "/home/student/build/klee/examples/bad_even/klee-out-0" Using STP solver backend KLEE: ERROR: /home/student/build/klee/examples/bad\_even/bad_even.c:12: ASSERTION FAIL: 0 KLEE: NOTE: now ignoring this error at this location KLEE: done: total instructions = 39 KLEE: done: completed paths = 3 KLEE: done: generated tests = 3 Primetimo da su sada pronadene tri putanje i generisani odgovarajući test primeri, ali je i prijavljena greška koju je signalizirala funkcija klee assert. Ukoliko pogledamo sadržaj direktorijuma sa test primerima, primetićemo da je napravljena datoteka test assert.err koja nam ukazuje da je gore pomenuta greška signalizirana pri drugom test primeru. Pogledajmo kakav je ulaz u pitanju: $ myktest-tool --write-ints test ktest ktest file : test ktest args : [ bad_even.bc ] object 0: name: x object 0: size: 4 object 0: data: Klee je pronašao da je sporna vrednost ulaza Upotrebom debagera i korišćenjem sporne ulazne vrednosti može se uočiti mesto problema, odnosno da je zaboravljeno da je ostatak pri deljenju sa 2 u slučaju negativnih brojeva 1, a ne 1. Očekivano, vreme izvršavanja koje je potrošeno na solver je veće nego u slučaju ispravnog programa. $ myklee-stats klee-last Path Instrs Time(s) ICov(%) BCov(%) ICount TSolver(%) 5

6 klee-last Generalno, prikazanom upotrebom funkcije klee assert možemo označiti putanju za koju smo zainteresovani, bilo da bismo proverili da li je ta putanja izvodljiva ili da bismo imali na izlazu označen ulaz kojim se ta putanja dostiže. Primer 1.1 deljivi.c i deljiv sym.c Program poziva funkciju koja računa ostatak pri deljenju sa 5. Prepraviti main funkciju da se ne učitava broj sa ulaza već da se prilikom simboličkog izvršavanja koristi simbolička promenljiva i da se vraća rezultat funkcije. Koje test primere je Klee generisao da bi pokrio putanje? Primer greške u radu sa pokazivačima U slučaju da postoji putanja programa na kojoj može doći do nepravilnog pristupa memorijskim lokacijama, što je čest slučaj pri radu sa pokazivačima, Klee će sam prijaviti grešku i generisati ulaz na osnovu koga možemo popraviti svoj program. Primer ovakvog programa se može videti u datoteci pointer error.c. #include <stdio.h> int main(int argc, char **argv) { char s[]="pozdravstudenti!"; int p1, p2, p3; char *p; scanf("%d %d %d", &p1, &p2, &p3); p = s; if (p1) { p += 1; else { p += 2; if (p2) { p += 6; else { p += 7; if (p3) { p += 8; else { p += 9; printf("%c ", *p); Označićemo simbolički ulaz i uključiti potrebno zaglavlje i zatim sačuvati kôd u datoteku pointer error sym.c. Na osnovu nje ćemo napraviti odgovarajući bitkôd i pokrenuti alat Klee. Klee je pronašao 8 putanja i generisao 5 test primera, a pritom je i javio memory error: out of bound pointer. Test primer koji dovodi do prijavljene greške će biti označen posebnom datotekom sa ekstenzijom.ptr.err. Primetimo da je broj test primera manji od broja istraženih putanja. BITNO: Klee neće generisati sve moguće ulaze koji dovode do iste greške. Ukoliko je tako nešto potrebno, prilikom pokretanja dodati opciju -emit-all-errors. Ako uvedemo pomenutu opciju prilikom pokretanja alata Klee, myklee --emit-all-errors pointer error sym.bc 6

7 biće generisano 8 test primera, od čega 4 označena greškom za memoriju. Čitanjem dobijenih test primera, možemo ispraviti sve putanje koje su dovele do problema sa pokazivačem. Pokrenuti klee-stats nad direktorijumom koji je generisan u prvom slučaju i sa dodavanjem opcije za emitovanje svih grešaka. Primetiti da se jedino razlikuje vreme potrošeno na solver dok je pokrivenost kôda i grana identična. Primer 1.2 pozdrav.c Popraviti kôd shodno greškama koje je Klee pronašao. 1.3 Pronalaženje inverza zadate funkcije Zanimljivo je pogledati kako se može Klee alat iskoristiti za pronalaženje inverza neke funkcije. Tačnije, da li Klee može pronaći ulaz za koji dobijamo željeni izlaz. Na primer, data je funkcija koja argument transformiše na sledeći način: int magic_computation(int input) { for (int i = 0; i < 32; ++i) input ^= 1 << i; return input; Zanima nas kako da pogodimo za koju je vrednost argumenta, vrednost transformacije 253. Glavni program kojim bismo testirali funkciju bi mogao da ima sledeću formu: int main() { int input; scanf("%d", &input); int output = magic_computation(input); if (output == 253) printf("you win!\n"); else printf("you lose\n"); Ručno testiranje bi svakako bio dug i naporan posao. Medutim, možemo iskoristiti Klee da nam pronade putanju za koju smo zainteresovani. Iako Klee eksploatiše sve putanje, nas zanima samo ona na kojoj se izvršava ispis poruke You win!, pa ćemo upravo tu dodati poziv funkcije klee assert. Uvodenjem simboličke promenljive, glavni program postaje: int main() { int input, output; klee_make_symbolic(&input, sizeof(input), "input"); output = magic_computation(input); if (output == 253) klee_assert(0); Ceo program se može videti u datoteci inverse.c. Nakon dobijanja direktorijuma sa generisanim test primerima primetićemo da je napravljen test assert.err, što ukazuje na to da je prvi test primer ulaz koji smo tražili, tačnije vrednost 254. $ myktest-tool --write-ints test ktest ktest file : test ktest args : [ inverse.bc ] object 0: name: input object 0: size: 4 object 0: data: -254 Ukoliko se pokrene polazni program sa ulazom 254 dobijamo na izlazu željenu poruku You win!. 7

8 Primer 1.3 konverzija.c i konverzija sym.c Program na osnovu ulaznog parametra računa vrednost na osnovu koje je moguće pobediti u igri ili izgubiti. Prepraviti program tako da nam Klee pronade ulaz koji će nam omogućiti da pobedimo. Primer 1.4 solution.c i solution sym.c Funkcija solve računa vrednost x 3 + x 1 6. Prepraviti main funkciju tako da se pronade rešenje jednačine Primer 1.5 prime.c i prime sym.c x 3 + x 1 6 = 0 Program poziva funkciju prime koja proverava da li je broj prost. Modifikovati main funkciju tako da Klee pronade neki prost broj koji je veći od 2, a manji ili jednak Korišćenje C bibliotečkih funkcija i simboličkog okruženja U slučaju da se koristi Klee za program koji radi sa C bibliotečkim funkcijama, potrebno je navesti opcije --libc=uclibc --posix-runtime koje omogućavaju ispravno linkovanje i dodatne opcije za rad sa simboličkim okruženjem. Sa opcijom --allow-external-sym-calls se omogućava pozivanje spoljnih funkcija sa simboličkim vrednostima u programu. [4] Dodatne opcije za rad sa simboličkim okruženjem: 1. --sym-arg <N> - simbolički argument dužine najviše N 2. --sym-args <MIN> <MAX> <N> - najmanje MIN, a najviše MAX simboličkih argumenata komandne linije, svi maksimalne dužine N 3. --sym-files <NUM> <N> - NUM simboličkih datoteka veličine N (ne uključujući stdin) 4. --sym-files <NUM> <N> - NUM simboličkih datoteka veličine N (ne uključujući stdin) 5. --sym-stdin <N> - simbolički standardni ulaz veličine N 6. --sym-stdout - simbolički standardni izlaz Nevezano za simboličko okruženje, korisno je koristiti i opciju --optimize koja eliminiše mrtav kôd prilikom eksploatisanja putanji čime se dobija na efikasnosti, tj. bržem izvršavanju. Ono što treba imati u vidu, svaki poziv eksterne funkcije prilično usložnjava pronalaženje putanja i generisanje test primera Primer sa simboličkim argumentom komandne linije Datoteka password.c sadrži program za validaciju lozinke jednog sistema koja se zadaje kao argument komandne linije i za koju jedino znamo da je maksimalne dužine 100. Pretpostaviti da postoji samo jedna valjana kombinacija za lozinku. Zadatak je pronaći lozinku bez rešavanja zadatih jednačina koje su postavljenje u programu. Zadatak ćemo rešiti označavanjem putanje koja nas zanima pozivom funkcije klee assert(0), a to je upravo nakon ispisa poruke o uspešno pronadenoj lozinki (datoteka password sym.c). Nakon što se generiše bitkôd password sym.bc, dodajemo potrebne opcije prilikom poziva Klee alata: $ myklee --optimize --libc=uclibc --posix-runtime password sym.bc -sym-arg 100 Nakon što je prošlo par sekundi, može se primetiti da je generisana samo jedna poruka o grešci i čak 102 putanje. Da bismo dobili onu koja nas zanima, izvući ćemo naziv datoteke sa.err ekstenzijom i pročitati odgovarajuću.ktest datoteku: $ ls klee-last/*err klee-last/test assert.err $ myktest-tool test ktest ktest file : test ktest args : [ password_sym.bc, -sym-arg, 100 ] num objects: 2 object 0: name: arg0 object 0: size: 101 8

9 object 0: data: Pandi_panda\x00\xff\xff\xff\xff \xff\xff\xff\xff\xff\xff\xff object 1: name: model_version object 1: size: 4 object 1: data: 1 Dobili smo da je ulaz Pandi panda koji prati terminirajuća nula ispravna lozinka. Klee-ova opcija --optimize služi da se zada da se izvrši optimizacija kôda pre izvršavanja. 1.5 Maze U datoteci maze.c dat je primer jednostavne igrice kodirane u C-u. Pri pokretanju igrice, prikazuje se lavirint sa pozicijom nagrade označene karakterom #. Da bi se pokrenula igrica, potrebno je prevesti izvorni C kôd i pokrenuti generisan izvršni kôd, nakon čega se dobija sledeći izlaz: Maze dimensions: 11x7 Player pos: 1x1 Iteration no. 0 Program the player moves with a sequence of u, d, r and l Try to reach the price(#)! X # Startna pozicija igrača je gornji levi ugao lavirinta, a zadatak je pronaći put kroz lavirint koji vodi do nagrade. Igrač zadaje instrukcije kretanja u vidu liste karaktera, i to a za kretanje u levo, d u desno, w na gore i v na dole. U slučaju da se kretanjem udari u zid ili dode u poziciju iz koje se dalje ne može kretati, igrica se prekida sa porukom da smo izgubili. Ukoliko se pogodi putanja (rešenje je ddddrrrruulluurrrrddddrruuuu), nakon celog prolaska kroz lavirint, prikazaće se: Player pos: 9x2 Iteration no. 26. Action: w X XXXXX # X X--+X X X XXX X X X+--X X X XXXXX XXX You win! Your solution <ddddrrrruulluurrrrddddrruuuu> Ideja je da iskoristimo Klee za pronalaženje rešenja, pri čemu ćemo otkriti i jednu ne baš tako očekivanu stvar. Za početak, potrebno je da ulaznu putanju označimo simboličkom tako što ćemo poziv funkcije read zameniti odgovarajućim pozivom funkcije klee make symbolic i na počeku uključiti potrebno zaglavlje. Izmenjen kôd se može pronaći u datoteci maze sym.c. Nakon pokretanja Klee alata, videćemo da će broj pronadenih putanji i generisanih test primera biti 321. Sa druge strane, nije prijavljena nijedna od tipičnih grešaka na koje bi nas alat upozorio da postoje, poput pristupanja nepostojećoj memorijskoj lokaciji i slično. Da bismo izdvojili test primere koji predstavljaju rešenje za lavirint, kao i ranije dodaćemo poziv funkcije klee assert(0) kod dela koji nas zanima, u našem slučaju nakon ispisa poruke da smo pobedili, tj. došli do nagrade. 9

10 myklee --allow-external-sym-calls --emit-all-errors maze_sym.bc Nakon ponovnog pokretanja, broj pronadenih putanji ostaje isti, ali se broj generisanih test primera smanjio na 318, medu kojima ćemo primetiti i test assert.err koji ukazuje da je 135. test primer izazvao grešku. Ukoliko pročitamo odgovarajući ktest, dobićemo rešenje za naš lavirint: ktest file : test ktest args : [ maze_sym.bc ] object 0: name: program object 0: size: 29 object 0: data: drrurrrrdrru\xff\xff\xff\xff\xff\xff\xff\xff \xff\xff\xff\xff\xff\xff\xff\xff\xff Medutim, ovde se nazire problem. Dobijeno rešenje izgleda poprilično kratko da bi moglo da dostigne nagradu u lavirintu. Testirajmo igricu sa dobijenim rešenjem X XXXXX # XXX--+XXX You win! Your solution <drrurrrrdrru > Klee je uspeo da otkrije lažne zidove u lavirintu i dobije kraće rešenje, tačnije ukazao nam je na postojanje semantičke greške u kôdu. Primetimo da je pronadeno rešenje različito od našeg trivijalnog. Uključivanjem opcije za dobijanje svih ulaza koji dovode do greške, za razliku od malopre, broj generisanih test primera biće 321, medu kojima će četiri imati oznaku za emitovanje greške, a to su upravo četiri moguća rešenja za ovaj lavirint sa lažnim zidovima gde se pojavljuje i ono trivijalno rešenje sa početka. myktest-tool --write-ints test ktest ktest file : test ktest args : [ maze_sym.bc ] object 0: name: program object 0: size: 29 object 0: data: drrurrrrdrru\xff\xff\xff\xff\xff\xff\xff \xff\xff\xff\xff\xff\xff\xff\xff\xff\xff myktest-tool --write-ints test ktest ktest file : test ktest args : [ maze_sym.bc ] object 0: name: program object 0: size: 29 object 0: data: ddddrrrruulluurrrrdrru\xff\xff\xff\xff\xff \xff\xff myktest-tool --write-ints test ktest ktest file : test ktest args : [ maze_sym.bc ] object 0: name: program object 0: size: 29 object 0: data: drrurrrrddddrruuuu\xff\xff\xff\xff\xff\xff \xff\xff\xff\xff\xff myktest-tool --write-ints test ktest 10

11 ktest file : test ktest args : [ maze_sym.bc ] object 0: name: program object 0: size: 29 object 0: data: ddddrrrruulluurrrrddddrruuuu\xff Iskoristiti dobijena rešenja koja detektuju lažne zidove u lavirintu za ispravljanje izvornog kôda igrice. Literatura [1] [2] [3] [4] [5] dsl11/klee-doxygen/overview.html [6] Milena Vujošević Janičić, Automated generation and checking of verification conditions, Doctoral Dissertation [7] Cristian Cadar, Daniel Dunbar, Dawson Engler. KLEE: Unassisted and Automatic Generation of High-Coverage Tests for Complex Systems Programs, In OSDI,

Microsoft PowerPoint - Programski_Jezik_C_Organizacija_Izvornog_Programa_I_Greske [Compatibility Mode]

Microsoft PowerPoint - Programski_Jezik_C_Organizacija_Izvornog_Programa_I_Greske [Compatibility Mode] Programski jezik C organizacija izvornog programa Prevođenje Pisanje programa izvorni program Prevođenje programa izvršni program Izvršavanje programa rezultat Faze prevođenja Pretprocesiranje Kompilacija

Више

Funkcije predavač: Nadežda Jakšić

Funkcije predavač: Nadežda Jakšić Funkcije predavač: Nadežda Jakšić funkcije delovi programa koji izvršavaju neki zadatak, celinu; dele na ugrađene, korisničke i main funkciju ugrađene funkcije printf,scanf... da bi se one izvršile potrebno

Више

Microsoft PowerPoint - Datoteke [Compatibility Mode]

Microsoft PowerPoint - Datoteke [Compatibility Mode] Датотеке стандардни улаз / излаз Датотека је именовани низ знакова (бајтова) У програмском језику C датотека је везана за улаз и излаз података функције стандардне библиотеке Најједностaвније

Више

Funkcije predavač: Nadežda Jakšić

Funkcije predavač: Nadežda Jakšić Funkcije predavač: Nadežda Jakšić do sada su korišćene "gotove" funkcije iz standardnih biblioteka (cin, cout...) one su pozivane iz main funkcije koja je glavna funkcija u programu jer izvršavanje programa

Више

Писање и превођење модула

Писање и превођење модула Писање и превођење модула ЦИЉ Научити како се пишу и преводе модули. ИСХОД Након ове вежбе ћете моћи да: Напишете кернел модул са неколико могућности, укључујући параметре Приступите кернелу из вашег модула

Више

Uvod u računarstvo 2+2

Uvod u računarstvo 2+2 Datoteke nastavak Funkcija fgets Funkcija koja učitava podatke iz datoteke, liniju po liniju, je char *fgets(char *str, int n, FILE *fp); gdje su str pokazivač na dio memorije (string) u koji će ulazna

Више

KORISNIČKE UPUTE APLIKACIJA ZA POTPIS DATOTEKA

KORISNIČKE UPUTE APLIKACIJA ZA POTPIS DATOTEKA KORISNIČKE UPUTE APLIKACIJA ZA POTPIS DATOTEKA SADRŽAJ 1. UVOD... 3 1.1. Cilj i svrha... 3 1.2. Područje primjene... 3 2. POJMOVI I SKRAĆENICE... 4 3. PREDUVJETI KORIŠTENJA... 5 4. PREGLED APLIKACIJE...

Више

Uvod u računarstvo 2+2

Uvod u računarstvo 2+2 Ulaz i izlaz podataka Ulaz i izlaz podataka Nakon odslušanog bit ćete u stanju: navesti sintaksu naredbi za unos/ispis znakova znakovnih nizova cijelih brojeva realnih brojeva jednostruke i dvostruke preciznosti

Више

Microsoft PowerPoint - Programski_Jezik_C_Organizacija_Izvrsnog_Programa [Compatibility Mode]

Microsoft PowerPoint - Programski_Jezik_C_Organizacija_Izvrsnog_Programa [Compatibility Mode] Организација извршног програма (Марић, Јаничић: Програмирање 1, 9.3.3) Извршавање програма После успешног превођења (претпроцесирања, компилације, повезивања) програм може да се изврши Извршавање се захтева

Више

Univerzitet u Novom Sadu Tehnički fakultet Mihajlo Pupin Zrenjanin Seminarski rad Predmet: Konkuretno programiranje doc. dr Dejan Lacmanovic Zorica Br

Univerzitet u Novom Sadu Tehnički fakultet Mihajlo Pupin Zrenjanin Seminarski rad Predmet: Konkuretno programiranje doc. dr Dejan Lacmanovic Zorica Br Univerzitet u Novom Sadu Tehnički fakultet Mihajlo Pupin Zrenjanin Seminarski rad Predmet: Konkuretno programiranje doc. dr Dejan Lacmanovic Zorica Brkić SI 29/15 Zrenjanin 2018. Softversko inženjerstvo

Више

Programski jezik C

Programski jezik C SPR, 2016 Rad sa datotekama Komunikacija sa OS Rad sa datotekama Vrste datoteka Otvaranje / zatvaranje datoteka Pristup datotekama za upis / čitanje Funkcije za rad sa datotekama Ulazno / izlazni tokovi

Више

Razvoj programa, Code::Blocks, struktura programa, printf, scanf, konverzioni karakteri predavač: Nadežda Jakšić

Razvoj programa, Code::Blocks, struktura programa, printf, scanf, konverzioni karakteri predavač: Nadežda Jakšić Razvoj programa, Code::Blocks, struktura programa, printf, scanf, konverzioni karakteri predavač: Nadežda Jakšić projektni zadatak projektovanje programa (algoritmi) pisanje programskog koda, izvorni kod,

Више

Programiranje za UNIX Okruženje unix procesa

Programiranje za UNIX Okruženje unix procesa Programiranje za UNIX Okruženje unix procesa Sadržaj Memorijska slika UNIX procesa Argumenti naredbenog retka i varijable okruženja Životni ciklus procesa Izlazni status procesa 2 Memorijska slika UNIX

Више

Microsoft PowerPoint - Bitovi [Compatibility Mode]

Microsoft PowerPoint - Bitovi [Compatibility Mode] Оператори над битовима (Јаничић, Марић: Програмирање 2, тачка 5.6) Оператори за рад са појединачним битовима Само на целобројне аргументе: ~ битовска негација & битовска конјункција (и) битовска (инклузивна)

Више

Uvod u računarstvo 2+2

Uvod u računarstvo 2+2 Pokazivači Pointeri Definicija pokazivača Pokazivač na tip je varijabla koja sadrži adresu varijable tipa tip. Definicija pokazivača: mem_klasa tip * p_var; Primjer: static int * pi; double *px; char*

Више

Microsoft Word - 11 Pokazivaci

Microsoft Word - 11 Pokazivaci Pokazivači U dosadašnjem radu smo imali prilike da koristimo promenljive koje smo deklarisali na početku nekog bloka. Prilikom deklaracije promenljiva dobija jedinstveni naziv i odgovarajući prostor u

Више

Tutoring System for Distance Learning of Java Programming Language

Tutoring System for Distance Learning of Java Programming Language Obeležene petlje Obeležene petlje Obeležavanje petlje nekim identifikatorom omogućava da se programski tok usmeri na mesto u programu specificirano tim identifikatorom. Ako se iza naredbi break ili continue

Више

I grupa 1. Napisati program koji izračunava i ispisuje zbir 4 najveća od pet brojeva unetih sa standardnog ulaza. ulaz izlaz Analiza: 1.

I grupa 1. Napisati program koji izračunava i ispisuje zbir 4 najveća od pet brojeva unetih sa standardnog ulaza. ulaz izlaz Analiza: 1. I grupa 1. Napisati program koji izračunava i ispisuje zbir 4 najveća od pet brojeva unetih sa standardnog ulaza. ulaz izlaz 3 2 1 4 5 14 Analiza: 1. Odredimo zbir svih 5 unesenih brojeva (i sačuvamo u

Више

Програмирај!

Програмирај! Листе Поред појединачних вредности исказаних бројем или ниском карактера, често је потребно забележити већи скуп вредности које су на неки начин повезане, као, на пример, имена у списку путника у неком

Више

PRIRODNO MATEMATIČKI FAKULTET U NIŠU DEPARTMAN ZA RAČUNARSKE NAUKE Utorak, godine PRIJEMNI ISPIT IZ INFORMATIKE 1. Koja od navedenih ekste

PRIRODNO MATEMATIČKI FAKULTET U NIŠU DEPARTMAN ZA RAČUNARSKE NAUKE Utorak, godine PRIJEMNI ISPIT IZ INFORMATIKE 1. Koja od navedenih ekste PRIRODNO MATEMATIČKI FAKULTET U NIŠU DEPARTMAN ZA RAČUNARSKE NAUKE Utorak, 5.06.019. godine PRIJEMNI ISPIT IZ INFORMATIKE 1. Koja od navedenih ekstenzija se najčešće koristi za tekstualne datoteke? a)

Више

Орт колоквијум

Орт колоквијум II колоквијум из Основа рачунарске технике I - 27/28 (.6.28.) Р е ш е њ е Задатак На улазе x, x 2, x 3, x 4 комбинационе мреже, са излазом z, долази четворобитни BCD број. Ако број са улаза при дељењу

Више

Kombinatorno testiranje

Kombinatorno testiranje Kombinatorno testiranje Uvod Na ponašanje aplikacije utiče puno faktora, npr. ulazne vrednosti, konfiguracije okruženja. Tehnike kao što je podela na klase ekvivalencije ili analiza graničnih vrednosti

Више

Grananje u programu predavač: Nadežda Jakšić

Grananje u programu predavač: Nadežda Jakšić Grananje u programu predavač: Nadežda Jakšić u okviru linijske strukture izvršavaju se sve naredbe u okviru razgranate strukture uvek se ispituje neki uslov; u zavisnosti od toga da li je uslov ispunjen

Више

Recuva CERT.hr-PUBDOC

Recuva CERT.hr-PUBDOC Recuva CERT.hr-PUBDOC-2019-5-379 Sadržaj 1 UVOD... 3 2 INSTALACIJA ALATA RECUVA... 4 3 KORIŠTENJE ALATA RECUVA... 7 4 ZAKLJUČAK... 13 Ovaj dokument izradio je Laboratorij za sustave i signale Zavoda za

Више

Programiranje 2 0. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog2 2019, 0. predavanje p. 1/4

Programiranje 2 0. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog2 2019, 0. predavanje p. 1/4 Programiranje 2 0. predavanje Saša Singer singer@math.hr web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog2 2019, 0. predavanje p. 1/48 Sadržaj predavanja Ponavljanje onog dijela C-a koji

Више

Tutoring System for Distance Learning of Java Programming Language

Tutoring System for Distance Learning of Java Programming Language Deklaracija promenljivih Inicijalizacija promenljivih Deklaracija promenljive obuhvata: dodelu simboličkog imena promenljivoj i određivanje tipa promenljive (tip određuje koja će vrsta memorijskog registra

Више

Računarski praktikum I - Vježbe 09 - this, static

Računarski praktikum I - Vježbe 09 - this, static Prirodoslovno-matematički fakultet Matematički odsjek Sveučilište u Zagrebu RAČUNARSKI PRAKTIKUM I Vježbe 09 - this, static v2018/2019. Sastavio: Zvonimir Bujanović Pokazivač this Kako funkcija članica

Више

Microsoft PowerPoint - 11.Programski_Jezik_C_ulaz-izlaz [Compatibility Mode]

Microsoft PowerPoint - 11.Programski_Jezik_C_ulaz-izlaz [Compatibility Mode] Programski jezik C - ulaz i izlaz programa Ulaz i izlaz programa Argumenti komandne linije Standardni tokovi Preusmerenje Funkcije za rad sa ulazom i izlazom Formatiran ulaz/izlaz Datoteke 2 Aргументи

Више

MIP-heuristike (Matheuristike) Hibridi izmedu metaheurističkih i egzaktnih metoda Tatjana Davidović Matematički institut SANU

MIP-heuristike (Matheuristike) Hibridi izmedu metaheurističkih i egzaktnih metoda Tatjana Davidović Matematički institut SANU MIP-heuristike (Matheuristike) Hibridi izmedu metaheurističkih i egzaktnih metoda Tatjana Davidović Matematički institut SANU http://www.mi.sanu.ac.rs/ tanjad (tanjad@mi.sanu.ac.rs) 21. januar 2013. Tatjana

Више

P11.3 Analiza zivotnog veka, Graf smetnji

P11.3 Analiza zivotnog veka, Graf smetnji Поједностављени поглед на задњи део компајлера Међурепрезентација (Међујезик IR) Избор инструкција Додела ресурса Распоређивање инструкција Инструкције циљне архитектуре 1 Поједностављени поглед на задњи

Више

Računarski praktikum I - Vježbe 03 - Implementacija strukture string

Računarski praktikum I - Vježbe 03 - Implementacija strukture string Prirodoslovno-matematički fakultet Matematički odsjek Sveučilište u Zagrebu RAČUNARSKI PRAKTIKUM I Vježbe 03 - Implementacija strukture string v2018/2019. Sastavio: Zvonimir Bujanović Stringovi u C-u String

Више

Microsoft PowerPoint - vezbe 4. Merenja u telekomunikacionim mrežama

Microsoft PowerPoint - vezbe 4. Merenja u telekomunikacionim mrežama Merenja u telekomunikacionim mrežama Merenja telefonskog saobraćaja Primer 1 - TCBH Na osnovu najviših vrednosti intenziteta saobraćaja datih za 20 mernih dana (tabela), pomoću metode TCBH, pronaći čas

Више

Programiranje u C-u ili C++-u Pseudo-slučajni brojevi; Dinamička alokacija memorije 1 ZADACI SA ČASA Zadatak 1 Napraviti funkciju koja generišlučajan

Programiranje u C-u ili C++-u Pseudo-slučajni brojevi; Dinamička alokacija memorije 1 ZADACI SA ČASA Zadatak 1 Napraviti funkciju koja generišlučajan Programiranje u C-u ili C++-u Pseudo-slučajni brojevi; Dinamička alokacija memorije 1 ZADACI SA ČASA Zadatak 1 Napraviti funkciju koja generišlučajan realan broj od 0 i 1. Na standardni izlaz ispisati

Више

Računarski praktikum I - Vježbe 01 - Uvod

Računarski praktikum I - Vježbe 01 - Uvod Prirodoslovno-matematički fakultet Matematički odsjek Sveučilište u Zagrebu RAČUNARSKI PRAKTIKUM I Vježbe 01 - Uvod v2018/2019. Sastavio: Zvonimir Bujanović Gradivo i način polaganja Gradivo: osnove jezika

Више

Računarski praktikum I - Vježbe 07 - Podstrukture, const, reference

Računarski praktikum I - Vježbe 07 - Podstrukture, const, reference Prirodoslovno-matematički fakultet Matematički odsjek Sveučilište u Zagrebu RAČUNARSKI PRAKTIKUM I Vježbe 07 - Podstrukture, const, reference v2018/2019. Sastavio: Zvonimir Bujanović Podstrukture Član

Више

R u z v e l t o v a 5 5, B e o g r a d, t e l : ( ) , m a i l : c o n t a c p s i t. r s, w w w. p s i t. r s

R u z v e l t o v a 5 5, B e o g r a d, t e l : ( ) , m a i l : c o n t a c p s i t. r s, w w w. p s i t. r s UPUTSTVO ZA BRZO UMREŽAVANJE PROGRAMA MPP2 Da bi program MPP2 radio u mrežnom okruženju po sistemu klijent-server, potrebno je da se na računarima koji su mrežno povezani instalira: serverska verzija programa

Више

Microsoft PowerPoint - C-4-1

Microsoft PowerPoint - C-4-1 Pregled iskaza u C-u Izraz; Iskaz dodele, serijski komponovani iskaz; blok Uslovni iskazi i izrazi; složeno grananje Iterativni iskazi Iskaz dodele Promena vrednosti a = Ψ; Izračunava vrednost izraza Ψ,

Више

Kako postupiti u slučaju prekida internet veze i nemogućnosti fiskaliziranja računa? U slučaju da dođe do prekida internet veze fiskalizacija računa n

Kako postupiti u slučaju prekida internet veze i nemogućnosti fiskaliziranja računa? U slučaju da dođe do prekida internet veze fiskalizacija računa n Kako postupiti u slučaju prekida internet veze i nemogućnosti fiskaliziranja računa? U slučaju da dođe do prekida internet veze fiskalizacija računa neće biti moguća sve do ponovnog uspostavljanja internet

Више

Programiranje 2 popravni kolokvij, 15. lipnja Ime i prezime: JMBAG: Upute: Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i brisanj

Programiranje 2 popravni kolokvij, 15. lipnja Ime i prezime: JMBAG: Upute: Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i brisanj Upute: Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i brisanje, te službeni šalabahter. Kalkulatori, mobiteli, razne neslužbene tablice, papiri i sl., nisu dozvoljeni! Sva rješenja napišite

Више

Programski jezik C

Programski jezik C Pojam funkcije Deklaracija i definicija funcije Poziv funkcije Memorijske klase promjenljivih Primjeri. Za kompajliranje koda koristen DEV-C++ 4.9.9.2 Compiler!!!! Moze is koristiti I bilo koji drugi standardni

Више

Техничко решење: Софтвер за симулацију стохастичког ортогоналног мерила сигнала, његовог интеграла и диференцијала Руководилац пројекта: Владимир Вуји

Техничко решење: Софтвер за симулацију стохастичког ортогоналног мерила сигнала, његовог интеграла и диференцијала Руководилац пројекта: Владимир Вуји Техничко решење: Софтвер за симулацију стохастичког ортогоналног мерила сигнала, његовог интеграла и диференцијала Руководилац пројекта: Владимир Вујичић Одговорно лице: Владимир Вујичић Аутори: Велибор

Више

PowerPoint Presentation

PowerPoint Presentation Tehnička škola 9. maj Bačka Palanka Programiranje III razred Tok izvršavanja programa Tok izvršavanja programa Dosadašnji kod se izvršavao praktično linearno. Nije postojala nikakva uslovna ili brojačka

Више

Microsoft PowerPoint - 07-DinamickeStrukturePodataka

Microsoft PowerPoint - 07-DinamickeStrukturePodataka Динамичке структуре података листа, стек, ред Програмирање 2: глава 6 Динамичке структуре података Динамичка алокација и динамичке структуре података Најзначајније динамичке структуре података листе и

Више

Microsoft PowerPoint - Lab_step_nc2017.ppt [Compatibility Mode]

Microsoft PowerPoint - Lab_step_nc2017.ppt [Compatibility Mode] Машински факултет Београд Катедра за производно машинство Објектно програмирање нумерички управљаних машина алатки http://cent.mas.bg.ac.rs/nastava/ma_bsc/index_m.htm Лаб 4: Објектно програмирање нумерички

Више

Microsoft Word - AIDA2kolokvijumRsmerResenja.doc

Microsoft Word - AIDA2kolokvijumRsmerResenja.doc Konstrukcija i analiza algoritama 2 (prvi kolokvijum, smer R) 1. a) Konstruisati AVL stablo od brojeva 100, 132, 134, 170, 180, 112, 188, 184, 181, 165 (2 poena) b) Konkatenacija je operacija nad dva skupa

Више

Tutoring System for Distance Learning of Java Programming Language

Tutoring System for Distance Learning of Java Programming Language Niz (array) Nizovi Niz je lista elemenata istog tipa sa zajedničkim imenom. Redosled elemenata u nizovnoj strukturi je bitan. Konkretnom elementu niza pristupa se preko zajedničkog imena niza i konkretne

Више

Slide 1

Slide 1 predmet Inženjerska informatika Operativni sistem dr Anica Milošević Koji operativni sistemi postoje? Microsoft Windows Linux Suse Red Hat Ubuntu Unix 26.1.2018. 2 Šta je Windows operativni sistem? Operativni

Више

Uvod u računarstvo 2+2

Uvod u računarstvo 2+2 Programiranje 2 doc.dr.sc. Goranka Nogo PMF Matematički odsjek, Zagreb Kontakt ured: 228, drugi kat e-mail: nogo@math.hr konzultacije: četvrtak, 12:00-14:00 petak, 11:00-12:00 neki drugi termin, uz prethodni

Више

My_P_Trigo_Zbir_Free

My_P_Trigo_Zbir_Free Штa треба знати пре почетка решавања задатака? ТРИГОНОМЕТРИЈА Ниво - Основне формуле које произилазе из дефиниција тригонометријских функција Тригонометријске функције се дефинишу у правоуглом троуглу

Више

NIAS Projekt e-građani KORISNIČKA UPUTA za aplikaciju NIAS Verzija 1.1 Zagreb, srpanj 2014.

NIAS Projekt e-građani KORISNIČKA UPUTA za aplikaciju NIAS Verzija 1.1 Zagreb, srpanj 2014. Projekt e-građani KORISNIČKA UPUTA za aplikaciju Verzija 1.1 Zagreb, srpanj 2014. Naslov: Opis: Korisnička uputa za aplikaciju Dokument sadrži upute korisnicima aplikacije u sustavu e-građani Ključne riječi:

Више

P9.1 Dodela resursa, Bojenje grafa

P9.1 Dodela resursa, Bojenje grafa Фаза доделе ресурса Ова фаза се у литератури назива и фазом доделе регистара, при чему се под регистрима подразумева скуп ресурса истог типа. Додела регистара променљивама из графа сметњи се обавља тзв.

Више

6-8. ČAS Celobrojno programiranje Rešavamo sledeći poblem celobrojnog programiranja: Gde pretpostavljamo da je A celobrojna matrica dimenzije,. Takođe

6-8. ČAS Celobrojno programiranje Rešavamo sledeći poblem celobrojnog programiranja: Gde pretpostavljamo da je A celobrojna matrica dimenzije,. Takođe 6-8. ČAS Celobrojno programiranje Rešavamo sledeći poblem celobrojnog programiranja: Gde pretpostavljamo da je A celobrojna matrica dimenzije,. Takođe, očekuje se da su koordinate celobrojne. U slučaju

Више

070-ALIP2-udzbenik.indb

070-ALIP2-udzbenik.indb 0. U uvodnom ćemo poglavlju ponoviti osnove programskog jezika C s kojima smo se susreli u. razredu. U kratkom pregledu navedeni su operatori (aritmetički, relacijski i logički), neke od funkcija iz biblioteka

Више

Microsoft PowerPoint - 13-Funkcije_2.ppt [Compatibility Mode]

Microsoft PowerPoint - 13-Funkcije_2.ppt [Compatibility Mode] Osnove programiranja Funkcije - Metode Prenos parametara Po vrednosti Po referenci Po izlazu Sadržaj Opseg važenja promenljive u drugim strukturama Rekurzije Prenos parametara Metoda može vratiti isključivo

Више

ТРОУГАО БРЗИНА и математичка неисправност Лоренцове трансформације у специјалној теорији релативности Александар Вукеља www.

ТРОУГАО БРЗИНА и математичка неисправност Лоренцове трансформације у специјалној теорији релативности Александар Вукеља www. ТРОУГАО БРЗИНА и математичка неисправност Лоренцове трансформације у специјалној теорији релативности Александар Вукеља aleksandar@masstheory.org www.masstheory.org Август 2007 О ауторским правима: Дело

Више

Microsoft PowerPoint - Topic02 - Serbian.ppt

Microsoft PowerPoint - Topic02 - Serbian.ppt Tema 2 Kriterijumi kvaliteta za softverske proizvode DAAD Project Joint Course on Software Engineering Humboldt University Berlin, University of Novi Sad, University of Plovdiv, University of Skopje, University

Више

ELEKTROTEHNIČKI FAKULTET, UNIVERZITET U BEOGRADU KATEDRA ZA ELEKTRONIKU UVOD U ELEKTRONIKU - 13E041UE LABORATORIJSKA VEŽBA Primena mikrokontrolera

ELEKTROTEHNIČKI FAKULTET, UNIVERZITET U BEOGRADU KATEDRA ZA ELEKTRONIKU UVOD U ELEKTRONIKU - 13E041UE LABORATORIJSKA VEŽBA Primena mikrokontrolera ELEKTROTEHNIČKI FAKULTET, UNIVERZITET U BEOGRADU KATEDRA ZA ELEKTRONIKU UVOD U ELEKTRONIKU - 13E041UE LABORATORIJSKA VEŽBA Primena mikrokontrolera CILJ VEŽBE Cilj ove vežbe je da se studenti kreiranjem

Више

Microsoft PowerPoint - OOPpredavanja05 [Compatibility Mode]

Microsoft PowerPoint - OOPpredavanja05 [Compatibility Mode] OBJEKTNO ORIJENTISANO PROGRAMIRANJE PREDAVANJE 5 OBJEKTI U INTERAKCIJI Miloš Kovačević Đorđe Nedeljković 1 /25 OSNOVNI KONCEPTI - Abstrakcija - Modularizacija - Objektne reference - Klasni dijagram - Objektni

Више

Microsoft PowerPoint - Topic02 - Serbian.ppt

Microsoft PowerPoint - Topic02 - Serbian.ppt Tema 2 Kriterijumi kvaliteta za softverske proizvode DAAD Project Joint Course on Software Engineering Humboldt University Berlin, University of Novi Sad, University of Plovdiv, University of Skopje, University

Више

Oblikovanje i analiza algoritama 5. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb OAA 2017, 5. pr

Oblikovanje i analiza algoritama 5. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb OAA 2017, 5. pr Oblikovanje i analiza algoritama 5. predavanje Saša Singer singer@math.hr web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb OAA 2017, 5. predavanje p. 1/68 Sadržaj predavanja Nehomogene rekurzije

Више

Konstrukcija i analiza algoritama Nina Radojičić februar Analiza algoritama, rekurentne relacije 1 Definicija: Neka su f i g dve pozitivne fun

Konstrukcija i analiza algoritama Nina Radojičić februar Analiza algoritama, rekurentne relacije 1 Definicija: Neka su f i g dve pozitivne fun Konstrukcija i analiza algoritama Nina Radojičić februar 2018. 1 Analiza algoritama, rekurentne relacije 1 Definicija: Neka su f i g dve pozitivne funkcije od argumenta n iz skupa N prirodnih brojeva.

Више

P1.2 Projektovanje asemblera

P1.2 Projektovanje asemblera ПРОЈЕКТОВАЊЕ АСЕМБЛЕРА Асемблер Модули асемблера 1 Дефинисање новог лингвистичког нивоа превођењем Потребан преводилац алат који преводи програм написан на једном језику (на једном лингвистичком нивоу)

Више

Programski jezici i strukture podataka

Programski jezici i strukture podataka Programski jezici i strukture podataka 7 ULAZ, IZLAZ I DATOTEKE Ulazno izlazne operacije Programi moraju imati mogućnost da upisuju podatke u datoteke ili da ih ispisuju na izlazni uređaj poput ekrana

Више

Matematika 1 - izborna

Matematika 1 - izborna 3.3. NELINEARNE DIOFANTSKE JEDNADŽBE Navest ćemo sada neke metode rješavanja diofantskih jednadžbi koje su drugog i viših stupnjeva. Sve su te metode zapravo posebni oblici jedne opće metode, koja se naziva

Више

Упутство за пријављивање испита путем интернета Да би студент могао да пријави испит путем интернета мора прво да се пријави. Пријављивање се врши у п

Упутство за пријављивање испита путем интернета Да би студент могао да пријави испит путем интернета мора прво да се пријави. Пријављивање се врши у п Упутство за пријављивање испита путем интернета Да би студент могао да пријави испит путем интернета мора прво да се пријави. Пријављивање се врши у посебном дијалог-прозору до кога се долази линком есервис

Више

УПУТСТВО ЗА КОРИСНИКА Приступ локацији часописа Српски архив за целокупно лекарство добија се преко internet adrese: Након

УПУТСТВО ЗА КОРИСНИКА Приступ локацији часописа Српски архив за целокупно лекарство добија се преко internet adrese:   Након УПУТСТВО ЗА КОРИСНИКА Приступ локацији часописа Српски архив за целокупно лекарство добија се преко internet adrese: http://www.srpskiarhiv.rs/ Након тога се на екрану појављује форма за пријаву на часопис

Више

PROGRAMIRANJE Program je niz naredbi razumljivih računalu koje rješavaju neki problem. Algoritam je postupak raščlanjivanja problema na jednostavnije

PROGRAMIRANJE Program je niz naredbi razumljivih računalu koje rješavaju neki problem. Algoritam je postupak raščlanjivanja problema na jednostavnije PROGRAMIRANJE Program je niz naredbi razumljivih računalu koje rješavaju neki problem. Algoritam je postupak raščlanjivanja problema na jednostavnije korake. Uz dobro razrađen algoritam neku radnju ćemo

Више

PROMENLJIVE, TIPOVI PROMENLJIVIH

PROMENLJIVE, TIPOVI PROMENLJIVIH PROMENLJIVE, TIPOVI PROMENLJIVIH Šta je promenljiva? To je objekat jezika koji ima ime i kome se mogu dodeljivati vrednosti. Svakoj promenljivoj se dodeljuje registar (memorijska lokacija) operativne memorije

Више

Računarske mreže Čas 2 Ivana Tanasijević Matematički fakultet, Beograd 1

Računarske mreže Čas 2 Ivana Tanasijević   Matematički fakultet, Beograd 1 Računarske mreže Čas 2 Ivana Tanasijević e-mail: ivana@matf.bg.ac.rs Matematički fakultet, Beograd 1 Utvrđivanje gradiva sa prethodnog časa: popunjavanje adresne strukture, kreiranje soketa, privezivanje

Више

O Nanokinetik NeeS TOC Builder-u NeeS TOC Builder je aplikacija koja se koristi za kreiranje Tabele sadržaja (TOC) za elektronske podneske u NeeS form

O Nanokinetik NeeS TOC Builder-u NeeS TOC Builder je aplikacija koja se koristi za kreiranje Tabele sadržaja (TOC) za elektronske podneske u NeeS form O Nanokinetik NeeS TOC Builder-u NeeS TOC Builder je aplikacija koja se koristi za kreiranje Tabele sadržaja (TOC) za elektronske podneske u NeeS formatu. Ključne pojedinosti Nanokinetik NeeS TOC Builder-a:

Више

My_P_Red_Bin_Zbir_Free

My_P_Red_Bin_Zbir_Free БИНОМНА ФОРМУЛА Шт треба знати пре почетка решавања задатака? I Треба знати биному формулу која даје одговор на питање чему је једнак развој једног бинома када га степенујемо са бројем 0 ( ) или ( ) 0!,

Више

Microsoft PowerPoint - 13 PIK (Mentor Graphic ASIC).ppt

Microsoft PowerPoint - 13 PIK (Mentor Graphic ASIC).ppt Projektovanje integrisanih kola Delimično projektovanje po narudžbini Sadržaj: Sadržaj: I. I. Uvod Uvod - sistem projektovanja II. II. CMOS Analiza Proces kola primenom računara III. III. Potpuno Optimizacija

Више

УНИВЕРЗИТЕТ У БЕОГРАДУ МАШИНСКИ ФАКУЛТЕТ Предмет: КОМПЈУТЕРСКА СИМУЛАЦИЈА И ВЕШТАЧКА ИНТЕЛИГЕНЦИЈА Задатак број: Лист/листова: 1/1 Задатак 5.1 Pостоје

УНИВЕРЗИТЕТ У БЕОГРАДУ МАШИНСКИ ФАКУЛТЕТ Предмет: КОМПЈУТЕРСКА СИМУЛАЦИЈА И ВЕШТАЧКА ИНТЕЛИГЕНЦИЈА Задатак број: Лист/листова: 1/1 Задатак 5.1 Pостоје Лист/листова: 1/1 Задатак 5.1 Pостоје софтвери за препознавање бар кодова који знатно олакшавају велики број операција које захтевају препознавање објеката. Слика 1: Приказ свих слова за које је ART-1

Више

Microsoft PowerPoint - MR - Vjezbe - 03.ppt [Compatibility Mode]

Microsoft PowerPoint - MR - Vjezbe - 03.ppt [Compatibility Mode] Sveučilište u Zagrebu PMF Matematički odsjek Mreže računala Vježbe 03 Zvonimir Bujanović Slaven Kožić Vinko Petričević Mrežno programiranje: SocketAPI Programiramo u aplikacijskom sloju, za ostale se brinu

Више

Microsoft PowerPoint - 03-Slozenost [Compatibility Mode]

Microsoft PowerPoint - 03-Slozenost [Compatibility Mode] Сложеност алгоритама (Програмирање 2, глава 3, глава 4-4.3) Проблем: класа задатака истог типа Велики број различитих (коректних) алгоритама Величина (димензија) проблема нпр. количина података које треба

Више

Classroom Expectations

Classroom Expectations АТ-8: Терминирање производно-технолошких ентитета Проф. др Зоран Миљковић Садржај Пројектовање флексибилних ; Математички модел за оптимизацију флексибилних ; Генетички алгоритми у оптимизацији флексибилних

Више

Орт колоквијум

Орт колоквијум Испит из Основа рачунарске технике - / (6.6.. Р е ш е њ е Задатак Комбинациона мрежа има пет улаза, по два за број освојених сетова тенисера и један сигнал који одлучује ко је бољи уколико је резултат

Више

Celobrojno programiranje Rešavamo sledeći poblem celobrojnog programiranja: min c T x Ax = b x 0 x Z n Gde pretpostavljamo da je A celobrojna matrica

Celobrojno programiranje Rešavamo sledeći poblem celobrojnog programiranja: min c T x Ax = b x 0 x Z n Gde pretpostavljamo da je A celobrojna matrica Celobrojno programiranje Rešavamo sledeći poblem celobrojnog programiranja: min c T x Ax = b x 0 x Z n Gde pretpostavljamo da je A celobrojna matrica dimenzije m n, b Z m, c Z n. Takođe, očekuje se da

Више

PowerPoint Presentation

PowerPoint Presentation V Unos i prikaz podataka Programi čitaju i ispisuju podatke sa spoljašnjih uređaja Postoji prolazni U/I (tastatura i monitor) i trajni U/I podataka (fajlovi) printf i scanf pišu/čitaju na monitor ili sa

Више

UG802 Dual Core

UG802 Dual Core Declaration: U2A Dual Core Andriod4.1 Mini PC Korisničko uputstvo U ovom uputstvu su uključene sve informacije za bezbedno I pravilno korišćenje uređaja.da bi se izbegle nesreće I oštećenje proizvoda molimo

Више

PHP proširenja za rad sa bazama podataka Postoje pojedinačna proširenja za različite tipove baza podataka sa svojim bibliotekama funkcija npr. postoji

PHP proširenja za rad sa bazama podataka Postoje pojedinačna proširenja za različite tipove baza podataka sa svojim bibliotekama funkcija npr. postoji PHP proširenja za rad sa bazama podataka Postoje pojedinačna proširenja za različite tipove baza podataka sa svojim bibliotekama funkcija npr. postoji podrška za IBM DB2, Oracle, Ingres, MySQL, PostgreSQL,

Више

ELEKTROTEHNIČKI FAKULTET UNIVERZITETA U BEOGRADU BEOGRAD, Ispit iz Programiranja 2 Ispit traje 135 minuta Napomene: a) Pažljivo proučite U

ELEKTROTEHNIČKI FAKULTET UNIVERZITETA U BEOGRADU BEOGRAD, Ispit iz Programiranja 2 Ispit traje 135 minuta Napomene: a) Pažljivo proučite U ELEKTROTEHNIČKI FAKULTET UNIVERZITETA U BEOGRADU BEOGRAD, 02.07.2019. Ispit iz Programiranja 2 Ispit traje 135 minuta Napomene: a) Pažljivo proučite Uputstvo pre popunjavanja Obrasca za odgovore. b) Vrednost

Више

Uputstvo za korišćenje Mastercard Identity Check usluge Uputstvo za korišćenje Mastercard Identity Check usluga sigurnijeg plaćanja na internetu

Uputstvo za korišćenje Mastercard Identity Check usluge Uputstvo za korišćenje Mastercard Identity Check usluga sigurnijeg plaćanja na internetu Uputstvo za korišćenje Mastercard Identity Check usluge Uputstvo za korišćenje Mastercard Identity Check usluga sigurnijeg plaćanja na internetu Uputstvo za korišćenje Mastercard Identity Check usluge

Више

1 Polinomi jedne promenljive Neka je K polje. Izraz P (x) = a 0 + a 1 x + + a n x n = n a k x k, x K, naziva se algebarski polinom po x nad poljem K.

1 Polinomi jedne promenljive Neka je K polje. Izraz P (x) = a 0 + a 1 x + + a n x n = n a k x k, x K, naziva se algebarski polinom po x nad poljem K. 1 Polinomi jedne promenljive Neka je K polje. Izraz P (x) = a 0 + a 1 x + + a n x n = n a k x k, x K, naziva se algebarski polinom po x nad poljem K. Elementi a k K su koeficijenti polinoma P (x). Ako

Више

Često postavljana pitanja u programu OBRT 1. Kako napraviti uplatu u knjizi tražbina i obveza? 2. Kako odabrati mapu/disk za pohranu podataka? 3. Kako

Često postavljana pitanja u programu OBRT 1. Kako napraviti uplatu u knjizi tražbina i obveza? 2. Kako odabrati mapu/disk za pohranu podataka? 3. Kako Često postavljana pitanja u programu OBRT 1. Kako napraviti uplatu u knjizi tražbina i obveza? 2. Kako odabrati mapu/disk za pohranu podataka? 3. Kako instalirati (novi) finin certifikat? 4. Kako ispisati

Више

Grafovi 1. Posmatrajmo graf prikazan na slici sa desne strane. a) Odrediti skup čvorova V i skup grana E posmatranog grafa. Za svaku granu posebno odr

Grafovi 1. Posmatrajmo graf prikazan na slici sa desne strane. a) Odrediti skup čvorova V i skup grana E posmatranog grafa. Za svaku granu posebno odr Grafovi 1. Posmatrajmo graf prikazan na slici sa desne strane. a) Odrediti skup čvorova V i skup grana E posmatranog grafa. Za svaku granu posebno odrediti njene krajeve. b) Odrediti sledeće skupove: -

Више

PowerPoint Presentation

PowerPoint Presentation Python tutorijal - praktični primeri - Sadržaj: 1. Upoznavanje sa razvojnim okruženjem - Python proširenje (PTVS) za Visual Studio 2015 - Druga razvojna okruženja 2. Osnovi Python jezika - Sintaksa i konvencije

Више

Programiranje 1 5. predavanje dodatak Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2018, 5. predavanj

Programiranje 1 5. predavanje dodatak Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2018, 5. predavanj Programiranje 1 5. predavanje dodatak Saša Singer singer@math.hr web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2018, 5. predavanje dodatak p. 1/60 Sadržaj predavanja dodatka Primjeri

Више

Osnove inženjerske informatike II. Uvod u programiranje Vaš prvi program K. F. & V. B.

Osnove inženjerske informatike II. Uvod u programiranje Vaš prvi program K. F. & V. B. Osnove inženjerske informatike II. Uvod u programiranje Vaš prvi program K. F. & V. B. The only way to learn a new programming language is by writing programs in it. Kernighan & Ritchie... and it is well

Више

Logicko projektovanje racunarskih sistema I

Logicko projektovanje racunarskih sistema I PRIMERI SA PREDAVANJA 17 Beta asembler Zadatak 1. Posmatrajmo sledeću funkciju napisanu u programskom jeziku C, za računanje najvećeg zajedničkog delioca dva pozitivna cela broja: int gcd(int a, int b)

Више

PuTTY CERT.hr-PUBDOC

PuTTY CERT.hr-PUBDOC PuTTY CERT.hr-PUBDOC-2018-12-371 Sadržaj 1 UVOD... 3 2 INSTALACIJA ALATA PUTTY... 4 3 KORIŠTENJE ALATA PUTTY... 7 3.1 POVEZIVANJE S UDALJENIM RAČUNALOM... 7 3.2 POHRANA PROFILA KORISNIČKIH SJEDNICA...

Више

Biz web hosting

Biz web hosting BIZ WEB HOSTING KORISNIČKO UPUTSTVO WWW.OBLACI.RS SADRŽAJ PRISTUP KORISNIČKOM PORTALU... 2 KUPOVINA BIZ WEB HOSTING SERVISA... 4 PRISTUP PLESK WEB KONTROLNOM PANELU... 14 PORTALI I DOMENI... 14 FAJL MENADŽER...

Више

Paper Title (use style: paper title)

Paper Title (use style: paper title) Статистичка анализа коришћења електричне енергије која за последицу има примену повољнијег тарифног става Аутор: Марко Пантовић Факултет техничких наука, Чачак ИАС Техника и информатика, 08/09 e-mal адреса:

Више

Aster

Aster ASTER V7 Multi-user Extension za Microsoft Windows 7 Vodič za brzi početak Instalirajte ASTER V7 softver koristeći instalaciju dobavljača. Od ostalih instalacionih opcija preporučujemo da svako posebno

Више

Slide 1

Slide 1 Kako jednostavnije preći na višu verziju Formsa Ivan Lovrić, Vedran Latin 14.10.2009. Sadržaj prezentacije Predmet migracije Razlozi za migraciju Infrastruktura potrebna za migraciju Pilot migracija Migracija

Више

P11.2 Izbor instrukcija, IBURG

P11.2 Izbor instrukcija, IBURG Избор инструкција (1/2) Машинска инструкција се може приказати као део стабла међукода, који се назива шаблон стабла (енгл. tree pattern). Избор инструкција је проблем поплочавања стабла међукода минималним

Више

1. Vremensko ograničenje Memorijsko ograničenje ulaz izlaz 0,1 s 64 MB standardni ulaz standardni izlaz Banka želi da upozori kupce na sumnjive aktivn

1. Vremensko ograničenje Memorijsko ograničenje ulaz izlaz 0,1 s 64 MB standardni ulaz standardni izlaz Banka želi da upozori kupce na sumnjive aktivn 1. Vremensko ograničenje Memorijsko ograničenje ulaz izlaz 0,1 s 64 MB standardni ulaz standardni izlaz Banka želi da upozori kupce na sumnjive aktivnosti na njihovom računu. Prilikom svake transakcije

Више

OSNOVNA ŠKOLA, VI RAZRED MATEMATIKA

OSNOVNA ŠKOLA, VI RAZRED MATEMATIKA OSNOVNA ŠKOLA, VI RAZRED MATEMATIKA UPUTSTVO ZA RAD Drage učenice i učenici, Čestitamo! Uspjeli ste da dođete na državno takmičenje iz matematike i samim tim ste već napravili veliki uspjeh Zato zadatke

Више

Infokup - Školsko Osnovne škole Algoritmi BaPaCpp

Infokup - Školsko Osnovne škole Algoritmi BaPaCpp 21.. siječnja 2013.. od 1:30 do 16:30 Školsko natjecanje / Algoritmi (Basic/Pascal/C/C++) Sadržaj Zadaci... 1 Zadatak: Napolitanke... 2 Zadatak: Peking... 3 Zadatak: Joker... Zadaci U tablici možete pogledati

Више

Microsoft Word - GRAFICI TRIGONOMETRIJSKIH FUNKCIJA-II deo.doc

Microsoft Word - GRAFICI TRIGONOMETRIJSKIH FUNKCIJA-II deo.doc GRAFICI TRIGONOMETRIJSKIH FUNKCIJA (II deo U prethodnom fajlu ( grafici trigonometrijskih funkcija I deo smo proučili kako se crtaju grafici u zavisnosti od brojeva a,b i c. Sada možemo sklopiti i ceo

Више