Sie sind auf Seite 1von 48

SVEUČILIŠTE/UNIVERZITET“VITEZ“U TRAVNIKU

FAKULTET INFORMACIONIH TEHNOLOGIJA

SMJER: INFORMACISKE TEHNOLOGIJE

PROGRAMSKI JEZIK C

SEMINARSKI RAD

Travnik, 2019.
SVEUČILIŠTE/UNIVERZITET“VITEZ“ U TRAVNIKU
FAKULTET INFORMACIONIH TEHNOLOGIJA

SMJER: INFORMACISKE TEHNOLOGIJE

IZJAVA:
Ja, Alen Kalaković, student Sveučilišta/Univerziteta „Vitez“ u Vitezu,
indeks broj: 119-18/RIIT odgovorno i uz moralnu i akademsku
odgovornost izjavljujem da sam ovaj rad izradio potpuno samostalno uz
korištenje citirane literature i pomoć profesora.

Potpis studenta ________________________

STUDENT: Alen Kalaković


PREDMET: Principi programiranja
PROFESOR: Prof.dr Zoran Avramović
ASISTENT: Mr. Mahir Zajmović
SADRŽAJ

1. UVOD ................................................................................................................... 1

1.1. PREDMET,PROBLEMI I OBJEKAT ISTRAŽIVANJA ............................. 1


1.2. RADNA I POMOĆNE HIPOTEZE .............................................................. 1
1.3. SVRHA I CILJEVI ISTRAŽIVANJA .......................................................... 1
1.4. ZNANSTVENE METODE ........................................................................... 1
1.5. STRUKTURA RADA ................................................................................... 2
2. Programski jezik C ............................................................................................... 3

2.1. Razvoj C programa ........................................................................................ 4


2.2. Prvi program u programskom jeziku C ......................................................... 5
3. Konstante i varijable ............................................................................................. 6

3.1. Znakovi .......................................................................................................... 6


3.2. Komentari ...................................................................................................... 6
3.3. Identifikatori i ključne riječi .......................................................................... 7
3.4. Osnovni tipovi podataka ................................................................................ 8
3.5. Deklaracije varijabli ...................................................................................... 9
3.6. Konstante ..................................................................................................... 10
3.7. Inicijalizacija varijabli ................................................................................. 13
3.8. Enumeracije ................................................................................................. 13
4. Operatori i izrazi u programskom jeziku C ........................................................ 14

4.1. Aritmetički operatori ................................................................................... 14


4.2. Logički operatori ......................................................................................... 15
4.3. Relacioni operatori ...................................................................................... 15
4.4. Operatori za rad sa bitovima........................................................................ 16
4.5. Operatori dodjeljivanja ................................................................................ 16
4.6. Operatori grananja ....................................................................................... 17
4.7. Sizeof operator ............................................................................................ 17
4.8. Comma operator .......................................................................................... 17

0
4.9. Cast operator ................................................................................................ 21
Prioriteti operatora .................................................................................................. 21
5. Ulazne i izlazne naredbe u programskom jeziku C ............................................ 22

5.1. Ispisivanje i učitavanje znakova .................................................................. 22


6. Kontrola toka programa ...................................................................................... 23

6.1. Programske petlje ........................................................................................ 26


6.1.1. For petlja .............................................................................................. 27
6.1.3. Do while petlja : ................................................................................... 29
7. Polja u programskom jeziku C ........................................................................... 31

8. Funkcije u programskom jeziku C ...................................................................... 33

9. Zaključak ............................................................................................................ 34

Literatura .................................................................................................................... 35
1. UVOD

Programski jezik je određen skupom simbola i pravilima njihovog slaganja kojim se


opisuje postupak računanja. Opis računanja u danom programskom jeziku
interpretira, odnosno tumači, stroj koje nazivamo računar. Poznati sinonimi za
postupak računanja su algoritam i program.

Osnovna podjela programski jezika je na niže (strojne jezike) i više (orijentirane


ljudima).

Viši programski jezici mogu biti:


• sekvencijalni
• proceduralni (Pascal, C)
• funkcijski (Lisp, Erlang, ML)
• objektno orijentirani (Java, C++)

1.1.PREDMET,PROBLEMI I OBJEKAT ISTRAŽIVANJA

Predmet istraživanja ovog seminarskog rada jeste nešto opčenito reći o programskom
jeziku C , na koji način radi i koje su njegove najznačajnije karakteristike .
Objekat istraživanja je programski jezik C.

1.2.RADNA I POMOĆNE HIPOTEZE

Radna hipoteza : Na osnovu datog problema i tematike postavlja se glavna hipoteza


koja glasi : "C programski jezik je jezik koji u današnjici ima široku primjenu i bit-
nost u širokom opsegu rješavanja problema."

1.3.SVRHA I CILJEVI ISTRAŽIVANJA

Svrha i cilj ovog seminarskog rada jeste detaljno pojasnitiprogramski jezik C, ispita-
ti na koji način radi ,kako programirati u tom programskom jeziku ,navesti njegove
najvažnije karakteristike i opisati sve te karakteristike.

1.4.ZNANSTVENE METODE

Znanstvene metode koje se koriste pri izradi ovog seminarskog rada su :

 Induktivna i deduktivna metoda

 Metoda analize i sinteze

 Statička metoda

 Povijesna metoda

1
1.5.STRUKTURA RADA

Struktura rada je usklađena sa Uputstvom za pisanje seminarskog rada na prvom


ciklusu studija kao i temi seminarskog rada. On sadrži devet poglavlja.

Prvo poglavlje, Uvod, sadrži pet potpoglavlja:


- Problem, predmet i objekt istraţivanja,
- Svrha i ciljevi istraţivanja,
- Radna hipoteza i pomoćne hipoteze,
- Znanstvene metode,
- Struktura rada.

Drugo poglavlje se odnosi opčenito na programski jezik C , njegov nastanak i njegov


historijski razvoj .Samo poglavlje se sastoji od dva potpoglavlja koja obuhvataju
razvoj programskog jezika C i njegovog prvog programa.

Treće poglavlje nosi naziv kosntante i varijable , u tom poglavlju se definiše šta su
konstante i varijable i šta sve u njih ubrajamo. Samo poglavlje se sastoji iz osam
potpoglavlja koji obuhvataju sve ono što spada u konstante i varijable .

Četvrto poglavlje se odnosni na operatore i izraze u programskom jeziku C . To po-


glavlje se sastoji iz deset potpoglavlja. U ovom poglavlju su definisani operatori i
izrazi , te navedeno kako se operatori dijele . U potpoglavljima su detaljno definisani
svi operatori u programskom jeziku C.

Peto poglavlje se odnosi ulazne i izlazne naredbe programskog jezika C. Ovo po-
glavlje se sastoji od jednog potpoglavlja . U tom potpoglavlju je navedeno kako se
ispisivaju i učitavaju znakovi, te mnoge ulazne i izlazne naredbe.

Šesto poglavlje se odnosi na kontrolu toka programa. U ovom poglavlju su


definisane izrazi i naredbe , te podjele naredbi. Ovo poglavlje ima jedno potpoglavlje
u kojem su sve programske petlje navedene i definisane.

Sedmo poglavlje se odnosi na polja u programskom jeziku C. U tom poglavlju je


