Programiranje II

Beleˇ

ske za predavanja

Smer

Informatika

Matematiˇcki fakultet, Beograd

Filip Mari´

c i Predrag Janiˇ

ci´

c

2011.

2

background image

4

SADR ˇ

ZAJ

4

Fundamentalni algoritmi

47

4.1

Pretraˇ

zivanje

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

47

4.1.1

Linearno pretraˇ

zivanje

. . . . . . . . . . . . . . . . . . . .

47

4.1.2

Binarno pretraˇ

zivanje

. . . . . . . . . . . . . . . . . . . .

49

4.2

Sortiranje

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

54

4.2.1

Bubble sort

. . . . . . . . . . . . . . . . . . . . . . . . . .

55

4.2.2

Selection sort

. . . . . . . . . . . . . . . . . . . . . . . . .

58

4.2.3

Insertion sort

. . . . . . . . . . . . . . . . . . . . . . . . .

60

4.2.4

Shell sort

. . . . . . . . . . . . . . . . . . . . . . . . . . .

62

4.2.5

Merge sort

. . . . . . . . . . . . . . . . . . . . . . . . . .

64

4.2.6

Quick sort

. . . . . . . . . . . . . . . . . . . . . . . . . . .

66

4.2.7

Koriˇ

cenje sistemske implementacije quick sort-a

. . . . .

70

4.2.8

Empirijsko poredenje razliˇ

citih algoritama sortiranja

. . .

72

4.3

Jednostavni algebarsko-numeriˇ

cki algoritmi

. . . . . . . . . . . .

74

4.3.1

Izraˇ

cunavanje vrednosti polinoma

. . . . . . . . . . . . . .

74

4.4

Generisanje kombinatornih objekata

. . . . . . . . . . . . . . . .

75

4.4.1

Varijacije sa ponavljanjem

. . . . . . . . . . . . . . . . . .

75

4.4.2

Kombinacije

. . . . . . . . . . . . . . . . . . . . . . . . .

76

4.4.3

Permutacije

. . . . . . . . . . . . . . . . . . . . . . . . . .

77

4.4.4

Particionisanje

. . . . . . . . . . . . . . . . . . . . . . . .

79

4.5

Algoritmi zasnovani na bitovskim operatorima

. . . . . . . . . .

80

4.5.1

Primeri.

. . . . . . . . . . . . . . . . . . . . . . . . . . . .

82

5

Fundamentalne strukture podataka

89

5.1

Liste

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

89

5.1.1

Odnos lista, nizova i dinamiˇ

ckih blokova

. . . . . . . . . .

89

5.1.2

Elementi liste

. . . . . . . . . . . . . . . . . . . . . . . . .

90

5.1.3

Stek

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

90

5.1.4

Red

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

95

5.1.5

Dvostruko povezane (dvostruko ulanˇ

cane) liste

. . . . . .

98

5.1.6

Kruˇ

zne (cikliˇ

cne, cirkularne) liste

. . . . . . . . . . . . . .

98

5.2

Stabla

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

98

5.2.1

Binarna stabla

. . . . . . . . . . . . . . . . . . . . . . . .

99

5.2.2

Uredena binarna stabla

. . . . . . . . . . . . . . . . . . .

99

5.2.3

Izrazi u formi stabla

. . . . . . . . . . . . . . . . . . . . . 105

5.3

Grafovi

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105

5.4

Heˇ

s tabele

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105

II

Principi razvoja programa

107

6

Reˇ

savanje problema uz pomo´

c raˇ

cunara

109

SADR ˇ

ZAJ

5

7

Strukturna dekompozicija i druga naˇ

cela pisanja programa

113

7.1

Pisanje ˇ

citljivih programa: vizualni elementi programa

. . . . . . 114

7.1.1

80 karaktera u liniji

. . . . . . . . . . . . . . . . . . . . . 114

7.1.2

Broj naredbi po liniji

. . . . . . . . . . . . . . . . . . . . . 115

7.1.3

Nazubljivanje/uvlaˇ

cenje teksta

. . . . . . . . . . . . . . . 116

7.2

Imenovanje promenljivih i funkcija

. . . . . . . . . . . . . . . . . 116

7.3

Komentari

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117

7.3.1

Komentari ne treba da objaˇ

cnjavaju kˆ

od

. . . . . . . . . . 118

7.3.2

Komentari treba da su takvi da ih je mogu´

ce odrˇ

zavati

. . 118

7.3.3

Komentari treba da budu koncizni

. . . . . . . . . . . . . 118

7.3.4

Koriˇ

cenje specifiˇ

cnih komentara

. . . . . . . . . . . . . . 118

7.4

Pisanje programa: modularnost i podela na datoteke

. . . . . . . 119

7.4.1

Deljenje programa u viˇ

se datoteka

. . . . . . . . . . . . . 120

7.4.2

Modularnost

. . . . . . . . . . . . . . . . . . . . . . . . . 120

7.4.3

Kako koristiti konstante u programu

. . . . . . . . . . . . 120

7.5

Pisanje programa: dizajniranje programa

. . . . . . . . . . . . . 121

7.5.1

Dizajn u vidu tokovnika

. . . . . . . . . . . . . . . . . . . 121

7.5.2

Funkcijski-orijentisan dizajn

. . . . . . . . . . . . . . . . . 122

7.5.3

Strukturna dekompozicija

. . . . . . . . . . . . . . . . . . 123

7.5.4

Strukturalni model sistema

. . . . . . . . . . . . . . . . . 126

III

Principi programskih jezika

129

8

Programski jezici i paradigme

131

8.1

Istorijat razvoja viˇ

sih programskih jezika

. . . . . . . . . . . . . . 131

8.2

Programske paradigme

. . . . . . . . . . . . . . . . . . . . . . . . 133

9

Uvod u prevodenje programskih jezika

135

9.1

Implementacija programskih jezika

. . . . . . . . . . . . . . . . . 135

9.2

Kratka istorija razvoja kompilatora

. . . . . . . . . . . . . . . . . 135

9.3

Moderni kompilatori

. . . . . . . . . . . . . . . . . . . . . . . . . 136

9.4

Struktura kompilatora

. . . . . . . . . . . . . . . . . . . . . . . . 136

9.5

Leksiˇ

cka analiza

. . . . . . . . . . . . . . . . . . . . . . . . . . . . 137

9.6

Sintaksna analiza

. . . . . . . . . . . . . . . . . . . . . . . . . . . 138

9.7

Primer

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139

9.8

Teorija formalnih jezika

. . . . . . . . . . . . . . . . . . . . . . . 140

9.9

Naˇ

cini opisa leksike i sintakse programskih jezika

. . . . . . . . . 146

9.10 Naˇ

cini opisa semantike programskih jezika

. . . . . . . . . . . . . 152

IV

Socijalni aspekti informatike

153

10 Istorijski i druˇ

stveni kontekst raˇ

cunarstva kao nauˇ

cne disci-

pline; druˇ

stveni znaˇ

caj raˇ

cunara i Interneta; profesionalizam,

background image

Deo I

Osnovi algoritmike

Želiš da pročitaš svih 159 strana?

Prijavi se i preuzmi ceo dokument.

Ovaj materijal je namenjen za učenje i pripremu, ne za predaju.

Slični dokumenti