Programski jezik C

predavanja

ak. g. 2003/04.

M. Jurak

Sadrˇ

zaj

1 Uvod

8

1.1 Programski jezici . . . . . . . . . . . . . . . . . . . . . . . . .

8

1.2 Osnove pisanja programa u

Unix

okruˇzenju . . . . . . . . . . 10

1.2.1

Editor teksta . . . . . . . . . . . . . . . . . . . . . . . 10

1.2.2

Compiler . . . . . . . . . . . . . . . . . . . . . . . . . . 10

1.2.3

man . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

1.2.4

Debugger . . . . . . . . . . . . . . . . . . . . . . . . . 11

1.2.5

Linker . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

1.2.6

make . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

1.2.7

Programske biblioteke . . . . . . . . . . . . . . . . . . 12

2 Osnove programskog jezika C

13

2.1 Prvi program . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.2 Varijable.

while

petlja . . . . . . . . . . . . . . . . . . . . . . 16

2.3

for

petlja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

2.4

if

naredba

. . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

2.5 Funkcije . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

2.5.1

Funkcija

main

. . . . . . . . . . . . . . . . . . . . . . . 30

2.5.2

Prototip funkcije . . . . . . . . . . . . . . . . . . . . . 30

2.6 Polja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

2.6.1

<math.h>

. . . . . . . . . . . . . . . . . . . . . . . . . 36

2.7 Pokazivaˇci . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
2.8 Polja znakova . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

3 Konstante i varijable

46

3.1 Znakovi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.2 Komentari . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.3 Identifikatori i kljuˇcne rijeˇci . . . . . . . . . . . . . . . . . . . 47
3.4 Osnovni tipovi podataka . . . . . . . . . . . . . . . . . . . . . 49

3.4.1

Cjelobrojni podaci . . . . . . . . . . . . . . . . . . . . 49

3.4.2

Znakovni podaci . . . . . . . . . . . . . . . . . . . . . 52

2

background image

4

SADRˇ

ZAJ

6 Kontrola toka programa

96

6.1 Izrazi i naredbe . . . . . . . . . . . . . . . . . . . . . . . . . . 96

6.1.1

Izrazi . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96

6.1.2

Naredbe . . . . . . . . . . . . . . . . . . . . . . . . . . 97

6.1.3

Sloˇzene naredbe . . . . . . . . . . . . . . . . . . . . . . 98

6.1.4

Popratne pojave i sekvencijske toˇcke . . . . . . . . . . 98

6.2 Naredbe uvjetnog grananja . . . . . . . . . . . . . . . . . . . . 100

6.2.1

if

naredba

. . . . . . . . . . . . . . . . . . . . . . . 100

6.2.2

if-else

naredba . . . . . . . . . . . . . . . . . . . . . 101

6.2.3

Primjer: Djelitelji broja . . . . . . . . . . . . . . . . . 102

6.2.4

Viˇsestruka

if-else

naredba . . . . . . . . . . . . . . . 104

6.2.5

Primjer. Viˇsestruki izbor . . . . . . . . . . . . . . . . . 106

6.2.6

Sparivanje

if

i

else

dijela . . . . . . . . . . . . . . . . 106

6.3

switch

naredba . . . . . . . . . . . . . . . . . . . . . . . . . . 107

6.4

while

petlja . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110

6.5

for

petlja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111

6.5.1

Operator zarez . . . . . . . . . . . . . . . . . . . . . . 113

6.5.2

Datoteka zaglavlja

<stdlib.h>

. . . . . . . . . . . . . 113

6.6

do - while

petlja . . . . . . . . . . . . . . . . . . . . . . . . 114

6.7 Naredbe

break

i

continue

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

6.8

goto

naredba . . . . . . . . . . . . . . . . . . . . . . . . . . . 116

7 Funkcije

119

7.1 Definicija funkcije . . . . . . . . . . . . . . . . . . . . . . . . . 119
7.2 Deklaracija funkcije . . . . . . . . . . . . . . . . . . . . . . . . 123
7.3 Prijenos argumenata . . . . . . . . . . . . . . . . . . . . . . . 126
7.4 Inline funkcije . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
7.5 Rekurzivne funkcije . . . . . . . . . . . . . . . . . . . . . . . . 130
7.6 Funkcije s varijabilnim brojem argumenata . . . . . . . . . . . 132

8 Preprocesorske naredbe

134

8.1 Naredba

#include

. . . . . . . . . . . . . . . . . . . . . . . . 134

8.2 Naredba

#define

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

8.3 Parametrizirana

#define

naredba . . . . . . . . . . . . . . . . 136