definisano polje i njegove podjele.
Osmo poglavlje nosi naziv Funkcije. U tom poglavlju su definisane funkcije, podjela
funkcija i napisano je nešto općenito o funkciji main.

Deveto a ujedno i zadnje je zaključak koje je daje generalnu ocjenu o programskom


jeziku C i na prihvatanje ili odbijanje radne i pomoćnih hipoteza.

2
2. Programski jezik C
Programski jezik C je viši programski jezik opće namjene. Također za programski
jezik C može se reći da je konzolni jezik , strukturni jezik jer koristi strukture kao
primaran vid izvedenih tipova podataka.

Ovaj programski jezik je stvoren za rješavanje praktičnih problema kodiranja sis-


temskih programa i jezgre operativnog sistema UNIX, koji je praktički u cijelosti
napisan u C-u.

Slika 1. Programski jezik C

Izvor : http://www.educa.fmf.uni-lj.si/izodel/sola/2001/di/Rupar/izobrazevanje/tutorc

Historijski razvoj Programskog jezika C :

Ovaj programski jezik je nastao 70-tih godina 20 vijeka . Autor ovog programskog
jezika je Dennis Ritchie, no značajan doprinos nastanku C-a dali su Ken Thompson
kao autor programskog jezika B i Martin Richards, autor programskog jezika BCPL.

Programski jezik C dosta se mijenjao tokom godina te je u više navrata neformalno i


formalno standardiziran.

Prva značajna verzija ovog programskog jezika poznata je pod nazivom "K&R C",
što je engl. kratica prezimena dvaju autora najpoznatijeg C priručnika "The C Pro-
gramming Language", a to su Brian Kernighan i Dennis Ritchie.

Prvobitni razvoj C programskog jezika započinje između 1969 i 1973 u AT&T Bell
Labs, i po Dennis Ritchie-ju najkreativniji period je bio u toku 1972-ge godine.
Nazvan je C jer su mnoge od njegovih karakteristika potekle od ranijeg programskog
jezika zvanog B.

Tokom 1980-ih, Bjarne Stroustrup zajedno s drugim istraživačima u Bell Labs


proširuje C dodajući sposobnosti objektno orijentiranog programiranja, a naziv ovog

3
novog programskog jezika je C++. Nažalost, ta je 100%-na kompatibilnost ujedno i
razlog što su problemi koje programiranje u C-u nosi sa sobom naslijeđeni u C++-u.

2.1.Razvoj C programa

Razvoj programskog jezika C ogleda se u šest faza ,a to su :

1. Editovanje (program je kreiran u editoru i zapamćen u disku )

2. Preprocesiranje

3. Kompilacija (kompajler kreira objektni kod I smješta ga na disk )

4. Linkovanje (linker povezuje objektni kod sa bibliotekom)

5. Učitavanje ili Load (Loader učitava program u memoriju)

6. Izvršenje

Slika 2. Dijagram razvoja C programa

Izvor : www.ucg.ac.me/.../Uvod%20u%20programski%20jezik%20C.ppt

4
2.2.Prvi program u programskom jeziku C

Jedan jednostavan ali potpun C program izgleda ovako :

#include < stdio.h >


int main (void)
{
printf ( "Dobar dan.\n" ) ;
return 0 ;
}

Program treba spremiti u u datoteku s ekstenzijom „.c „ kako bi se znalo da se radi o


C- programu . Nazivamo stoga datoteku „prvi.c.“

Program kompiliramo naredbom ( cc prvi.c ) nakon čega prevodilac kreira izvršni


program i dalje mu ime “a.out“.

Da bi smo završili program dovoljno je otipkati „./a.out“.


Rezultat izvršavanja programa je ispis poruke.1

Svaki program u programskom jeziku C započinjemo naredbom #include < stdio.h >

Njom se od prevodioca traži da uključi (include ) u program datoteku studio.h koja


sadrži informacije potrebne za korištenje funkcije printf i mnogih drugih .

Datoteke s eksrenzijom .h nazivaju se datoteke zaglavlja ( eng.header files ).

Sljedeća linija predstavlja deklaraciju funkcije main : int main (void)

U oble zagrade je stavljena ključna riječ void ( eng.void = prazan ).

Iza oblih zagrada dolaze vitičaste zagrade koje određuju tijelo funkcije .

Svaka naredba završava znakom tačka –zarez ( ; ).

Navodnici služe za ograničavanje konstantnih znakovnih nizova .

Znak \ n označava prijelaz u novi red.

Naredba return se završava izvršavanje funkcije. U ovoj naredbi se navodi neka


vrijednost u pozivnom programu koju je predhodno vratila neka fukcija.

Nula (0) se interpretira kao uspješni završetak programa .

1
M. Jurak Programski jezik C

5
3. Konstante i varijable
Konstante su podaci čije se vrijednosti ne mogu mijenjati , dok su varijable podaci
čije se vrijednosti tokom izvođenja programa mijenjaju.

U konstante i varijable možemo ubrojati :

1. Znakove
2. Komentare
3. Identifikatore i ključne rijeći
4. Osnovne tipove podatak ( cjelobrojne, znakovne, logičke, realne,kompleksne)
5. Deklaracija varijabli ( polja i pokazivači)
6. Konstante
7. Inicijalizacija varijabli
8. Enumeracije

3.1. Znakovi

U programskom jeziku C od znakova se koriste velika i mala sloba engleske abecede


A-Z i a-z , decimalne znamenke 0-9 te specijalni znakovi.

+ - * / = % & #
! ? ^ " ' ͂ \ ‫׀‬
< > ( ) [ ] { }
. , : ; _(bjelina)

Tabela 1. Specijalni znakovi

Izvor: https://web.math.pmf.unizg.hr/~singer/Prog_Add/c.pdf

Pod bjelinom se podrazumijeva horizontalni i vertikalni tabulator te znak za prijelaz


u novi red.

3.2. Komentari

U program je potrebno stavljati komentare radi lakšeg razumijevanja njegovog


funkcionisanja. 2

Komentari se mogu pisati na dva načina :

1. U koliko se komentar nalazi u jednom redu na početku tog reda stavlja se


karakter //
2. Kada sam komentar ima više rodova , komentar je potrebno ograničiti pa-
rovima karaktera /* i */ .

2
M. Jurak Programski jezik C

6
3.3. Identifikatori i ključne riječi

Identifikatori su imena koja se pridružuju različitim elementima kao što su varijable


polja i funkcije. Sastoje se od slova i brojeva u bilo kojem poretku s ograničenjem da
prvi znak mora biti slova. Velika i mala slova razlikuju i znak “ _” (underscore)
smatra se slovom.3

Oni služe da imenuju elemente programa :

1. Promjenljive
2. Simboličke konstante
3. Funkcije
4. Korisničke tipove podataka
5. Labele

Identifikator može biti proizvoljne dužine, ali kompajler tretira:


1. 31 znak za interna imena (koja se definišu i koriste samo u jednom fajlu)
2. 6 znakova za imena koja se koriste u više fajlova.

Ključne riječi su riječi čije je značenje unaprijed definisano i ne mogu se koristiti kao
identifikatori.

auto extern _Bool asm fortran


break sizeof _Complex void enum
case pascal int while singned
for static union huge near
char struct long inline double
if ada unsigned far default
switch entry return short register
typedef do continue else

