Slide 1

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

Download "Slide 1"

Транскрипт

1 Funkcionalno programiranje Klase -- Funkcionalno programiranje -- ETF Beograd, 2019.

2 Motivacija Scala je OO jezik potreba za klasama je evidentna Uloga klasa se nije promenila enkapsulacija podataka grupisanje srodnih funkcionalnosti polimorfizam... Scala se snažno oslanja na Javu (mada su moguće i drugačije implementacije) sve klase se implicitno izvode iz java.lang.object preciznije: iz scala.anyref, koji je alias za java.lang.object Scala može da koristi sve Java klase -- Funkcionalno programiranje -- ETF Beograd 2

3 Klase Osnovni elementi class X { var vrednost = 0 val x1 = new X val x2 = new X // podrazumeva se public x1 vrednost 0 x2 vrednost Podsetnik: val ne znači da je objekat nepromenljiv, već da dato ime ne može da se odnosi na drugi objekat x1.vrednost = 3 x1 = new X // u redu // greška 3

4 Klase Primer klase Racionalnih brojeva class Rational(x: Int, y: Int) { def numer = x def denom = y Uveden je novi tip Klasa direktno prima parametre, umesto da se piše poseban konstruktor. Parametri nisu vidljivi van tela klase. Implicitno definisan primarni konstruktor Objekti se stvaraju kao u Javi: new Rational(1,2) Članovima se pristupa, kao u Javi, infiksim operatorom. val x = new Rational(1,2) // val x: Rational = new... x.numer // 1 x.denom // 2 x.numer = 2 // greška 4

5 Klase class Rational(x: Int, y: Int) { println("racionalni broj: " + x + "/" + y) Sav kod koji nije deo definicije polja ili metode biće ugrađen u primarni konstruktor Ugrađivanje se vrši u redosledu pojavljivanja u kodu Kada je potrebna provera validnosti parametara koristi se metoda require (definisana u objektu Predef) class Rational(x: Int, y: Int) { require(y!= 0) Baca izuzetak IllegalArgumentException ako uslov nije ispunjen; u suprotnom nema efekta 5

6 Metode Namena je ista kao u "klasičnim" OO jezicima (C++, Java) definišu ponašanje objekata dozvoljeno preklapanje operatora kao i definisanje novih operatora class Rational(x: Int, y: Int) { private def gcd(a: Int, b: Int): Int = if(b==0) a else gcd(b, a%b) //razmotriti neg. vred. private val g = gcd(x, y) def numer = x / g def denom = y / g // x.abs, y.abs // ili: val numer: Int = x / g // ili: val denom: Int = y / g override def tostring() = numer + "/" + denom def ili val isto se koriste, ali šta je bolje? def se izračunava pri svakom pozivu val samo jednom 6

7 Metode Metode često imaju samo bočni efekat, a to je promena stanja objekta Takve metode su po tipu Unit (što odgovara Javinom void) Povratni tip nije neophodno pisati, ali tada telo metode mora biti u vitičastim zagradama, a ne prethodi znak = class X { private var vrednost = 0 // private[this] samo this obj. def promeni(v: Int) { vrednost = v // isto kao: def promeni(v: Int): Unit = vrednost = v -- Funkcionalno programiranje -- ETF Beograd 7

8 Konstruktori Primarni konstruktor se implicitno generiše jedino on može da pozove konstruktor roditeljske klase može biti proglašen privatnim: class Klasa private {... Moguće je napisati pomoćne (auxiliary) konstruktore Zovu se this class Rational(x: Int, y: Int) {... def this(x: Int) = this(x, 1) // poziv primarnom k. Svaki pomoćni konstruktor mora da pozove neki drugi konstruktor kao svoju prvu aktivnost može da pozove primarni može da pozove pomoćni koji je ranije definisan Alternativno: y: Int = 1 dakle, primarni će uvek biti pozvan, nema mogućnosti ciklusa 8

9 Konstruktori Telo klase se uslovno može posmatrati kao telo primarnog konsturktora svaki poziv metode će biti izvršen prilikom stvaranja objekta class Student(ime: String, brind: String) { println("stvaram studenta")... var s = new Student("Pera", "123/456")//> Stvaram studenta -- Funkcionalno programiranje -- ETF Beograd 9

10 Konstruktori Parametri konstruktora mogu imati modifikatore [private] var ili val parametar postaje atribut klase automatski se generišu metode za pristup atributu var: generišu se inspektor i mutator val: generiše se inspektor s.ime = "Mika" s.brind = "122/345" // greška // greška class Student2(var ime: String, val brind: String) { println("stvaram studenta2") val s2 = new Student2("Pera", "123/456")//> Stvaram studenta2 s2.ime = "Mika" s2.brind = "122/345" // greška println(s2.brind) 10

11 Operatori Svaka metoda sa jednim parametrom može biti korišćena kao infiksni operator class Rational(x: Int, y: Int) { Parametri klase su dostupni samo preko this... def add(r: Rational) = x + r.x... // greška new Rational(numer*r.denom + r.numer*denom, denom*r.denom ) Dakle, može se napisati: r add s umesto: r.add(s) 1+2 je zapravo poziv metode "+" nad Int objektom (1), gde je (2) parametar: 1.+(2) U tom smislu, ne postoji "klasično" preklapanje operatora 11

12 Operatori Mogu se definisati novi operatori Identifikatori mogu biti: slovo, praćeno sekvencom slova ili cifara simbol operatora, praćen drugim simbolima operatora mešovit identifikator: alfanum_operator - primer: unary_+ Prioritet operatora je određen prvim znakom Asocijativnost je određena poslednjim znakom 12

13 rastući prioritet Operatori op. dodele (i svi drugi koji se završavaju op. =, osim <= >= ==!=) bilo koje slovo (ne preporučuje se upotreba slova $) ^ & < > =! // samo = nije validan identifikator, ne može se preklopiti : // asocijativnost s desna ulevo ako se ime operatora završava sa : + - * / % svi drugi specijalni znaci (ne preporučuje se _ jer ima specijalnu ulogu) 13

14 Operatori Primeri operatorskih identifikatora + ++ ::: <?> :-> Scala kompajler interno prevodi identifikatore operatora u validne Java identifikatore. :-> bi postao $colon$minus$greater Obratiti pažnju Scala operatori mogu imati proizvoljnu dužinu U Javi, izraz x<-y bi se interpretirao kao x < (- y) Scala interpretacija je: x <- y Ako se želi Java interpretacija, potreban je razmak < - Operandi se uvek računaju s leva udesno, nebitna asocijativnost Primeri: x *= y+1 tumači se kao x.*=(y+1) a:::b tumači se kao b.:::(a), prvo se računa a, onda b 14

15 Operatori class Rational(x: Int, y: Int) {... def + (r: Rational) = new Rational(numer * r.denom + r.numer * denom, denom * r.denom ) def - (r: Rational) = new Rational(numer * r.denom - r.numer * denom, denom * r.denom ) def * (r: Rational) = new Rational(numer * r.numer, denom * r.denom ) val x = new Rational(1,2) val y = new Rational(1,3) x*x + y*y // 13/36 15

16 Operatori - detaljnije u poglavlju 21 - Nije moguće napisati val r = new Rational(2,3) val r1 = r*2 Oba operanda moraju biti tipa Rational Rešenje: preklapanje operatora def * (i: Int): Rational = new Rational(numer + i * denom, denom) Sada je moguće napisati val r1 = r*2 Ali još uvek nije moguće napisati val r1 = 2*r Potrebna konverzija levog operanda implicitna konverzija koja izraz 2 * r prevodi u new Rational(2) * r moguće neimplicitne konverzije se ne razmatraju implicit def inttorational(x: Int) = new Rational(x) 16

17 Operatori Tehnički, Scala nema preklapanje operatora 1+2 je zapravo poziv metode + nad objektom 1: (1).+(2) Elementima nizova se pristupa oblim zagradama obj(i) je zapravo poziv obj.apply(i) dakle pristup elementu i je zapravo poziv metode sa arg. i Ovo nije ograničeno samo na nizove važi za svaki objekat (ako tip ima definisanu metodu apply) Slično: obj(i) = neka_vrednost poziva se obj.update(i, neka_vrednost) -- Funkcionalno programiranje -- ETF Beograd 17

18 Unikatni (singleton) objekti Scala je u nekim svojim aspektima više objektno-orijentisana od Jave Ne postoje statički članovi u jeziku Scala Umesto njih, Scala propisuje unikatne objekte Definicija unikatnog objekta: umesto class dolazi object Ne može da se instancira ne koristi se new Unikatni objekat može biti nazvan isto kao i neka klasa tada je on prateći objekat (companion object) toj klasi, a ona je prateća klasa (companion class) tom objektu moraju oba (klasa i objekat) biti definisani u istom fajlu uzajamni odnos prijateljstva pristup čak i privatnim članovima U suprotnom to je samostalni (standalone) objekat 18

19 Unikatni (singleton) objekti U unikatnim objektima se mogu pisati metode i atributi poput statičkih metoda i atributa u Javi sintaksa pristupa je ista (naziv_objekta. naziv_metode ili atributa) Ali unikatni objekat je objekat (postoji u memoriji) može biti izveden iz druge klase i mogu mu se pridružiti osobine - crte (traits) može mu se obraćati kao i drugim objektima može se prosleđivati tamo gde se očekuju objekti Međutim ne definiše tip podatka to radi prateća klasa (ako postoji) ne instancira se (ne dobija parametre prilikom stvaranja) inicijalizuje se pri prvoj upotrebi -- Funkcionalno programiranje -- ETF Beograd 19

20 Pravljenje Scala aplikacije Scala program mora da poseduje najmanje jedan samostalni unikatni objekat sa main metodom Alternativno: extends App main metoda ima jedan parametar, tipa Array[String] Program se pokreće imenovanjem samostalnog objekta Scala implicitno uvozi: paket java.lang paket scala unikatni objekat scala.predef println je zapravo Predef.println -- Funkcionalno programiranje -- ETF Beograd 20

21 Pravljenje Scala aplikacije // strquote.scala package w02 object strquote { def quote(s: String) = ">>"+s // testapp.scala package w02 import strquote.quote object testapp { def main(args: Array[String]) { for( arg <- args ) println(quote(arg)) C:\> scalac strquote.scala testapp.scala C:\> scala testapp xyz >>xyz scala w02.testapp xyz 21

22 Apstraktne klase i nasleđivanje Apstraktne klase: ne mogu da se instanciraju abstract class IntSet { def incl(x: Int): IntSet def contains(x: Int): Boolean Nasleđivanje class Empty extends IntSet { def contains(x : Int): Boolean = false def incl(x : Int): IntSet = Ovde se daje primer implementacije skupa preko binarnog stabla new NonEmpty(x, new Empty, new Empty) Primetiti: za apstraktne metode ne mora da se piše override u izvedenim klasama 22

23 Apstraktne klase i nasleđivanje class NonEmpty(elem: Int, left: IntSet, right: IntSet) extends IntSet { def contains(x : Int): Boolean = { if (x < elem) left contains x else if (x > elem) right contains x else true def incl(x : Int): IntSet = { if (x<elem) new NonEmpty(elem, left incl x, right) else if (x>elem) new NonEmpty(elem, left, right incl x) else this -- Funkcionalno programiranje -- ETF Beograd 23

24 Apstraktne klase i nasleđivanje val x = new NonEmpty(10, new Empty, new Empty) val y = x incl 5 incl 15 incl 7 incl 3 val z = y incl 1 10 z E 10 x E E 1 3 E 5 10 y Primetiti: ovakva konstrukcija ima smisla zato što se pretpostavljaju nepromenljivi objekti E E E E E E 24

25 Apstraktne klase i nasleđivanje abstract class Entity { def name: String override def tostring = name metoda bez parametara (parameterless) razlikuje se od metoda sa praznim zagradama (empty-paren) class Constant extends Entity { override val name = "Constant" nadjačava metodu iz osnovne klase class Robot(id: Int) extends Entity { def name = "T-" + id class Person(override val name: String) extends Entity parametarsko polje: kad ima modifikator var ili val, postaje atribut klase val e = new Constant println(e.name) // Constant val e2 = new Person("Pera") println(e2.name) // Pera val e3 = new Robot(800) println(e3.name) // T

26 Apstraktne klase i nasleđivanje Preporučuje se upotreba metoda bez parametara kada nema parametara i kada je metoda inspektor (samo čita stanje) Posledica klijentski kod ne zna kako je realizovan atribut (vrednost ili metoda) moguće je jednostavno zameniti implementaciju po potrebi to je princip uniformnog pristupa (uniform access principle) vrednost zauzima više memorije, ali se brže (?) izvršava Scala pravi razliku između metoda bez parametara i metoda sa praznim zagradama ali dozvoljava njihovo mešanje (jedna može da nadjača drugu, itd) nije neophodno pisanje zagrada pri pozivu ipak se preporučuje pisanje () kada poziv nije dohvatanje vrednosti 26

27 Apstraktne klase i nasleđivanje Parametarska polja class Person(val name: String) extends Entity istovremeno postaje parametar i (nepromenljiv) atribut klase ekvivalentno: class Person(n: String) extends Entity { val name = n umesto val može i var Mogući modifikatori su private ili private[this] protected override class Cat { val dangerous = false class Tiger( override val dangerous: Boolean, private var age: Int ) extends Cat 27

28 Apstraktne klase i nasleđivanje Pozivanje konstruktora roditeljske klase class Cat(val name: String) { val dangerous = false class Tiger( name: String, override val dangerous: Boolean, private var age: Int ) extends Cat(name) Može se pozvati bilo koji konstruktor roditeljske klase -- Funkcionalno programiranje -- ETF Beograd 28

29 Apstraktne klase i nasleđivanje Sprečavanje izvođenja odnosno nadjačavanja modifikator final, kao u Javi ispred class za sprečavanje izvođenja ispred člana čije nadjačavanje treba sprečiti (atribut ili metoda) final class Cat(val name: String) { val dangerous = false ili class Cat(val name: String) { final val dangerous = false Modifikator sealed dati tip mogu naslediti samo drugi tipovi definisani u istom fajlu sealed abstract class Expr class Var(name: String) extends Expr 29

30 Primer: singleton Napraviti klasu prema projektnom uzorku unikat (singleton) Analiza: obezbediti da klasa ne bude apstraktna ne može direktno da se instancira objekat date klase metoda koja vrši dohvatanje jedinstvene instance Rešenje: učiniti primarni konstruktor privatnim napraviti prateći objekat sa metodom getinstance -- Funkcionalno programiranje -- ETF Beograd 30

31 Primer: singleton class NarodnaBiblioteka private { override def tostring : String = "Narodna biblioteka" object NarodnaBiblioteka { val instance = new NarodnaBiblioteka def getinstance = instance val tt = NarodnaBiblioteka.getInstance 31

32 Hijerarhija klasa 32

33 Hijerarhija klasa U korenu hijerarhije je klasa Any final def ==(that: Any): Boolean final def!=(that: Any): Boolean def equals(that: Any): Boolean def ##: Int def hashcode: Int def tostring: String -- Funkcionalno programiranje -- ETF Beograd 33

34 Hijerarhija klasa Klasa AnyVal Roditeljska klasa za svaku ugrađenu vrednosnu klasu a) Byte, Short, Char, Int, Long, Float, Double, Boolean (1:1 Java) radi se automatski box-ing u odgovarajući tip pr. java.lang.integer b) Unit (~ void u Javi) rezultat dodele vrednosti, kao i nekih kontrolnih struktura (while,...) Ne mogu se praviti instance (a) pomoću new tip zato što su sve klase deklarisane kao abstract final Postoji jedna instanca (b), označava se () scala> def greet() { println("hi") a = if (true) 1 else false greet: ()Unit scala> greet() == () hi res0: Boolean = true Kog tipa je a? 34

35 Hijerarhija klasa Klasa AnyRef Roditeljska klasa za sve referentne tipove Java java.lang.object.net system.object -- Funkcionalno programiranje -- ETF Beograd 35

36 Hijerarhija klasa Klasa Null tip null reference potklasa svih referentnih tipova (svih koje nasleđuju AnyRef) nije kompatibilna sa vrednosnim tipovima (AnyVal) Klasa Nothing na dnu hijerarhije Scala klasa ne postoje objekti ovog tipa specifični slučajevi upotrebe (izuzetak, tip elementa prazne kolek.) scala.predef def error(message: String): Nothing = throw new RuntimeException(message) def divide(x: Int, y: Int): Int = if (y!= 0) x / y else error("deljenje nulom") 36

37 Uvoz tipova Automatski: sve iz paketa scala sve iz paketa java.lang svi članovi objekta scala.predef Sintaksa: import paket.tip import paket.{tip1, tip2,... import paket._ -- Funkcionalno programiranje -- ETF Beograd 37

38 Jednakost objekata - detaljnije u poglavlju 30 - Razlikuje se u odnosu na pristup jezika Java Smisao operatora == je "prirodna" jednakost za vrednosne tipove, to je jednakost vrednosti za referentne tipove, to je jednakost sadržaja (equals u Javi) Za referentne tipove postoji metoda eq, koja odgovara == u Javi ne koristi se mnogo, jer služi samo kada je od interesa identitet objekta Veza između operatora == i equals u jeziku Scala nije moguće nadjačati == (finalna metoda u klasi Any) op == poziva metodu equals metoda equals može se nadjačati za ref. tip. podrazumevano equals: poredi reference (kao u Javi) dakle, podrazumevano == i equals ponašaju se kao eq final def == (that: Any): Boolean = if (null eq this) {null eq that else {this equals that Ali podrazumevano poredi reference. // principijelno 38

39 Jednakost objekata primer razlike Java Scala Java boolean isequal(integer x, Integer y) { return x == y; System.out.println(isEqual(421, 421)); // false Scala uzima u obzir tip stvarnih argumenata scala> def isequal(x: Int, y: Int) = x == y isequal: (Int,Int)Boolean scala> isequal(421, 421) res10: Boolean = true scala> def isequal(x: Any, y: Any) = x == y isequal: (Any,Any)Boolean scala> isequal(421, 421) res11: Boolean = true 39

40 Jednakost objekata - detaljnije u poglavlju 30 - U klasi Any definisana je metoda hashcode Ugovor ove metode zahteva da ako equals nad dva objekta vraća true onda i hashcode mora vratiti isti celobrojni rezultat Dakle, equals i hashcode se zajedno nadjačavaju Ova stavka ugovora je bitna zbog kolekcija čiji rad se zasniva na toj pretpostavci Voditi računa da se equals i hashcode ne određuju na osnovu promenljivih (atributa) ako je potrebno poređenje objekata klasa koje imaju promenljive atribute, bolje koristiti neko drugo ime -- Funkcionalno programiranje -- ETF Beograd 40

41 Parametrizacija tipom Namena: poput generika u Javi (šablona C++) reupotreba koda kada je algoritam isti drugi vid polimorfizma trait Crta[T] class Klasa1[T] class Klasa2[T](par1 : T, par2 : Klasa1[T]) extends Crta[T] Mogu se i metode parametrizovati: def napravi[t](elem: T) = new Klasa3[T](elem) napravi[int](1) // napravi(1) napravi[boolean](true) // napravi(true) 41

42 Parametrizacija tipom Vrši se brisanje (type erasure), kao u Javi val seq : Seq[String] = Seq(1,2,3) // ne prevodi se val seq : Seq[Int] = Seq(1,2,3) seq.isinstanceof[seq[int]] // true seq.isinstanceof[int] // false seq.isinstanceof[seq[string]] // true 42

43 Parametrizacija tipom Moguće je navesti gornje i donje granice za parametarske tipove gornja granica <: donja granica >: Primer: def assertallpositive[s <: IntSet] (r: S) : S =... S može biti svaki tip koji odgovara tipu IntSet [S >: NonEmpty] S može biti NonEmpty, IntSet, AnyRef i Any [S >: NonEmpty <: IntSet] bilo koji tip u intervalu NonEmpty i IntSet 43

44 Utvrđivanje tipa i konverzija class Any def isinstaceof[t]: Boolean def asinstanceof[t]: T // ClassCastException if (x.isinstanceof[string]) { val s = x.asinstanceof[string] s.length else... Ipak, eksplicitno utvrđivanje tipa treba izbegavati -- Funkcionalno programiranje -- ETF Beograd 44

45 Konverzija tipa u cilju čitanja vrednosti Ponekad je dovoljno dohvatiti vrednost nekog podatka bez obzira na njegov tip Konverzija u cilju čitanja (view bound): specificira da neki tip može biti "posmatran" kao neki drugi Koristi se oznaka <% Potrebna implicitna (automatska) konverzija između tipova Implicitne funkcije to omogućavaju one dozvoljavaju svoju primenu (apply) kada to može dovesti do zadovoljenja tipova u izrazu -- Funkcionalno programiranje -- ETF Beograd 45

46 Konverzija tipa u cilju čitanja vrednosti scala> implicit def strtoint(x: String) = x.toint strtoint: (x: String)Int scala> "123" res0: java.lang.string = 123 scala> val y: Int = "123" y: Int = 123 scala> math.max("123", 111) res1: Int = Funkcionalno programiranje -- ETF Beograd 46

47 Konverzija tipa u cilju čitanja vrednosti scala> class Container[A <% Int] { def addit(x: A) = x defined class Container Ovo znači da A mora biti moguće "posmatrati" kao Int scala> (new Container[String]).addIt("123") res11: Int = 246 scala> (new Container[Int]).addIt(123) res12: Int = 246 scala> (new Container[Float]).addIt(123.2F) <console>:8: error: could not find implicit value for evidence parameter of type (Float) => Int (new Container[Float]).addIt(123.2) 47

48 Crte (traits) Nasleđuje se samo jedna klasa kao u Javi izbegavanje "dijamantske strukture" trait liči na interfejs u Javi... klasa može da nasledi više crta... ali trait može da sadrži polja može da sadrži implementacije metoda trait Planar { def height : Int def width : Int def surface = height*width -- Funkcionalno programiranje -- ETF Beograd class Square extends Shape with Planar with Movable... 48

49 Funkcijske vrednosti su objekti Tip funkcije A => B je zapravo skraćeni način pisanja scala.function1[a, B] trait Function1[T1, R] { def apply(v1 : T1) : R def compose[a](g: A => T1): A => R def andthen[a](g: R => A): T1 => A Dakle: funkcije su objekti sa apply metodom Postoje crte Function2, Function3,... Poziv funkcije je jednostavno poziv metode apply f(a, b) je zapravo f.apply(a,b) -- Funkcionalno programiranje -- ETF Beograd 49

50 Funkcijske vrednosti su objekti (x: Int) => x * x { class some_generic_name extends Function1[Int, Int] { def apply(x: Int) = x * x new some_generic_name Sintaksa anonimne klase: new Function1[Int, Int] { def apply(x:int) = x * x -- Funkcionalno programiranje -- ETF Beograd 50

51 Definicija funkcije nije funkcijska vrednost Definicija metode: def f(x: Int) : Boolean =... nije funkcijska vrednost Ali, ako se f koristi tamo gde se očekuje tip Function, automatski se konvertuje u funkcijsku vrednost (x: Int) => f(x) Odnosno new Function1[Int, Boolean] { def apply(x: Int) = f(x) -- Funkcionalno programiranje -- ETF Beograd 51

52 Primer: ulančane liste S obzirom na favorizovanje rekurzije u funkcionalnim jezicima, lista se može predstaviti iz dva gradivna bloka: Nil prazna lista Kons ćelija koja sadrži element i referencu ka ostatku liste Termin "cons" vodi poreklo iz jezika Lisp Funkcionalni jezici favorizuju nepromenljive liste val testlist = new Elem(1, new Elem(2, new Elem(3, new Nil))) -- Funkcionalno programiranje -- ETF Beograd 52

53 Primer: ulančane liste object list { trait List[T] { def prazna: Boolean def glava: T def rep: List[T] class Nil[T] extends List[T] { def prazna = true def glava = throw new NoSuchElementException("Nil.glava") def rep = throw new NoSuchElementException("Nil.rep") class Elem[T](val glava : T, val rep : List[T]) extends List[T] { def prazna = false 53

Slide 1

Slide 1 Funkcionalno programiranje Interoperabilnost jezika Scala i Java, 2019. Prevođenje u Java bajt kod Svi Java tipovi imaju ekvivalentan tip u jeziku Scala Većina Scala koda se direktno preslikava u odgovarajući

Више

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

Више

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

Више

UVOD - OD JAVE DO C# ELEMENTARNE RAZLIKE Veliki broj Java/C# razlika su uglavnom preimenovane ključne reči i razlike u konvencijama imenovanja. Neke o

UVOD - OD JAVE DO C# ELEMENTARNE RAZLIKE Veliki broj Java/C# razlika su uglavnom preimenovane ključne reči i razlike u konvencijama imenovanja. Neke o UVOD - OD JAVE DO C# ELEMENTARNE RAZLIKE Veliki broj Java/C# razlika su uglavnom preimenovane ključne reči i razlike u konvencijama imenovanja. Neke od tih jezičkih razlika su: Java kod se prevodi u.class

Више

VEŽBA 5: KLASE I OBJEKTI U C# Cilj ove vežbe je upoznavanje sa osnovama rada sa klasama i objektima u programskom jeziku C#. Pored toga, bide demonstr

VEŽBA 5: KLASE I OBJEKTI U C# Cilj ove vežbe je upoznavanje sa osnovama rada sa klasama i objektima u programskom jeziku C#. Pored toga, bide demonstr VEŽBA 5: KLASE I OBJEKTI U C# Cilj ove vežbe je upoznavanje sa osnovama rada sa klasama i objektima u programskom jeziku C#. Pored toga, bide demonstrirana upotreba konstruktora, svojstava, metoda klase,

Више

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

Више

PowerPoint Presentation

PowerPoint Presentation Java konkurentno programiranje Životni ciklus niti i problemi sinhronizacije resursa Multitasking Multithreading Životni ciklus niti http://www.roseindia.net/java/thread/lifecycle-of-threads.shtml Životni

Више

Класе комбинација презентације (Хортона) и к о бајаги скрипте (Ово је прича коју врло радо причам) нови тип података: дефинишу могуће вредности подата

Класе комбинација презентације (Хортона) и к о бајаги скрипте (Ово је прича коју врло радо причам) нови тип података: дефинишу могуће вредности подата Класе комбинација презентације (Хортона) и к о бајаги скрипте (Ово је прича коју врло радо причам) нови тип података: дефинишу могуће вредности података и операције над њима Дефиниција класе садржи само

Више

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

Више

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

Више

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

Више

Tutoring System for Distance Learning of Java Programming Language

Tutoring System for Distance Learning of Java Programming Language Uvod u programiranje dr Ninoslava Savić Predavanja (3) sreda: 11:15 13:50 Učionica 16 Konsultacije sreda: 15 17 h Kabinet 43 Uvod u programiranje Fond časova: 3+3 Broj ESPB: 7 Ocena znanja (max. broj poena

Више

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

Више

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

Више

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,

Више

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 - 12-Funkcije_1.ppt [Compatibility Mode]

Microsoft PowerPoint - 12-Funkcije_1.ppt [Compatibility Mode] Osnove programiranja Funkcije - Metode http://www.introprogramming.info/english-intro-csharp-book/read-online/ Sadržaj Funkcije Metode Definisanje Pozivanje Povratne vrednosti Parametri Metode (1) Metoda

Више

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

Више

PowerPoint Presentation

PowerPoint Presentation Објектно орјентисано програмирање Владимир Филиповић vladaf@matf.bg.ac.rs Александар Картељ kartelj@matf.bg.ac.rs Сопствени пакети и унутрашње класе Владимир Филиповић vladaf@matf.bg.ac.rs Александар Картељ

Више

Inženjering informacionih sistema

Inženjering informacionih sistema Fakultet tehničkih nauka, Novi Sad Inženjering informacionih sistema Dr Ivan Luković Dr Slavica Kordić Nikola Obrenović Milanka Bjelica Dr Jelena Borocki Dr Milan Delić UML UML (Unified Modeling Language)

Више

Zadatak 011 Razmotrite sljedeći primjer. package hr.fer.oopj.primjeri.p011; public class Main { } public static void main(string[] args) { obrada(2.71

Zadatak 011 Razmotrite sljedeći primjer. package hr.fer.oopj.primjeri.p011; public class Main { } public static void main(string[] args) { obrada(2.71 Zadatak 011 Razmotrite sljedeći primjer. package hr.fer.oopj.primjeri.p011; public class Main { public static void main(string[] args) { obrada(2.7182818284590452354); private static void obrada(double

Више

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

Више

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 Word - Java_introduction_NEW_SYLLABUS.doc

Microsoft Word - Java_introduction_NEW_SYLLABUS.doc [Complete introduction into Java programming language] Syllabus Semestar, Godina Informacije o instruktoru Instruktor(i) Email Lokacija i dostupnost 1. Ime, prezime 2. Emir, Puška E-mail adresa emirpuska1988@gmail.com

Више

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

Више

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

Више

Projekti šabloni

Projekti šabloni Projekti obrasci Kreiranje objekata Uvod Enkapsuliraju znanje o tome koje konkretno klase koristi sistem Sakrivaju instanciranje objekata i načine na koji se oni povezuju i reprezentuju Ostatak sistema

Више

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

Више

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

Више

Osnovi programiranja Beleške sa vežbi Smer Računarstvo i informatika Matematički fakultet, Beograd Jelena Tomašević i Sana Stojanović November 7, 2005

Osnovi programiranja Beleške sa vežbi Smer Računarstvo i informatika Matematički fakultet, Beograd Jelena Tomašević i Sana Stojanović November 7, 2005 Osnovi programiranja Beleške sa vežbi Smer Računarstvo i informatika Matematički fakultet, Beograd Jelena Tomašević i Sana Stojanović November 7, 2005 2 Sadržaj 1 5 1.1 Specifikacija sintakse programskih

Више

P1.2 Projektovanje asemblera

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

Више

Sveucilište u Zagrebu

Sveucilište u Zagrebu Proširivanje Pythona programskim jezicima C/C++ Ivo Majić Mentor: Doc. dr. sc. Domagoj Jakobović Sveučilište u Zagrebu Fakultet elektrotehnike i računarstva Ak. god. 2011/12 Ivo Majić (FER) Sveučilište

Више

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*

Више

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

Више

Programski jezici i strukture podataka 2018/2019. Programski jezici i strukture podataka Računarske vežbe vežba 10 Zimski semestar 2018/2019. Studijsk

Programski jezici i strukture podataka 2018/2019. Programski jezici i strukture podataka Računarske vežbe vežba 10 Zimski semestar 2018/2019. Studijsk Programski jezici i strukture podataka Računarske vežbe vežba 10 Zimski semestar 2018/2019. Studijski program: Informacioni inženjering Informacioni inženjering 1 Rekurzivne funkcije Binarna stabla Informacioni

Више

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

Више

Objektno orjentirano programiranje 2P

Objektno orjentirano programiranje 2P Sveučilište u Rijeci ODJEL ZA INFORMATIKU Akademska 2016./2017. godina OBJEKTNO ORIJENTIRANO PROGRAMIRANJE Studij: Preddiplomski studij informatike (dvopredmetni) Godina i semestar: 2. godina, 3. semestar

Више

P11.3 Analiza zivotnog veka, Graf smetnji

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

Више

Microsoft PowerPoint - JavaP9_2019

Microsoft PowerPoint - JavaP9_2019 Programski jezik JAVA PREDAVANJE 9 2019 www.etf.ac.me Datoteke u Javi U paketu java.io nalaze se klase za rad sa datotekama i direktorijumima. Funkcionalnost koju omogućavaju te klase sastoji se od kreiranja,

Више

3.Kontrlne (upravlja~ke) strukture u Javi

3.Kontrlne (upravlja~ke) strukture u Javi Објектно орјентисано програмирање Владимир Филиповић vladaf@matf.bg.ac.rs Александар Картељ kartelj@matf.bg.ac.rs Низови у програмском језику Јава Владимир Филиповић vladaf@matf.bg.ac.rs Александар Картељ

Више

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

Више

Microsoft PowerPoint - Bitovi [Compatibility Mode]

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

Више

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 Ψ,

Више

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

Више

PowerPoint Presentation

PowerPoint Presentation Објектно орјентисано програмирање Владимир Филиповић vladaf@matf.bg.ac.rs Александар Картељ kartelj@matf.bg.ac.rs Класе и објекти у програмском језику Јава Владимир Филиповић vladaf@matf.bg.ac.rs Александар

Више

Microsoft PowerPoint - Datoteke [Compatibility Mode]

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

Више

Programiranje 1 Beleške sa vežbi Školska 2007/2008 godina Matematički fakultet, Beograd Jelena Tomašević December 5, 2007

Programiranje 1 Beleške sa vežbi Školska 2007/2008 godina Matematički fakultet, Beograd Jelena Tomašević December 5, 2007 Programiranje 1 Beleške sa vežbi Školska 2007/2008 godina Matematički fakultet, Beograd Jelena Tomašević December 5, 2007 2 Sadržaj 1 Programski jezik C 5 1.1 Oblast važenja lokalnih promenljivih..........................

Више

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

Више

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

Више

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

Више

Teorija skupova - blog.sake.ba

Teorija skupova - blog.sake.ba Uvod Matematika je jedan od najomraženijih predmeta kod većine učenika S pravom, dakako! Zapitajmo se šta je uzrok tome? Da li je matematika zaista toliko teška, komplikovana? Odgovor je jednostavan, naravno

Више

Microsoft Word - CAD sistemi

Microsoft Word - CAD sistemi U opštem slučaju, se mogu podeliti na 2D i 3D. 2D Prvo pojavljivanje 2D CAD sistema se dogodilo pre više od 30 godina. Do tada su inženjeri koristili table za crtanje (kulman), a zajednički jezik komuniciranja

Више

Programiranje 1 drugi kolokvij, 2. veljače Ime i prezime: JMBAG: Upute: Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i brisanje,

Programiranje 1 drugi kolokvij, 2. veljače Ime i prezime: JMBAG: Upute: Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i brisanje, Upute: Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i brisanje, te službeni podsjetnik. Kalkulatori, mobiteli, razne neslužbene tablice, papiri i sl., nisu dozvoljeni! Sva rješenja napišite

Више

Datum: 20

Datum: 20 Osnove JAVE Uvod CPU računara može direktno izvršavati samo skup jednostavnih naredbi koje se nikada ne koriste u programiranju. Skoro svi programi su pisani u višim programskim jezicima kao što su Java,

Више

PowerPoint Presentation

PowerPoint Presentation Visoka škola strukovnih studija za informacione i komunikacione tehnologije MVC - Modeli Školska 2017/18. Dr Nenad Kojić, dipl. inž. Luka Lukić, struk. inž. Danijela Nikitin, spec.stuk.inž MVC.htaccess

Више

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)

Више

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 11 - Funktori

Računarski praktikum I - Vježbe 11 - Funktori Prirodoslovno-matematički fakultet Matematički odsjek Sveučilište u Zagrebu RAČUNARSKI PRAKTIKUM I Vježbe 11 - Funktori v2018/2019. Sastavio: Zvonimir Bujanović Funkcijski objekti (funktori) Objekt klase

Више

PowerPoint Presentation

PowerPoint Presentation Programski jezici i strukture podataka UVOD Izvođači nastave Srđan Popov (JUG 215) Petar Marić (JUG 105) Milena Počuča (JUG 215) Milica Milutinović (JUG 215) Termini konsultacija naknadno Cilj vežbi Sticanje

Више

Microsoft PowerPoint - 07-DinamickeStrukturePodataka

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

Више

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

Више

1 jmbag ime i prezime Programiranje 2 prvi kolokvij, Rezultati i uvidi u kolokvije: Rezultati u petak, 3.5., navečer na webu, a uvidi u p

1 jmbag ime i prezime Programiranje 2 prvi kolokvij, Rezultati i uvidi u kolokvije: Rezultati u petak, 3.5., navečer na webu, a uvidi u p 1 Rezultati i uvidi u kolokvije: Rezultati u petak 3.5. navečer na webu a uvidi u ponedjeljak 6.5. u 16 sati. Upute: Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i brisanje te službeni podsjetnik.

Више

Microsoft Word - MySQL_3.doc

Microsoft Word - MySQL_3.doc 7. Data Manipulation Language (DML) Jezik za rad sa podacima (Data Manipulation Language (DML)) služi za umetanje, brisanje i ažuriranje podataka u bazi. 7.1. Umetanje novih redova u tabelu INSERT sintaksa

Више

Microsoft Word - 02 Elementi programskog jezika Pascal

Microsoft Word - 02 Elementi programskog jezika Pascal Elementi programskog jezika Pascal Osnovni elementi jezika Osnovni simboli U programskom jeziku Pascal sve konstrukcije se grade od skupa osnovnih simbola jezika koji čine slova, cifre i specijalni znaci.

Више

Konverzije, operatori, matematičke funkcije predavač: Nadežda Jakšić

Konverzije, operatori, matematičke funkcije predavač: Nadežda Jakšić Konverzije, operatori, matematičke funkcije predavač: Nadežda Jakšić 1. temperatura u stepenima Celzijusa i stepene Farenhajta tf=1.8*tc+32 2. pretvoriti inče u centimetre 1 inč=2.54cm 3. vreme učitano

Више

Uvod u PHP

Uvod u PHP Uvod u PHP Marijan Šuflaj FER, 2018 Sadržaj PHP Općenito Sintaksa Osnove Kontrola toka Zadatci Resursi Općenito Naziv od PHP Hypertext Preprocessor Obično koristi ekstenziju.php Tipovi su dinamički Trenutno

Више

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 - 10-Jednodimenzionalni nizovi.ppt [Compatibility Mode]

Microsoft PowerPoint - 10-Jednodimenzionalni nizovi.ppt [Compatibility Mode] Osnove programiranja Nizovi Sadržaj Definicija niza Vrste i elementi nizova Deklarisanje nizova Dodele (početne) vrednosti nizovima Jednodimenzionalni nizovi Primeri dodele vrednosti Petlja foreach Nizovi

Више

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)

Више

Funkcijska sučelja: često korištena za modeliranje objekata koji obavljaju određene poslove Anotirana su signaliziraju da se t

Funkcijska sučelja: često korištena za modeliranje objekata koji obavljaju određene poslove Anotirana su signaliziraju da se t Funkcijska sučelja: često korištena za modeliranje objekata koji obavljaju određene poslove Anotirana su s @FunctionalInterface; signaliziraju da se ta sučelja mogu koristiti za stvaranje objekata u lambda-izrazima

Више

Primenjeno programiranje - vezbe GUI i baze podataka

Primenjeno programiranje - vezbe GUI i baze podataka Primenjeno programiranje - Vežbe Java i NetBeans IDE 6.5 Kreiranje korisničkog interfejsa Primer jednostavne aplikacije: 1. Odabrati opciju File > New Project 2. Meñu kategorijama odabrati Java i podkategoriju

Више

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

Више

Рачунарска интелигенција

Рачунарска интелигенција Рачунарска интелигенција Генетско програмирање Александар Картељ kartelj@matf.bg.ac.rs Ови слајдови представљају прилагођење слајдова: A.E. Eiben, J.E. Smith, Introduction to Evolutionary computing: Genetic

Више

PowerPoint Presentation

PowerPoint Presentation Објектно орјентисано програмирање Владимир Филиповић vladaf@matf.bg.ac.rs Александар Картељ kartelj@matf.bg.ac.rs Енумерисани и генерички типови Владимир Филиповић vladaf@matf.bg.ac.rs Александар Картељ

Више

Programiranje 1 IEEE prikaz brojeva sažetak Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2018, IEEE p

Programiranje 1 IEEE prikaz brojeva sažetak Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2018, IEEE p Programiranje IEEE prikaz brojeva sažetak Saša Singer singer@math.hr web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog 208, IEEE prikaz brojeva sažetak p. /4 Sadržaj predavanja IEEE standard

Више

Skripte2013

Skripte2013 Chapter 2 Algebarske strukture Preslikivanje f : A n! A se naziva n-arna operacija na skupu A Ako je n =2, kažemo da je f : A A! A binarna operacija na A Kažemo da je operacija f arnosti n, u oznaci ar

Више

Matematiqki fakultet Univerzitet u Beogradu Iracionalne jednaqine i nejednaqine Zlatko Lazovi 29. mart 2017.

Matematiqki fakultet Univerzitet u Beogradu Iracionalne jednaqine i nejednaqine Zlatko Lazovi 29. mart 2017. Matematiqki fakultet Univerzitet u Beogradu 29. mart 2017. Matematiqki fakultet 2 Univerzitet u Beogradu Glava 1 Iracionalne jednaqine i nejednaqine 1.1 Teorijski uvod Pod iracionalnim jednaqinama podrazumevaju

Више

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

Више

P1.3 Projektovanje makroasemblera

P1.3 Projektovanje makroasemblera ПРОЈЕКТОВАЊЕ МАКРОАСЕМБЛЕРА Макроасемблер Потребна проширења асемблера 1 МАКРОАСЕМБЛЕР Макроасемблер преводи полазни програм написан на макроасемблерском језику у извршиви машински програм. Приликом израде

Више

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

Више

Microsoft PowerPoint - 6. Query Builder.pptx

Microsoft PowerPoint - 6. Query Builder.pptx Visokaškola strukovnihstudija za informacione i komunikacione tehnologije Query builder Query builder je sastavni deo Laravel framework-a koji pruža pouzdan interfejs za rad sa bazom podataka, kreiranje

Више

Classroom Expectations

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

Више

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

Више

PowerPoint Presentation

PowerPoint Presentation II Karakteristike C jezika Programski jezik C je viši programski jezik opšte namene. Tesno je povezan sa UNIX OS uz koji je razvijan. Razvio ga je Dennis Ritchie 1970 u Bell Telephone Laboratories, Inc.

Више

NAPOMENA: Studenti na ispit donose kod urađenog zadatka

NAPOMENA: Studenti na ispit donose kod urađenog zadatka Пројекат из предмета Интернет програмирање за августовски и септембарски испитни рок школске 2018/19. године Коришћењем PHP технологије, технологије AJAX и MySQL базе података, реализовати следећу веб

Више

My_P_Trigo_Zbir_Free

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

Више

13E114PAR, 13S113PAR DOMAĆI ZADATAK 2018/2019. Cilj domaćeg zadatka je formiranje petlje softverske protočnosti za minimalni broj ciklusa.

13E114PAR, 13S113PAR DOMAĆI ZADATAK 2018/2019. Cilj domaćeg zadatka je formiranje petlje softverske protočnosti za minimalni broj ciklusa. 13E114PAR, 13S113PAR 29.04.2019. DOMAĆI ZADATAK 2018/2019. Cilj domaćeg zadatka je formiranje petlje softverske protočnosti za minimalni broj ciklusa. U okviru svake grupe data je doall ili doacross petlja

Више

Upitni jezik SQL

Upitni jezik SQL Šta je SQL? SQL (Structured Query Language) je jezik koji je Američki Institut za Nacionalne Standarde (ANSI - American National Standards Institute) prihvatio kao standardni jezik za relacione baze podataka.

Више

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

Више

Strukture predavač: Nadežda Jakšić

Strukture predavač: Nadežda Jakšić Strukture predavač: Nadežda Jakšić složeni tip podatka; kolekcija promenljivih različitog tipa koje su sakupljene radi lakše manipulacije sintaksa: struct [oznakastrukture] navede { definicija člana strukture;

Више

Primenjeno programiranje - Vežbe

Primenjeno programiranje - Vežbe VISOKA POSLOVNA ŠKOLA STRUKOVNIH STUDIJA NOVI SAD Primena integrisanih razvojnih alata Java i NetBeans IDE 7.0 vežba 9 i 10 Kreiranje desktop aplikacije sa konekcijom na bazu Pokrenuti NetBeans, u kartici

Више

1

1 Podsetnik: Statističke relacije Matematičko očekivanje (srednja vrednost): E X x p x p x p - Diskretna sl promenljiva 1 1 k k xf ( x) dx E X - Kontinualna sl promenljiva Varijansa: Var X X E X E X 1 N

Више

Programiranje II Beleške sa vežbi Smer Informatika Matematički fakultet, Beograd Sana Stojanović 1

Programiranje II Beleške sa vežbi Smer Informatika Matematički fakultet, Beograd Sana Stojanović 1 Programiranje II Beleške sa vežbi Smer Informatika Matematički fakultet, Beograd Sana Stojanović 1 Sadržaj 1 Pokazivači - ponavljanje 3 2 Pokazivači - veza sa nizovima 5 2 1 Pokazivači - ponavljanje 1.

Више

KDP

KDP Региони Региони Програмска парадигма за приступ критичној секцији Увођење посебне синтаксе за експлицитно означавање критичних секција Обезбеђивање међусобног искључивања процеса Условни критични регион

Више

OOP1 - domaci 2 (2004/05)

OOP1 - domaci 2 (2004/05) ЕЛЕКТРОТЕХНИЧКИ ФАКУЛТЕТ Одсеци ИР, ОС и ОФ Београд, 05.04.2019. Први домаћи задатак из Објектно оријентисаног програмирања 2 У сваком задатку: Грешке пријављивати изузецима типа класа које садрже текст

Више

PowerPoint Presentation

PowerPoint Presentation Visoka škola strukovnih studija za informacione i komunikacione tehnologije Grupisanje ruta i patterni Školska 2017/18. Dr Nenad Kojić, dipl. inž. Luka Lukić, struk. inž. Danijela Nikitin, spec.stuk.inž

Више

NAUČNO-STRUČNA KONFERENCIJA LOGOPEDA SRBIJE INOVATIVNI PRISTUPI U LOGOPEDIJI Nacionalni skup sa međunarodnim učešćem Organizator: Udruženje logopeda S

NAUČNO-STRUČNA KONFERENCIJA LOGOPEDA SRBIJE INOVATIVNI PRISTUPI U LOGOPEDIJI Nacionalni skup sa međunarodnim učešćem Organizator: Udruženje logopeda S NAUČNO-STRUČNA KONFERENCIJA LOGOPEDA SRBIJE INOVATIVNI PRISTUPI U LOGOPEDIJI Nacionalni skup sa međunarodnim učešćem Organizator: Udruženje logopeda Srbije Kralja Milutina 52, Beograd Datum održavanja:

Више

Microsoft PowerPoint - 11_JavaScript_1.ppt [Compatibility Mode]

Microsoft PowerPoint - 11_JavaScript_1.ppt [Compatibility Mode] Java Script dr Suzana Marković, dipl.ing. el. suzana.markovic@bss.edu.rs Programski jezici Kompajlerski jezici - programski kôd konvertuje se u mašinski pre nego što se i pokrene, što znači da će se ta

Више

03 SUBP

03 SUBP Osnovni SQL tipovi podataka Tip podataka NUMBER(p,s) Opis Broj sa maksimalno p cifara od kojih je s maksimalni broj decimala (1 < p < 38) (- 84 < s < 127) VARCHAR2(s) Promenjivi niz karaktera maksimalne

Више