8.4 Uvjetno ukljuˇcivanje . . . . . . . . . . . . . . . . . . . . . . . 138
8.5 Predefinirani makroi . . . . . . . . . . . . . . . . . . . . . . . 141
8.6

assert

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142

9 Struktura programa

144

9.1 Doseg varijable . . . . . . . . . . . . . . . . . . . . . . . . . . 144

9.1.1

Lokalne varijable . . . . . . . . . . . . . . . . . . . . . 144

SADRˇ

ZAJ

5

9.1.2

Globalne varijable . . . . . . . . . . . . . . . . . . . . . 145

9.1.3

Argumenti funkcijskog prototipa . . . . . . . . . . . . . 148

9.1.4

Lokalne varijable i standard C99 . . . . . . . . . . . . . 148

9.1.5

Funkcijski doseg . . . . . . . . . . . . . . . . . . . . . . 149

9.2

Vijek trajanja varijable . . . . . . . . . . . . . . . . . . . . . . 149
9.2.1

Automatske varijable . . . . . . . . . . . . . . . . . . . 149

9.2.2

Identifikatori memorijske klase . . . . . . . . . . . . . . 150

9.2.3

auto

. . . . . . . . . . . . . . . . . . . . . . . . . . . . 150

9.2.4

register

. . . . . . . . . . . . . . . . . . . . . . . . . 150

9.2.5

Statiˇcke varijable . . . . . . . . . . . . . . . . . . . . . 151

9.2.6

Statiˇcke lokalne varijable . . . . . . . . . . . . . . . . . 151

9.3

Vanjski simboli . . . . . . . . . . . . . . . . . . . . . . . . . . 152
9.3.1

Funkcije . . . . . . . . . . . . . . . . . . . . . . . . . . 153

9.3.2

Globalne varijable . . . . . . . . . . . . . . . . . . . . . 155

9.3.3

Vanjska imena . . . . . . . . . . . . . . . . . . . . . . . 156

10 Polja

157

10.1 Definicija i inicijalizacija polja . . . . . . . . . . . . . . . . . . 157
10.2 Polja znakova . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
10.3 Funkcije za rad sa stringovima . . . . . . . . . . . . . . . . . . 161
10.4

sscanf(), sprintf()

. . . . . . . . . . . . . . . . . . . . . . 164

10.5 Polje kao argument funkcije . . . . . . . . . . . . . . . . . . . 165
10.6 Viˇsedimenzionalna polja . . . . . . . . . . . . . . . . . . . . . 166
10.7 Polja varijabilne duljine . . . . . . . . . . . . . . . . . . . . . 170

11 Pokazivaˇ

ci

173

11.1 Deklaracija pokazivaˇca . . . . . . . . . . . . . . . . . . . . . . 173
11.2 Pokazivaˇci i funkcije . . . . . . . . . . . . . . . . . . . . . . . 175
11.3 Operacije nad pokazivaˇcima . . . . . . . . . . . . . . . . . . . 177

11.3.1 Poveˇcavanje i smanjivanje . . . . . . . . . . . . . . . . 177
11.3.2 Pokazivaˇci i cijeli brojevi . . . . . . . . . . . . . . . . . 179
11.3.3 Usporedivanje pokazivaˇca . . . . . . . . . . . . . . . . 179
11.3.4 Oduzimanje pokazivaˇca . . . . . . . . . . . . . . . . . . 179
11.3.5 Primjer . . . . . . . . . . . . . . . . . . . . . . . . . . 180
11.3.6 Generiˇcki pokazivaˇc . . . . . . . . . . . . . . . . . . . . 181

11.4 Pokazivaˇci i jednodimenzionalna polja . . . . . . . . . . . . . . 183
11.5 Pokazivaˇci i

const

. . . . . . . . . . . . . . . . . . . . . . . . 185

11.6 Polja pokazivaˇca

. . . . . . . . . . . . . . . . . . . . . . . . . 186

11.7 Pokazivaˇci i viˇsedimenzionalna polja . . . . . . . . . . . . . . . 187

11.7.1 Matrica kao pokazivaˇc na pokazivaˇc . . . . . . . . . . . 188

11.8 Dinamiˇcka alokacija memorije . . . . . . . . . . . . . . . . . . 189

background image

SADRˇ

ZAJ

7

A

234

A.1 ANSI zaglavlja . . . . . . . . . . . . . . . . . . . . . . . . . . 234
A.2 ASCII znakovi . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
A.3 Matematiˇcke funkcije . . . . . . . . . . . . . . . . . . . . . . . 236

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

Prijavi se i preuzmi ceo dokument.

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

Slični dokumenti