Tabela 2. Ključne riječi

Izvor: https://web.math.pmf.unizg.hr/~singer/Prog_Add/c.pdf

Imena koja počinju sa znakom _ treba izbjegavati jer su rezervisana samo za


varijable i funkcije iz standardne biblioteke.

3
M. Jurak Programski jezik C

7
3.4. Osnovni tipovi podataka

Osnovni tipovi podataka su :

 Int ( cjelobrojni podatak za čije se predstavljanje koriste 12 ili 32 bita –


zavisno od hardvera računara) .

 Char ( mali cjelobrojni podatak dužine 1 bajt koji može da primi i kod jednog
znaka pa se koristi i predstavljanje znakovnih podataka ).

 Float ( realni podatak u jednostrukoj tačnosti – 32 bita) .

 Double ( realni podatak u dvostrukoj tačnosti – 64 bita ).4

Cjelobrojni podatci služe za pamčenje cjelih brojeva. Svaki od ovih tipova pokriva-
ju određen raspon cijelih brojeva zavisno o količini memorije koju zauzima i načinu
kodiranja.5

Cjelobrojni tip int može se modificirati pomoću kvatifikatora short i long.

Short – memorijski prostor za predstavljanje podataka se smanjuje na pola

Long – memorijski prostor za predstavljanje podataka se udvostručava

Unsigned – kaže da se radi o neoznačenom podatku

Singned – kaže da se radi o označenom podatku (po default-u svi su podatci oz-
načeni).

Znakovni podatci : Znakovi se u računaru kodiraju i sve manipulacije sa znakovima


obavljaju se putem njihovih numeričkih kodova.

Postoje različiti načini kodiranja znakova , a neki od njih su :


1. ASCII kod ( ima numerički raspon od 0-127)
2. Char (cjelobrojni tip podataka sa malim rasponom)
3. Unsigned char ( poprima pozitivne cjelobrojne vrijednosti 0-255)
4. Signed char ( poprima pozitivne i negativne vrijednosti od -127 do 127)

Logički podatci : Svaki cjelobrojni tip podataka može preuzeti ulogu logičkog tipa
podataka tako što se vrijednost različita od nule interpretira kao istina , a nula kaže
laž.
Poseban tip logičkih podataka je _Bool koji može imati samo vrijednosti 0 ili 1
( istina ili laž ) .

4
M. Jurak Programski jezik C
5
Dennis M. Ritchie Brian W. Kernighan”The C Programming Language” , Prentice Hall New Jersy
1983

8
Realni podatci : Podaci tipa float , double i long double su realni brojevi koji zbog
specifičnog načina pamčenja u računaru imaju naziv brojevi s pokretnim zarezom
(eng.floating point numbers). Oni su analogni cjelobrojnim tipovima short , int i
long.

Brojeve tipa float, double i long double su brojevi jednostruke , dvostruke i


četverostruke preciznosti.

U jednostrukoj preciznosti float imamo :

1.17549 ∗ 10−38 ≈ 2−126 ≤ [𝑥] ≤ (1 − 2−24 ) ∗ 2128 ≈ 3.40282 ∗ 1038

U dvostrukoj double preciznosti imamo :

2.225 ∗ 10−308 ≈ 2−1022 ≤ [𝑥] ≤ (1 − 2−53 ) ∗ 21024 ≈ 1.798 ∗ 10308

Kompleksni podatci :

Kod ove vrste podataka imamo tri kompleksna tipa float_Complex, dou-
ble_Complex i long double_Complex. 6

Jedna float_Complex varijabla sastoji se od dvije float varijable koje prezentiraju


realni i kompleksni dio broja.

Pored ova tri tipa podataka imamo još tri imaginarna tipa , a to su :
1. float_Imaginary
2. double _Imaginary
3. long double_Imaginary

3.5. Deklaracije varijabli

Varijabla je objekat koji zauzima dio memorijskog prostora i koji se može dohvatiti
putem svog imena. Ima tri atributa o kojim ovisi kako će se podatak pohranjen u
memoriji interpretirati : to su tip , memorijska klasa varijable i doseg. 7

Memorijska klasa je najčešće određena implicitno položajem varijable u program.

Deklaracija određuje ime i tip varijable i ima oblik - tip ime ; , gdje je tip varijabla ,a
ime njeno ime.
Primjer : int a,b ;
unsigned c ;
char d ;
U ovom primjeru a i b su cjelobrojne varijable , c je cjelobrojna varijabla bez
predznaka , a d je znakovna varijabla.

6
Dennis M. Ritchie Brian W. Kernighan”The C Programming Language” , Prentice Hall New Jersy
1983
7
M. Jurak Programski jezik C

9
Varijable istog tipa moguće je deklarirati u istom redu : short a,b,c ;

Varijable se deklariraju na početku funkcije (prije prve izvršne naredbe ), varijablu je


također moguće deklarirati i izvan svih funkcija ( na početku datoteke – vanjske vari-
jable).

Kada je varijabla deklarirana unutar neke funkcije onda se na mjestu deklaracije


rezervira memorijski prostor za varijablu. Varijable definirane unutar neke funkcije i
izvan svih funkcija razlikuju se po svom dosegu.

Doseg varijable je dio programa u kojem je varijabla vidljiva , odnosno dio programa
u kojem joj se može pristupiti putem njenog imena. Doseg varijable definirane u
nekoj funkciji je tijelo te funkcije. Iz drugih funkcija toj se varijabli ne može
pristupiti. Varijabli deklariranoj izvan svih funkcija(vanjskoj varijabli) može se
pristupiti iz svake funkcije.

Polje je niz varijabli istog tipa indeksiranih cjelobrojnim indeksom koji se kreće u
rasponu od 0 do n-1 , gdje je n broj elemenata polja.

Za indeksiranje polja koristimo uglaste zagrade “[ ]” i početna vrijednost indeksa je


uvijek nula .

Deklaracija polja ima oblik :

 Tip ime [dimenzija] ; - gdje je tip tip podataka, ime ime polja , a dimenzija
je broj elemenata polja.

 Deklaracija polja može biti dana zajedno s deklaracijama drugih varijabli kao
u primjeru float x, vektor[10], y; - u kom su x i y varijable tipa float , a
vektor polja od 10 elemenata tipa float.

Pokazivači (pointeri) su posebne varijable pomoću kojih se pohranjuju i manipuliraju


adrese. Ukoliko želimo memorisati adresu npr.cjelobrojne varijable, moramo
deklarirati pokazivač na cjelobrojnu varijablu.

3.6.Konstante

C poznaje cjelobrojne, realne i znakovne konstante te konstantne znakovne nizove.

Cjelobrojne konstante mogu biti zapisane u tri brojevna sistema:


 decimalnom (baza 10),
 oktalnom (baza 8)
 heksadecimalnom (baza 16).

Decimalne cjelobrojne konstante sastavljene su od decimalnih cifara 0 do 9.


Ako konstanta sadrži više od jedne znamenke prva ne smije biti jednaka nuli.

10
Primjeri su: 0 1 234 -456 99999

Decimalna tačka nije dozvoljena, tako da 10.0 nije cjelobrojna konstanta.

Oktalne cjelobrojne konstante dobivaju se kombinacijom decimalnih cifara 0 do 7.


