p1\p2 Flashcards
Šta je specifično za funkcionalni programski jezik?
Funkcionalni programski jezici koriste čiste matematičke funkcije i striktno izraze, odnosno svaki statement je izraz.
Šta je specifično za IF izraz u funkcionalnom programskom jeziku?
Čak i IF u funkcionalnom programskom jeziku predstavlja izraz, što znači da će svojim izvršenjem proizvesti neku vrijednost.
Šta je osnovni building blok u funkcionalnom programiranju?
Osnovni building blok u funkcionalnom programiranju je funkcija.
Šta se u funkcionalnom programskom jeziku koristi umjesto objekata?
Umjesto objekata u funkcionalnom programskom jeziku koriste se funkcije, pri čemu su te funkcije čiste i ne proizvode popratne efekte, već samo rezultate.
Šta znači anotirati nešto?
Anotiranje označava eksplicitno navođenje tipa određene vrijednosti ili određenog simbola.
Kakav je F-Sharp jezik?
F-Sharp je tipizirani lambda calculus, odnosno tipizirani funkcionalni programski jezik, ali ujedno i objektno orijentirani programski jezik.
Da li vrijednosti imaju tip kod tipiziranih jezika?
Vrijednosti imaju tip i kod tipiziranih i kod netipiziranih jezika, jer su tipovi određeni samim vrijednostima. Jedina razlika je da li simboli u jeziku imaju tip ili ne.
Kako označavamo komentare u F-Sharp programskom jeziku i kako završavamo izraze?
Jednolinijski komentar u F-Sharp programskom jeziku je //, dok je višelinijski komentar označen (* tekst *), a izrazi se završavaju sa ;;.
Kakav je tip UNIT u F-Sharp programskom jeziku?
Tip UNIT ima tačno jedan element, tj. jednu vrijednost, a to je ()
Kako je kodiran Char, a kako String tip u F-Sharp programskom jeziku?
Char je kodiran sa UTF-8, a String je kodiran sa UTF-16.
Šta znači simbol jednako?
Simbol jednako u F-Sharp označava poređenje, a ne operator dodjeljivanja.
Da li F-Sharp dozvoljava implicitne konverzije?
Ne. F-Sharp ne dozvoljava implicitne konverzije, ali su eksplicitne konverzije moguće
Kako nemogućnost implicitne konverzije utiče na operacije unutar programskog jezika F-Sharp?
Poređenja, kao i sve druge operacije u F-Sharp programskom jeziku, se rade isključivo u istom skupu, odnosno radi se između istih tipova. Moguće je raditi operacije između različitih tipova ukoliko se navede eksplicitna konverzija jednog od tipova, tako da tip bude jednoznačan.
Da li su mogući alternativni zapisi za tip Integer u F-Sharp programskom jeziku?
Moguće je Integer zapisati u decimalnom, binarnom i hexadecimalnom obliku.
Kako se eksplicitno konvertuje tip vrijednosti?
Navede se ime tipa, zatim šta konvertujemo.
Da li je moguća sljedeća eksplicitna konverzija String 33438?
Da. U F-Sharp programskom jeziku za string 33438 dobijamo “33438”, isto tako važi i za obratno - int “25” je int 25. Pri čemu se od bilo čega može napraviti string, ali nije moguće od svakog stringa napraviti int.
Kako se označava nejednakost u F-Sharp programu?
<>
Šta je patern odnosno uzorak?
Patern odnosno uzorak predstavlja mogući oblik vrijednosti.
Šta je pattern matching?
Pattern matching je procedura kojom se utvrđuje da li vrijednost odgovara konkretnom patternu odnosno uzorku.
Kada će pattern matching uspjeti?
Pattern matching će uspjeti samo kada se sve komponente specificirane u uzorku mogu naći u datoj vrijednosti.
Prilikom izvršavanja kojih izraza u F-Sharp programskom jeziku će se izvršavati i pattern matching?
Pattern matching će se izvršavati u sljedećim izrazima: let, match, lambda i iznimke.
Šta je binding odnosno vezivanje?
Binding odnosno vezivanje nastaje kao posljedica pattern matchinga. Kada se izvrši pattern matching, ukoliko dođe do podudaranja vrijednosti s uzorkom, tokom izvršavanja pattern matchinga dolazi i do vezivanja, ali isključivo ukoliko se desi match
Ukoliko dođe do pattern matcha, kako će se vrijednosti vezati za uzorak?
Djelovi vrijednosti se mogu vezati za imena, simbole ili varijable koje postoje unutar uzorka. Ti dijelovi su dijelovi vrijednosti koji su se matchali i njima su zapravo dodijeljena imena, simbole i varijable iz uzorka
Kakav je proces pattern matchinga i vezivanja?
Neko daje uzorak i neko daje vrijednost. Unutar uzorka moraju biti neki simboli ili ne moraju. Ukoliko nema simbola, neće doći do vezivanja. Ako postoje simboli, da bi se simboli vezali, mora uspjeti podudaranje. Ukoliko uspije podudaranje, simboli iz uzorka se vezuju za dio vrijednosti ili cijelu vrijednost koja je podudarana.
Da li će doći do vezivanja ako podudaranje ne uspije?
Ukoliko podudaranje ne uspije, do vezivanja neće doći, te će doći do iznimke
Koje su razlike između imperativnog programskog jezika i funkcionalnog programskog jezika?
Za imperativni programski jezik vrijedi da dodjeljivanje vrijednosti u varijablu uvijek uspije i izvrši za minimalno jednu varijablu, a može i više. Vrijednost koja se dodijeli varijabli se kodira u memoriju i ta vrijednost je mutabilna, odnosno može se promijeniti. Što se tiče funkcionalnog programskog jezika, vezivanje ne mora uvijek uspjeti, tako da vezivanje može da prođe bez vezivanja jednog simbola. Pri vezivanju ime će se vezati za vrijednost, i gdje god se vidi taj simbol, odnosno ime, efektivno se vidi ta vrijednost. Dok je podudaranje operacija koja je konstantna, simbol koji se zaveže za vrijednost ostaće vezan za tu vrijednost koja se ne može promijeniti.
Kako izgleda let izraz?
Let pat = expr1 in expr2 ili let pat = expr1 expr2.
Šta figurira na mjestu izraza?
Na mjestu izraza u let izrazu imamo dva podizraza. U tim podizrazima može biti bilo šta, bilo kakav izraz, uključujući i novi let izraz
Koji je redoslijed izvršavanja let izraza?
Prvo će se izvršiti prvi izraz. Izvršavanje izraza podrazumijeva dobivanje neke vrijednosti. Zatim, vrijednost koja se dobije izvršavanjem prvog izraza će se podudarati, odnosno pattern matchati sa uzorkom. Ukoliko podudaranje ne uspije, završava izvršavanje izraza i baca se iznimka. Međutim, ako podudaranje uspije, vrši se izvršavanje drugog izraza u kojem mogu figurirati simboli, imena i varijable definisane u uzorku koje su prethodno bile podudarene i koriste se vezane vrijednosti. Vrijednost dobivena izvršavanjem drugog izraza je rezultat cijelog let izraza
Koje su forme definicije uzoraka? Odnosno, kakve uzorke imamo?
Identifier pattern, wildcard pattern, constant pattern, or pattern.
Šta figurira u identifier patternu?
U identifier patternu figurira samo simbol, odnosno ime. Forma: Ime.
Kada uspijeva podudaranje sa identifier pattern?
Podudaranje uvijek uspijeva i cijela vrijednost se veže za taj pat
Šta figurira u wildcard patternu?
U wildcard patternu figurira samo _ u formi _.
Kada uspijeva pattern matching sa wildcard patternom?
Pattern matching uspijeva uvijek sa wildcard patternom, međutim, neće doći do vezivanja. Odnosno, ništa se ne veže za taj pattern.
Šta figurira u constant patternu?
U constant patternu figurira literal, odnosno vrijednost konstante koja se specificira
Kada dolazi do pattern matchinga kod konstantnog patterna?
Kod konstantnog patterna do pattern matchinga dolazi samo kada je vrijednost istog tipa kao i literal, odnosno kada je u pitanju identična vrijednost. Međutim, ne dolazi do vezivanja za bilo kakvo ime, odnosno simbol.
Šta figurira u or patternu?
Or pattern predstavlja kompoziciju već postojećih patterna. U formi: pat1 | pat2 | … | patn
Kada pattern matching uspijeva za OR pattern?
Pattern matching za OR pattern uspijeva kada bilo koji od uzoraka uspije sa podudaranjem sa vrijednošću. Prvi koji uspije, uspjelo je podudaranje.
Da li let m | 8 = 3 ima smisla?
Ne, doći će do greške
Šta je bitno ukoliko OR pattern u sebi sadrži simbol?
Simbol se mora pojavljivati u svakom od patterna.
Šta je lambda izraz?
Lambda izraz je izraz koji, kada se izvrši, vraća vrijednost tipa lambda, odnosno vrijednost tipa funkcije.
Koja je forma lambda izraza i šta označava lambda izraz?
Lambda izraz označava ključnu riječ fun i ima formu: fun pat -> expr.
Budući da je lambda izraz izraz, što to znači?
To znači da lambda izraz može figurirati na mjestu izraza u drugim izrazima, naprimjer u let izrazu. One se također daju aplicirati
Šta je aplikacija?
Aplikacija podrazumijeva prezentaciju vrijednosti odgovarajućeg tipa funkciji korištenoj u izrazu za aplikaciju.
Kako se izvršava aplikacija?
Vrijednost prezentovana aplikaciji se podudara sa uzorkom u lambda izrazu. Ukoliko podudaranje uspije, izvrši se izraz koji je korišten u definiciji lambda, a rezultat aplikacije je zapravo rezultat izvršenja tog izraza.
Koji je format aplikacije funkcije?
Neka je fval funkcija, a val prezentovana vrijednost. Aplikacija ima format: fval val
Koji je prioritet aplikacije kao izraza?
Aplikacija je izraz koji poslije operatora . ima najveći prioritet