p1\p2 Flashcards

1
Q

Šta je specifično za funkcionalni programski jezik?

A

Funkcionalni programski jezici koriste čiste matematičke funkcije i striktno izraze, odnosno svaki statement je izraz.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Šta je specifično za IF izraz u funkcionalnom programskom jeziku?

A

Čak i IF u funkcionalnom programskom jeziku predstavlja izraz, što znači da će svojim izvršenjem proizvesti neku vrijednost.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Šta je osnovni building blok u funkcionalnom programiranju?

A

Osnovni building blok u funkcionalnom programiranju je funkcija.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Šta se u funkcionalnom programskom jeziku koristi umjesto objekata?

A

Umjesto objekata u funkcionalnom programskom jeziku koriste se funkcije, pri čemu su te funkcije čiste i ne proizvode popratne efekte, već samo rezultate.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Šta znači anotirati nešto?

A

Anotiranje označava eksplicitno navođenje tipa određene vrijednosti ili određenog simbola.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Kakav je F-Sharp jezik?

A

F-Sharp je tipizirani lambda calculus, odnosno tipizirani funkcionalni programski jezik, ali ujedno i objektno orijentirani programski jezik.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Da li vrijednosti imaju tip kod tipiziranih jezika?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Kako označavamo komentare u F-Sharp programskom jeziku i kako završavamo izraze?

A

Jednolinijski komentar u F-Sharp programskom jeziku je //, dok je višelinijski komentar označen (* tekst *), a izrazi se završavaju sa ;;.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Kakav je tip UNIT u F-Sharp programskom jeziku?

A

Tip UNIT ima tačno jedan element, tj. jednu vrijednost, a to je ()

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Kako je kodiran Char, a kako String tip u F-Sharp programskom jeziku?

A

Char je kodiran sa UTF-8, a String je kodiran sa UTF-16.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Šta znači simbol jednako?

A

Simbol jednako u F-Sharp označava poređenje, a ne operator dodjeljivanja.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Da li F-Sharp dozvoljava implicitne konverzije?

A

Ne. F-Sharp ne dozvoljava implicitne konverzije, ali su eksplicitne konverzije moguće

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Kako nemogućnost implicitne konverzije utiče na operacije unutar programskog jezika F-Sharp?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Da li su mogući alternativni zapisi za tip Integer u F-Sharp programskom jeziku?

A

Moguće je Integer zapisati u decimalnom, binarnom i hexadecimalnom obliku.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Kako se eksplicitno konvertuje tip vrijednosti?

A

Navede se ime tipa, zatim šta konvertujemo.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Da li je moguća sljedeća eksplicitna konverzija String 33438?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Kako se označava nejednakost u F-Sharp programu?

A

<>

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Šta je patern odnosno uzorak?

A

Patern odnosno uzorak predstavlja mogući oblik vrijednosti.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

Šta je pattern matching?

A

Pattern matching je procedura kojom se utvrđuje da li vrijednost odgovara konkretnom patternu odnosno uzorku.

20
Q

Kada će pattern matching uspjeti?

A

Pattern matching će uspjeti samo kada se sve komponente specificirane u uzorku mogu naći u datoj vrijednosti.

21
Q

Prilikom izvršavanja kojih izraza u F-Sharp programskom jeziku će se izvršavati i pattern matching?

A

Pattern matching će se izvršavati u sljedećim izrazima: let, match, lambda i iznimke.

22
Q

Šta je binding odnosno vezivanje?

A

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

23
Q

Ukoliko dođe do pattern matcha, kako će se vrijednosti vezati za uzorak?

A

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

24
Q

Kakav je proces pattern matchinga i vezivanja?

A

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.

25
Q

Da li će doći do vezivanja ako podudaranje ne uspije?

A

Ukoliko podudaranje ne uspije, do vezivanja neće doći, te će doći do iznimke

26
Q

Koje su razlike između imperativnog programskog jezika i funkcionalnog programskog jezika?

A

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.

27
Q

Kako izgleda let izraz?

A

Let pat = expr1 in expr2 ili let pat = expr1 expr2.

28
Q

Šta figurira na mjestu izraza?

A

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

29
Q

Koji je redoslijed izvršavanja let izraza?

A

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

30
Q

Koje su forme definicije uzoraka? Odnosno, kakve uzorke imamo?

A

Identifier pattern, wildcard pattern, constant pattern, or pattern.

31
Q

Šta figurira u identifier patternu?

A

U identifier patternu figurira samo simbol, odnosno ime. Forma: Ime.

32
Q

Kada uspijeva podudaranje sa identifier pattern?

A

Podudaranje uvijek uspijeva i cijela vrijednost se veže za taj pat

33
Q

Šta figurira u wildcard patternu?

A

U wildcard patternu figurira samo _ u formi _.

34
Q

Kada uspijeva pattern matching sa wildcard patternom?

A

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.

35
Q

Šta figurira u constant patternu?

A

U constant patternu figurira literal, odnosno vrijednost konstante koja se specificira

36
Q

Kada dolazi do pattern matchinga kod konstantnog patterna?

A

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.

37
Q

Šta figurira u or patternu?

A

Or pattern predstavlja kompoziciju već postojećih patterna. U formi: pat1 | pat2 | … | patn

38
Q

Kada pattern matching uspijeva za OR pattern?

A

Pattern matching za OR pattern uspijeva kada bilo koji od uzoraka uspije sa podudaranjem sa vrijednošću. Prvi koji uspije, uspjelo je podudaranje.

39
Q

Da li let m | 8 = 3 ima smisla?

A

Ne, doći će do greške

40
Q

Šta je bitno ukoliko OR pattern u sebi sadrži simbol?

A

Simbol se mora pojavljivati u svakom od patterna.

41
Q

Šta je lambda izraz?

A

Lambda izraz je izraz koji, kada se izvrši, vraća vrijednost tipa lambda, odnosno vrijednost tipa funkcije.

42
Q

Koja je forma lambda izraza i šta označava lambda izraz?

A

Lambda izraz označava ključnu riječ fun i ima formu: fun pat -> expr.

43
Q

Budući da je lambda izraz izraz, što to znači?

A

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

44
Q

Šta je aplikacija?

A

Aplikacija podrazumijeva prezentaciju vrijednosti odgovarajućeg tipa funkciji korištenoj u izrazu za aplikaciju.

45
Q

Kako se izvršava aplikacija?

A

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.

46
Q

Koji je format aplikacije funkcije?

A

Neka je fval funkcija, a val prezentovana vrijednost. Aplikacija ima format: fval val

47
Q

Koji je prioritet aplikacije kao izraza?

A

Aplikacija je izraz koji poslije operatora . ima najveći prioritet