Prva cifra mora uvijek biti 0 što signalizira da se radi o broju zapisanom u oktalnom
sistemu.

Primjeri su: 0 01 -0651 077777

Decimalna tačka nije dozvoljena.

Heksadecimalne cjelobrojne konstante započinju s 0x ili 0X i sastoji se od kombi-


nacije cifara 0 do 9 i slova a do f (mala ili velika).

Sve numeričke konstante moraju biti unutar granica odredenih tipom podatka
koji predstavljaju.
Cjelobrojne konstante moraju stoga biti unutar granica odredenih tipom int.
Konstante tipa unsigned, long i unsigned long mogu poprimiti vrijednosti veče od
običnih cjelobrojnih konstanti i stoga moraju biti posebno označene.
Konstanta tipa long formira se tako da se na kraj cjelobrojne konstante doda slovo L
(veliko ili malo), konstanta tipa unsigned formira se dodavanjem slova U (veliko ili
malo). Konstanta tipa unsigned long formira se dodavanjem slova UL
(veliko ili malo).8

Primjeri su:

Konstanta Tip
500000U unsigned (decimalna)
123456789L long (decimalna)
123456789ul unsigned long (decimalna)
0123456l long (oktalna)
0X50000U unsigned (heksadecimalna)
-5000ULL long long (decimalno)
50000ULL unsigned long long (decimalno)

Ui L mogu se kombinirati u bilo kojem poretku.

Realne konstante se pišu u dekadnom brojnom sistemu i mogu biti predstavljene u:


1. fiksnom zarezu
2. eksponencijalnom obliku.

Zapis u fiksnom zarezu obavezno sadrži decimalnu tačku i to tačno tamo gdje je
njeno stvarno mjesto u broju (npr. 34.67, 56., .98).

Za veoma velike ili veoma male brojeve koristi se eksponencijalni zapis.


Eksponencijalni zapis je oblika: mEe gdje m predstavlja mantisu broja, a e
eksponent (npr. 2.23e2, -0.5, .2E-2, 7e-23)

8
M. Jurak Programski jezik C

12
Po default-u realne konstante su tipa double.

Dodavanjem sufiksa:
 F ili f dobijaju se konstante tipa float,
 L ili l, konstante tipa long double.

Znakovna konstanta je cijeli broj čija je vrijednost jednaka kodu znaka navedenog
između jednostrukih navodnika (npr. 'a', '>',...).

Npr. u ASCII skupu znakova, znakovna konstanta ‘5’ ima vrijednost 53,
‘A’ ima vrijednost 65.

Kod Značenje
\b povratak za jedno mjesto unazad (backspace)
\f nova stranica (form feed)
\n novi red (new line)
\r povratak na početak linije (carriage return)
\t horizontalini tabulator
\v vertikalni tabulator
\0 nul znak (null character)
\? upitnik
\” navodnik
\' jednostruki navodnik
\\ obrnuta kosa crta (backslash)

Tabela 3. Posebni znakovi

Izvor: http://www.pef.uns.ac.rs/index.php/oglasi/category/34-izborni-blok-ii-c-
jezik?download=208:programski-jezik-c
(09.02.2018)

Literal je sažeti način zapisivanja niza znakovnih konstanti.


Npr. "Ovo je literal"

C prevodilac svaki znak prevodi u jedan cjeli broj tipa char (ASCII ekvivalent) i na
kraju dodaje još jedan znak sa vrijednošču 0 (‘\0’), tzv. null terminated symbol.9

Npr. literal "Zdravo" će se u memoriji zapisati kao ‘Z’ ‘d’ ‘r’ ‘a’ ‘v’ ‘o’ ‘\0’

3.7. Inicijalizacija varijabli

Varijable se mogu inicijalizirati u trenutku deklaracije.


Sintaksa je tip varijabla = konstantni izraz.
Na primjer:
int a=7,b;
unsigned c=2345;
char d=’\t’;
gdje su inicijalizirane varijable a, c i d, dok b nije inicijalizirana.

9
Despalatović Lj.” Programkse metode i apstrakcije” , Sveučilište u Splitu , Split
Sve deklaracije varijabli mogu nositi kvalifikator const koji indicira da varijabla neče
nikad biti mijenjana, tj. da se radi o konstanti.
Npr. const double e=2.71828182845905;

3.8.Enumeracije

Enumeracije predstavljaju alternativu uvođenju simboličkih konstanti putem prepro-


cesorske direktive #define.

Pomoću enumeracije deklariramo simbolička imena koja primaju cjelobrojne vrijed-


nosti i čija je osnovna svrha povečanje čitljivosti programa.

Npr.nakon deklaracije enum (False , True ) , imena False i True možemo koristiti u
program kao cjelobrojne konstante (False 0 , a True 1).

To ekvivalentno preprocesorskim naredbama

#define FALSE 0

#define TRUE 1

Princip je da se svakom imenu deklariranom u enumeraciji pridruži jedan cjeli broj:


prvom se pridruži nula, drugom 1 itd.Tako smo dobili FALSE=0 ,a
TRUE=1.Enumeraciji možemo dati ime i tada možemo deklarirati varijable tipa
enumeracije. 10

Možemo ih koristiti na sljedeči način:

X = FALSE;

………..

If (x==TRUE) y=FALSE;

Varijable tipa enum pridonose razumljivosti programa. Koristimo ih za one varijable


koje primaju konačno mnogo vrijednosti i za koje je poželjno uvesti simbolička
imena.

10
M. Jurak Programski jezik C

13
4. Operatori i izrazi u programskom jeziku C

Operatori su simboli koji označavaju određenu operaciju i koji povezuju jedan ili
više operanada u izraz.11

Operatore možemo podijeliti na :

1. Po broju operanada (unarne, binarne i ternarne)

2. Po funkcionalnosti : operatori za pristup članovima polja i struktura

operator za poziv funkcije

aritmetički operatori

relacioni operatori

logički operatori

operatori za rad sa bitovima

operatori dodeljivanja vrijednosti

operator grananja

sizeof- operator

comma operator

cast operator

operatori referenciranja i dereferenciranja

Najznačajni operatori u programskom jeziku C su : aritmetički , logički ,relacioni,


operatori za rad sa bitovima, operatori dodjeljivanja, operatori grananja, sizeof
operator, comma operator i cast operatori.

4.1. Aritmetički operatori

Programski jezik C poznaje pet aritmetičkih operatora :

1. Sabiranje (+)
2. Oduzimanje (–)
3. Množenje (*)
4. Dijeljenje ( /)
5. Modulo (%

11
Despalatović Lj.” Programkse metode i apstrakcije” , Sveučilište u Splitu , Split

14
Aritmetički operatori djeluju na numeričkim operandima tj. cjelobrojnim, realnim i
znakovnim operandima (znakovna konstanta ima cjelobrojni tip).

Svi ovi operatori su binarni , što znači da imaju dva argumenta i njihova svrha je
jasna ,osim posljednjeg.

% - (po modulu) označava ostatak dijeljenja i primjenjuje se isključivo nad cjelobro-


jnim podacima. Npr.5 % 2 = 1

4.2. Logički operatori

U programskom jeziku C, operandi u logičkim operacijama mogu biti:

1. numeričkog tipa
2. tipa pokazivača.

S obzirom da su ovi operatori prirodno (u matematici) primjenjuju nad logičkim po-


dacima, pri izvršenju ovih operacija svaka vrijednost različita od nule se tretira kao
logička vrijednost tačno (true), jedino 0 označava netačno (false).

U ovu grupu operatora spadaju:


! (negacija),
&& (konjukcija, tj. logičko I),
|| (disjunkcija, tj. logičko ILI).

Rezultat operacije je 1 ako je rezultat logičke operacije tačno, u suprotnom, rezultat


je 0.

4.3. Relacioni operatori

Ovo su operatori za poređenje vrijednosti operanada. Operandi u ovom slučaju mogu


biti bilo kog numeričkog tipa ili pokazivači, a rezultat je logičkog tipa.

Kako logički tip u C-u nije definisan, ukoliko je poređenje tačno (tj. ukoliko je rela-
cija zadovoljena), rezultat je 1, u suprotnom rezultat je 0.

Ovoj grupi operatora pripadaju:

< (manje),

< = (manje ili jednako),

> (veće),

> = (veće ili jednako),

== (jednako),

! = (različito).

15
4.4. Operatori za rad sa bitovima

Ovakvi operatori su definisani u asemblerskim jezicima, a od viših programskih jezi-


ka, jedino ih C podržava.

Ovoj grupi operatora pripadaju:

~ (nepotpuni (jedinični) komplement,) - komplementira se svaki bit posebno

& (pokomponento logičko I),

^ (pokomponentno isključivo ILI),

(pokomponentno logičko ILI),

<< (pomjeranje ulijevo) - vrši pomjeranje bitova lijevog operanda za


onoliko mjesta ulijevo kolika je vrijednost desnog operanda,

>> (pomjeranje udesno) - vrši pomjeranje bitova lijevog operanda za


onoliko mjesta udesno kolika je vrijednost desnog operanda.

Primjeri:

int a,b;
a = 0723; // mem. lok a: 0000000111010011
b = ~a; // b: 1111111000101100
a = a << 4; // a: 0001110100110000
a = a >> 3; // a: 0000001110100110
b = a | 071; // b: 0000001110111111)

4.5. Operatori dodjeljivanja

Ovo je binarni operator koji smješta vrijednost desnog operanda na lokaciju čije se
ime nalazi sa lijeve strane operatora. Lijevi operand mora biti ime memorijske lo-
kacije.

Postoje dvije grupe ovakvog operatora:


- elementarni operator dodjeljivanja (=),
- složeni operatori dodjeljivanja (opšti oblik ovih operatora je < op > =)

Operator < op > može biti jedan od sljedečih:


+, -, *, /, %, <<, >>, &, |, ^.
Opšti izraz a < op > = b se može napisati i u obliku a = a < op > b

Primjer: a += 3; //ekvivalntno: a = a+3;


b -= a; //ekvivalentno: b = b-a;
proizvod *= a-5; ` // proizvod = proizvod*(a-5)

16
4.6. Operatori grananja

Ovo je jedini ternarni operator u C-u. Opšti oblik izraza kreiranog pomoću ovog op-
eratora je: < izraz1 > ?< izraz2 > : < izraz3 >

Kod ovog operatora izračunava se najprije vrijednost izraza < izraz1 >.

Ako je vrijednost ovog izraza različita od nule (true), izračunava se vrijednost izraza
< izraz2 > i njegova vrijednost je rezultat operacije.

Ako je vrijednost izraza < Izraz1 > jednaka nuli (false), izračunava se vrijednost
izraza < Izraz3 > i njegova vrijednost je rezultat operacije.

Primjer : maximum = ( a >= b)? a : b;


abs_x = ( x >= 0 ) ? x : -x;

4.7. Sizeof operator

Svaka promjenljiva ili konstanta zauzima određeni dio memorijskog prostora.


Veličina tog memorijskog prostora zavisi od tipa promjenljive (konstante), tj. od in-
ternog načina predstavljanja podataka pojedinih tipova u memoriji.

sizeof - izračunava broj bajtova koji zauzima neki podatak ili tip u memoriji.

Ovaj operator je unaran i njegov opšti oblik je:

sizeof (< objekat >) ili sizeof (tip).

Primjer : int broja, brojb;


broja = sizeof (short int);
brojb = sizeof (broja);

4.8. Comma operator

Ovo je binarni operator koji služi za formalno spajanje više izraza u jedan izraz.

Lijevi i desni operand operatora “,” su izrazi, pri čemu je redoslijed njihovog
izvršavanja s lijeva na desno. (Uglavnom se koristi kod poziva funkcija).

Primjer : a++, b *= 2, c = a+b;

17
4.9. Cast operator

Koristi se za eksplicitno pretvaranje promjenljive ili izraza jednog tipa u neki drugi
tip.

Operator je unaran i opšti oblik izraza za konverziju tipa je: (< tip >) < izraz >
gde je: < tip > - neki od tipova,
< izraz > - je promjenljiva ili neki složeniji izraz čiji tip treba promjeniti.

Prioriteti operatora

Prioritet operatora određuju redosljed izvodženja operacija kada u izrazu figuriše


veći broj operatora.

U izrazima se uvijek izvršavaju operatori od operatora najvišeg prioriteta prema


operatorima nižih prioriteta. Ovaj redosljed se može promeniti korišćenjem zagrada.

U tabeli su poredani operatori programskog jezika C po njihovom prioritetu (počev


od operatora najvišeg prioriteta prema operatorima nižih prioriteta).

1. () [] . ->
2. unarni - ~ & | ++ -- sizeof
3. * / %
4. + -
5. << >>
6. < > <= >=
7. == !=
8. &
9. ^
10. |
11. &&
12. ||
13. ?:
14. = op =
15. ,

Tabela 4. Prioriteti operatora programskog jezika C

Izvor:https://svetinformatikeiprogramiranja.files.wordpress.com/2013/09/programski
jezikc.ppt

21
5. Ulazne i izlazne naredbe u programskom jeziku C

Programski jezik C ima jedinstveni način pristupa unosu i ispisu podataka. U ovom
programskom jeziku nisu definisane nikakve ulazno izlazne naredbe već se ulazno
izlazne operacije obavljaju putem funkcija deklariranih i definisanih u bibliotekama.

Deklaracije funkcija za upravljanje ulaznim/izlaznim resursima u C-u nalaze se u


fajlu stdio.h .

Biblioteka stdio.h je biblioteka koja se mora uključiti da bi se ulazno/izlazne funkcije


mogle koristiti u program. Za uključivanje jednog fajla u drugi koristi se pretpro-
cesorska direktiva include (#include < stdio.h >).

Datoteke s ekstenzijom .h nazivaju se datoteke zaglavlja (eng.header files).

Format include direktive:


#include < ime_fajla > ili #include “ime_fajla”

5.1. Ispisivanje i učitavanje znakova

Učitavanje i ispisivanje jednog znaka ostvaruje se pomoču naredbi getchar( ) i


putchar( ).

Funkcije su deklarirane na sljedeći način: int getchar (void);


int putchar (int c);

Naredba getchar ( ) čita jedan znak sa standardnog ulaza (tipkovnice).


Funkcija nema argumenata pa je sintaksa poziva: c_var=getchar();12

Funkcija putchar ( ) šalje jedan znak na standardni izlaz (ekran). Ona uzima jedan
argument i vrača cjelobrojnu vrijednost. Najčešće poziv funkcije ima oblik :
putchar(c_var); , pri čemu se vračena vrijednost ignorira.13

Primjer: #include <stdio.h>


void main (void)
{
char ch;
printf ("Upisite znak: \n");
ch = getchar ();
printf ("Upisali ste znak ");
putchar (ch);
putchar (’\n’);
}

12
Dennis M. Ritchie Brian W. Kernighan”The C Programming Language” , Prentice Hall New Jersy
1983
13
M. Jurak Programski jezik C
Funkcija getch ( ) koristi se također u svrhu učitavanja znakova. Ona reagira na svaki
unos znaka ne čekajući ENTER, tijekom unosa znakovi se ne prikazuju na ekranu.

Funkcija putch ( ) koristi se prilikom ispisivanja skupa znakova. Ona vraća ispisani
broj znakova.

Primjer: #include <stdio.h>


void main (void)
{
char str[80];
puts ("Unesite string:");
gets (str);
puts ("Unijeli ste sljedeci string:");
puts (str);
}

Funkcija scanf služi za učitavanje podataka sa standardnog ulaza.

Poziva se na sljedeći način:

scanf (< format >,< adr_ul_podatka1 > [,< adr_ul_podatka2 >]…)

< format > u ovom izrazu je znakovni niz koji predstavlja definiciju konverzija koje
treba izvršiti pri unosu podataka. Svi ulazni podaci se učitavaju kao niz ASCII kodo-
va. Format definiše kako će se taj znakovni niz konvertovati u podatke odgova-
rajućeg tipa.
Svaka pojedinačna konverzija u ovom znakovnom nizu počinje znakom % i završava
se slovom koje označava vrstu konverzije.

& - adresni operator


&a – adresa promenljive a

Format pojedinačne ulazne konverzije: %[w][h|l|L] < tip_konverzije >

Slika 3. Najčešći znakovi konverzije kod funkcije scanf

Izvor: https://web.math.pmf.unizg.hr/~singer/Prog_Add/c.pdf
Prefiksi kod fukcije scanf :

1. w – cijeli broj koji označava dozvoljeni broj znakova za podatak u ulaznom


nizu.

2. h – prefiks koji se koristi ispred cjelobrojnih konverzija i označava da se vrši


konverzija ulaznog znakovnog niza u kratki cijeli broj
(rezultat je tipa short int)

3. I – se koristi ispred cjelobrojnih i realnih tipova konverzija i označava da se


vrši konverzija ulaznog znakovnog niza u dugi cijeli broj, ili
u realni broja u dvostrukoj tačnosti (rezultat je tipa long int ili double),

4. L – se koristi samo ispred realnih tipova konverzija koji označava


da se vrši konvertovanje ulaznog znakovnog niza u podatak tipa long double.

Primjer : int a;
unsigned b;
float x, y;
long double z;
scanf(“%d%u%f%e%Lf”, &a, &b, &x, &y, &z);

Funkcija printf ( ) se koristi za formatirani ispis podataka. Nakon ispisa funkcija


vraća broj ispisanih znakova ili vrijednost -1, što znači da je došlo do greške prilikom
ispisa.

Ova funkcija se poziva na sljedeći način: printf(< format >[< izraz1 >][,< izraz>]…)
, gdje je < format > znakovni niz koji predstavlja definiciju konverzija koje treba
izvršiti pri prikazu rezultata.

U ovom slučaju, vrši se konvertovanje memorijskog zapisa podataka u izlazne


znakovne nizove.

Osim pojedinačnih konverzija, format može sadržavati i dodatne komentare


koji će pojasniti izlazne rezultate ili uticati na preglednost prikazanih rezultata

Format pojedinačne izlazne konverzije: %[-][+| ][#][w[.d]][h|l|L ]< tip_konverzije >

Prefiksi kod funkcije printf :

1. - označava da će se, ukoliko je dužina podatka manja od širine polja koje je


predviđeno za prikaz podatka, vršiti poravnanje uz lijevu ivicu ( po default-u
vrši se desno poravnanje).

2. + može da stoji isključivo ispred numeričkih konverzija i označava da će i


ispred pozitivnih brojeva stajati njihov znak (+).
3. «blanko» - stoji također ispred numeričkih konverzija i označava da će se pri
prikazu pozitivnih brojeva, na poziciji predviđenoj za znak broja pojaviti
«blanko» znak.

4. # stoji ispred cjelobrojih konverzija (o ili x) i označava da će se uz vrijed-


nost broja prikazati i oznaka brojnog sistema koji se koristi za prikaz (tj.ako
se koristi o konverzija , broj če početi sa nulom , a ako se koristi heksadeci-
malna konverzija , broj če početi sa 0x.

5. w – cijeli broj koji predstavlja širinu polja koje će se koristiti za prikaz podat-
ka.

6. d – cijeli broj koji ispred realnih podataka predstavlja broj cifara iza deci-
malne tačke, a ispred znakovnih nizova predstavlja maksimalni broj
karaktera koji će biti ispisani.

7. h, l, i L – imaju isto značenje kao i kod ulazne konverzije.

Slika 4. Kompletan C program

Izvor:https://svetinformatikeiprogramiranja.files.wordpress.com/2013/09/programski
jezikc.ppt

22
6. Kontrola toka programa
Izrazom nazivamo svaku kombinaciju operatora i operanada koju jezik dozvoljava.
Operatori mogu biti konstante i varijable ili njihove kombinacije.
Primjeri izraza su: 7.2 , 2+13-4 , x=3*2, a*(b+c/d)%2, n++, x= ++n % 2 …

Složeni izrazi mogu biti kombinacija više manjih izraza koje nazivamo podizraima.

Naredbe dijelimo na :

1. Složene (blok) naredbe su skup programskih naredbi koje se izvršavaju onim


redosljedim kako su i zapisane. Počinju sibolom { ,a završavaju } .

2. Naredbe uslovnog grananja : If naredba – sa njom se implementira osnovi


tip selekcije (grananja) kojom se vrši uslovno izvršenje jedne od dvije
moguće naredbe.

Slika 5. Dijagram If naredbe

Izvor:https://svetinformatikeiprogramiranja.files.wordpress.com/2013/09/programski
jezikc.ppt

Primjer if naredbe : #include <stdio.h>


main()
{
float x;
printf(“Unesite vrijednost argumenta x \n”);
scanf(“%f”,&x);
if ( x == 0 )
printf(“Za x=0 funkcija y=1/x nije definisana\n”);
else
printf( “y=%f\n”, 1/x );
system(“pause”);
return 0;
}

If-else naredba- je višestruka naredba koja ima samo dvije grane ( kada je
uslov ispunjen i kada uslov nije ispunjen ).

23
Slika 6. Dijagram If- else naredba

Izvor:https://svetinformatikeiprogramiranja.files.wordpress.com/2013/09/programski
jezikc.ppt

Primjer if-else naredbe : #include <stdio.h>


main()
{
float x,y;
printf(“Unesite vrijednost argumenta x \n”);
scanf(“%f”,&x);
if ( x < 2 )
y = x;
else if ( x < 3 )
y = 2;
else
y = x – 1;
printf( “y=%f\n”, y );
system(“pause”);
return0;
}

Switch naredba- je naredba za realizaciju višestrukog grananja u programu .


Ona nam omogučava da selektujemo kod koji če se izvršiti na osnovu
nekog uvjeta. Ova naredba je slična naredbi if- else.

Slika 7. Dijagram Switch naredbe

Izvor:https://svetinformatikeiprogramiranja.files.wordpress.com/2013/09/programski
jezikc.ppt

Primjer switch naredbe : #include <stdio.h>

25
main()
{
int tekuci;
printf(“unesite redni br. tekuceg mjeseca\n”);
scanf(“%d”,&tekuci);
switch( tekuci )
{
case 1: printf(“januar\n”);
case 2: printf(“februar\n”);
case 3: printf(“mart\n”);
case 4: printf{“april\n”);
case 5: printf(“maj\n”);
case 6: printf(“jun\n”);
case 7: printf{“jul\n”);
case 8: printf(“avgust\n”);
case 9: printf(“septembar\n”);
case 10: printf(“oktobar\n”);
case 11: printf(“novembar\n”);
case 12: printf(“decembar”);
}
system(“pause”);
return 0;
}

3. Naredbe bezuslovog skoka : Break naredba – ovom naredbom se prekida


izvrešenje strukture u kojoj se naredba nalazi. Format naredbe je break ;
i ovom naredbom se može prekinuti izvršenje programske naredbe .
Continue naredba – se može nači samo u tijelu neke programske petlje i sa
njom se prekida izvršenje tekuče iteracije petlje. Goto naredba – njen format je
goto < labela > .

Slika 8. Dijagram break naredbe

Izvor:https://svetinformatikeiprogramiranja.files.wordpress.com/2013/09/programski
jezikc.ppt
Primjer naredbe break : #include <stdio.h.>
#include <stdlib.h.>
int main()
{
int i ;
for (i=1,i<= 500. i++);
if(i%3= =0&&.%4= =0%%,%5= =0&&,%7= =0);
{
printf("%d\n",i);
break;
}
system("pause");
return 0;
}

Primjer naredbe continue: #include <stdio.h.>


#include <stdlib.h.>
int main()
{
int i ;
for (i=1,i<=20. i++);
{
if(i%3= = 0);
continue;
printf("%d\n",i);
}
system("pause");
return 0;
}

6.1. Programske petlje


Programske petlje omogućavaju višestruko ponavljanje određenog dijela programa u
toku njegovog izvršavanja.
Vrste petlji:
a) sa konstantnim brojem prolaza (brojačka petlja),
b) sa promjenljivim brojem prolaza: - do while tip
- repeat until tip

U programskom jeziku C postoje tri vrste programskih petlji :


1. for- petlja
2. while-petlja
3. do-while-petlja

26
6.1.1. For petlja

For petlja se obično koristi kada u progamu treba realizovati takozvanu brojačku
petlju. Brojačka petlja podrazumijeva da je unaprijed (prije ulaska u petlju) poznat
(može da se izračuna) broj ponavljanja tijela petlje.

Slika 9. Dijagram For petlje

Izvor:https://svetinformatikeiprogramiranja.files.wordpress.com/2013/09/programski
jezikc.ppt

< brojač > - ime promjenljive koja predstavlja brojač petlje,

< dg > - početna vrijednost brojača petlje,


< gg > - konačna vrijednost brojača petlje,
< korak > - vrijednost koja se dodaje brojaču petlje na kraju svake iteracije.
For petlja u programskom jeziku C ima širi smisao od navedene definicije
brojačkih petlji.

Format for-naredbe u C-u je: for (< izraz1 >; < izraz2 >; < izraz3 >)
< naredba >

< izraz1> - vrši inicijalizaciju promjenljivih koje se koriste u petlji(što može da bude
postavljanje početne vrijednosti brojača petlje ),

< izraz2> - predstavlja uslov na osnovu koga se odlučuje da li će tijelo petlje još
izvršavati ili se izvršavanje petlje prekida – petlja se izvršava dok vrijednost ovog
izraza različita od nule (uslov za izvršavanje tijela petlje može da bude dok brojač
petlje ne postigne svoju gornju granicu ),

< izraz3 > – definiše promjenu vrijednosti promjenljivih koje se koriste u petlji.

27
Navedena promjena se vrši nakon svake iteracije ( tu se može definisati kako se
mijenja vrijednost brojača petlje nakon svake iteracije).

Bilo koji od izraza može biti izostavljen, ali se znak ‘;’ mora pisati.
Primjer for petlje: #include < stdio.h >
main()
{
int i,n,k,S;
printf(“unesite koliko brojeva treba sumirati\n”);
scanf(“%d”,&n);
for ( i=0, S=0; i<n; i++ );
{
printf(“unesite sljedeci broj\n”);
scanf(“%d”,&k);
S+=k;
}
printf(“suma unesenih brojeva je %d\n”,S);
system(“pause”);
return 0;
}

6.1.2. While petlja

While petlja omogućava ponavljanje naredbe programa dok je definisan uslov zado-
voljen (tj. dok je vrijednost izraza različita od nule).

Ima iste osobine kao i for petlja i sve što se može uraditi preko for petlje može se i
preko while i obrnuto.

Oblik while petlje : while (< izraz >)


< naredba >

While-naredba služi za realizaciju iterativnih procesa (sumiranje beskonačnih redo-


va).

28
Slika 10. Dijagram While petlje
Izvor:https://svetinformatikeiprogramiranja.files.wordpress.com/2013/09/programski
jezikc.ppt

Primjer while petlje : #include <stdio.h.>


#include <stdlib.h.>
int main()
{
int i =1 ;
while(i<=20);
{
printf("%d\n",i);
i++;
}
system("pause");
return 0;
}

6.1.3. Do while petlja :

Do-while petlja je jako slična while-petlji. Jedina razlika je u tome što se uslov za
ponavljanje petlje u kodu nalazi iza njenog tijela tako da se naredba, koja predstavlja
tijelo petlje, mora izvršiti bar jednom.

Format odgovarajuće naredbe u programskom jeziku C je:


do
< naredba >
while (< izraz >);

29
Slika 11. Dijagram Do while petlje

Izvor:https://svetinformatikeiprogramiranja.files.wordpress.com/2013/09/programski
jezikc.ppt

Primjer do while petlje : #include <stdio.h>


#include <math.h>
main()
{
int n;
float x1,x2,a,eps,absvr;
printf(“unesite n, a i tacnost epsilon\n”);
scanf(“%d%f%e”,&n,&x,&eps);
x2=(a+n-1)/n;
do {
x1=x2;
x2=((n-1)*x1+a/pow(x1,n-1))/n;
absvr = x2-x1>0 ? x2-x1 : x1-x2;
} while( absvr > eps );
printf(“x=%g”,x);
system(“pause”);
return 0;
}

30
7. Polja u programskom jeziku C

Polja predstavljaju složenu strukturu podataka, sa elementima istog tipa.


Polja se mogu podjeliti na :
1. Jednodimenziona polja – ova polja imaju oblik <tip> <ime > [<veličina>];
,gdje je < ime > ime polja, < veličina > broj elemenata polja i < tip> tip
svakog pojedinačnog elementa polja (neki elementarni tip, tip pokazivača,
polja ili strukture).

Prvi element polja ima uvijek indeks 0, drugi indeks 1, …, poslednji


element ima indeks < veličina > - 1.

Primjer : int a[100],b[50];


float x[30];
double d[2000];

Jedan od načina da se pristupi elementima polja je korištenje indeksa


(tj. pozicije elementa u polju). Za pristup elementima polja pomoću indeksa koristi se
operator [ ].14

Opšti oblik izraza za pristup elementu polja je: < ime_polja >[< izraz >]

Primjer:
… a[5] …
… b[i] …
… x[5*j+7]

Pri definisanju jednodimenzionalnog polja, veličina polja može biti izostavljena u 3


slučaja:
 ako se u definiciji vrši i inicijalizacija polja;
 ako je polje fiktivni argument funkcije;
 ako polje ima klasu memorije extern.

2. Višedimenzionalna polja - svaka dimenzija ovog polja se piše unutar jednog


para uglastih zagrada. Definicija višedimenzionalnog polja u C-u:
< tip> < ime >[< vel1>][< vel2 >]…[< velN >];

Primjer : char sahtabla[8][8];

U slučaju dvodimenzionalnog polja, prva dimenzija predstavlja vrste,


a druga kolone dvodimenzionog polja (tj. matrice). Elementi višedimenzionalnih
polja se u memoriji smještaju kao jednodimenzionalna polja tako da se poslednji
indeks najbrže mjenja, zatim pretposlednji, … (“po vrstama”).
Kod definisanja višedimenzionalnih polja moguće je izostaviti samo veličinu prve
dimenzije.

14
Dennis M. Ritchie Brian W. Kernighan”The C Programming Language” , Prentice Hall New Jersy
1983

31
8. Funkcije u programskom jeziku C
Funkcija je programska cjelina koja uzima neke ulazne podatke, izvršava određen niz
naredbi i vrača rezultat svog izvršavanja pozivnom programu.15

Pomoču funkcija razbijamo složene programske zadače na niz jednostav-


nijih cjelina. Time postižemo veču jasnoču programa i olakšavamo buduće
modifikacije.

Svaka funkcija treba biti osmišljena tako da obavlja jednu dobro definiranu zadaču
te da korisnik funkcije ne mora poznavati detalje njene implementacije da bi ju koris-
tio.

Tada je funkciju moguče koristiti u različitim programima, kao što je to slučaj s


funkcijama iz standardne biblioteke.

Definisanje funkcije u programskom jeziku C ima sledeći format:


[< tip_rezultata >] < ime_funkcije >([< lista_parametara >])
[< definicije_parametara >]
{
<tijelo_funkcije>
}

gdje je:

< ime_funkcije > - simboličko ime koje u isto vrijeme predstavlja i adresu funkcije

< tijelo_funkcije > - blok naredbi (može biti i prazno)

< lista_parametara > - formalni parametri, rezervišu mjesta za podatke iz


pozivajućeg modula sa kojima će funkcija raditi nakon poziva.

< definicije_parametara > - definicija tipova fiktivnih argumenata funkcije,


na isti način kako se definišu tipovi bilo koje promjenljive.

< tip_rezultata > – određuje tip vrijednosti koju funkcija vraća. Ako je tip rezultata
(tip funkcije) izostavljen, prevodilac će povratnu vrijednost tretirati kao int.

Deklaracija funkcije omogućava poziv funkcije prije njenog definisanja i još se zove
prototip funkcije.Smisao deklaracije je da se saopšti prevodiocu da takva funkcija
postoji i da će njena definicija biti navedena negdje kasnije u izvornom kodu.

Deklaracije funkcije se dijele na :


1. eksplicitne (ako ih navodi programer)
2. implicitne (ako ih uvodi C prevodilac) deklaracije funkcija.

15
Despalatović Lj.” Programkse metode i apstrakcije” , Sveučilište u Splitu , Split

33
Ukoliko programer nije definisao, niti deklarisao funkciju prije njenog poziva,
C prevodilac je implicitno deklariše i dodeljuje joj tip int.

Jedna od najznačajnijih funkcija u programskom jeziku C je funkcija main.

Funkcija main svoj zadatak obavlja općenito povezivanjem drugih funkcija.

Tijelo funkcije main sadrži: definicije promjenljivih , konstanti i tipova koji se kor-
iste lokalno (unutar funkcije main) i skup izvršnih naredbi (naredbi kojima se vrši
obrada podataka).

Deklaracijom funkcije main int main (void) se uvodi ime funkcije , broj i tip
argumenata koje uzima i tip povratne vrijednosti.

Izvršne naredbe u C-u se dijele na:

1. elementarne naredbe

2. strukturne naredbe

Elementarne naredbe su naredbe kojima se vrši neka elementarna obrada podataka.


Dobijaju se tako što se na kraju jednog izraza doda znak “ ; “ i time se završava
svaka naredba u programu.

Primjer :
a+=b*5;
Max(a,b);
i++;
9. Zaključak

Razradom i istraživanjem mnogo sam informacija i iskustva stekao odnoseći se na


programski jezik C .

Postavljajući radnu hipotezu i kasnije braneći je utvrdio sam da je C programski jezik


zadržao svoj utjecaj i zastupljenost na polju programiranja i razvoja.

Održao je svoju ulogu u rješavanju problema gdje je važno efikasno upravljanje


resursima i brzo izvršavanja zadataka. C ima svoje mane i prednosti, jedina mana je
to što je relativno komplikovan i zahtjeva mnogo koda da bi se napisao program za
rješavanje datog problema za razliku od nekih drugi kao što su php i drugi, a njegova
prednost je ta što je on tako reči jezik nižeg nivoa i omogućava veliku kontrolu nad
procesorom i procesima.

34
Literatura

Knjige:

1. M. Jurak Programski jezik C

2. Dennis M. Ritchie Brian W. Kernighan”The C Programming Language” ,


Prentice Hall, New Jersy 1983

3. Despalatović Lj.” Programkse metode i apstrakcije” , Sveučilište u Splitu ,


Split

Tekstovi sa interneta:

1. https://sh.wikipedia.org/wiki/C_(programski_jezik)

2. https://hr.wikipedia.org/wiki/C_(programski_jezik)

3. https://www.mojwebdizajn.net/c-rijeseni-zadatci/c-programiranje-rijeseni-
zadatci-1.aspx

4. http://nasport.pmf.ni.ac.rs/materijali/2113/Skripta%20iz%20C-a.pdf

5. http://www.gimnazija-agmatosa-
dj.skole.hr/dokumenti?dm_document_id=332&dm_dnl=1

6. http://www.informatika.edu.rs/kursevi/c-programski-jezik/

7. http://www.gimnazijaub.rs/index.php/component/k2/item/download/52_2275
afcac46686ba8cca66ba4b2c6251

8. http://www.unidu.hr/datoteke/711izb/01-Uvod.pdf

9. http://www.pef.uns.ac.rs/index.php/oglasi/category/34-izborni-blok-ii-c-
jezik?download=208:programski-jezik-c

10. https://web.math.pmf.unizg.hr/~singer/Prog_Add/c.pdf

11. http://www.mikroknjiga.rs/Knjige/CALG/01_CALG.pdf

12. http://www.znanje.org/knjige/computer/c/v/

35

Das könnte Ihnen auch gefallen