Srpski, Školski C tutrial
Srpski, Školski C
tutrial
Autor: Nemanja Todić
Sadržaj
----------------------------------------------------------------------------------------------------------
Uvod
1. Brojevni sistemi
1.1 Decimalni brojevni sistem
1.2 Oktalni brojevni sistem
1.3 Binarni brojevni sistem
1.4 Hekasadekadni brojevni sistem
1.5 Konverzija iz decimalno u binarni zapis
2. Jezicki tipovi podataka
2.1 Promenljive i konstante
2.2 Pravila za dodeljivanja imena promeljivima
2.3 Decimalni tip – INT
2.4 Realni tip – FLOAT I DOUBLE
2.5 Kljucne reci SHORT i LONG
2.6 Znak – CHAR
3. Operatori
3.1 Izrazi i naredbe
3.2 Operatori u jeziku C
3.3 Gubitak preciznosti
3.4 Operatori inkrementiranja(++) i dekrementiranja(--)
3.5 Napomena
4. Naredbe. Struktura programa
4.1 Hello World, Osnovne stvari vezane za jezik C
4.2 Komentari
4.3 Naredba #include. Header fajlovi. Standardna biblioteka.
4.4 Osnovne stvari vezane za funkcije. Blok naredbi.
4.4.1 Petlja while
4.4.2 Operatori poredjenja
4.4.3 Petlja do while
4.4.4 For petlja
4.5 Naredbe grananja
4.5.1 Naredba grananja – if
4.5.2 Naredba grananja „switch“
4.5.3 Uslovni izraz
5. Funkcije
5.1 Funkcije
5.2 Funkcija Obim()
5.3 Opsezi vaznosti
5.4 Preopterecivanje funkcija
6. Osnove prikupljanja podataka
6.1 Napomena o razlici izmedju texta i znaka
6.2. Funkcija printf()
6.3 Funkcija scanf()
6.4 Zakljucak
7.0 Pokazivaci i Nizovi
7.1 Kako rade pokazivaci i adrese.
7.1.2 Pokazivaci i funkcije
7.2. Nizovi
7.3 Promenljive tipa char
7.4 Niz promenljivih tipa char

UVOD
Programski jezik C je konzolni sto ce reci da preko njega ne mozete( bez koriscenja nekih
„dodataka“) napraviti „prozolike“ aplikacije, no ovo ne treba da vas razocara u dogledno
vreme se mozete i time pozabaviti.
C je i strukturni jezik dakle koristi strukture kao primaran vid izvedenih tipova podataka. Ovaj
sistem je zastareo i jezici nove generacije su objektno orijentisani(OOP) no i takvim jezicima
strukture nisu nepoznate. Ne ocekujem da ako ste pocetnik ovo sada shvatite, shvaticete
polako kako budete napredovali....
Treba da znate da je svaki pocetak suvoparan i da je za ucenje bilo kog programskog jezika
potrebno dosta vremena truda i pomalo pameti. Ne daj te se obeshrabrii!
Pa da pocnemo.
1.0 Brojevni sistemi
Postoji nekoliko brojevnih sistema a „najpoznatiji“su: decimalni, oktalni, binarni i
hekasadekadni. Ono sto vi treba da znate je kako se iz jednog brojevnog sistema konvertuje
broj u drugi brojevni sistem.
1.1 Decimalni brojevni sistem
Decimalni BS je skup koji ima 10 cifara i to su sledece : 0,1,2,3,4,5,6,7,8,9.
Pravljenjem
razlicitih kombinacija mozete dobiti brojeve kao sto su -789, 0 , 1, 49, 32757 idr. Evo primera
kako se na drugaciji nacn moze predstaviti broj npr 385:
3 * 10
2
+ 8 * 10
1
+ 5 * 10
0
= 3 * 100 + 8 * 10 + 5*1 = 300 + 80 + 5 = 385 .
Provezbajte sa jos par brojeva.
1.2 Oktalni brojevni sistem
Oktalni BS je skup koji ima 8 cifara i to su : 0,1,2,3,4,5,6,7. Bitno je znati kako da brojeve
ovog sistema prevedete u decimalne brojeve. Evo primera: oktalno 142 je decimalno 98 :
|142|
8 =
1 * 8
2
+ 4 * 8
1
+ 2 * 8
0
= 1*64 + 4*8 + 2*1 = 64 + 32 + 2 = |98|
10
.
Poprilicno jednostavan sistem.
1.3 Binarni brojevni sistem
Binarni BS je skup koji ima 2 cifre i to su : 0, 1 , te ce binarni broj 101100 u decimalnom
zapisu biti:
|101100|
2
= 1*2
5
+ 0*2
4
+ 1*2
3
+ 1*2
2
+ 0*2
1
+ 0*2
0
= |44|
10
Vrlo slicno prethodnim primerima.
1.4 Hekasadekadni brojevni sistem
Ima cak 16 simbola : 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F. Bice vam potrebno da znate koje
vrednosti imaju navedena slova u decimalnom zapisu:
A = 10
B = 11
C = 12
D = 13
E = 14
F = 15
Primer:
|A2F|
16
= 10 * 16
2
+ 2 * 16
1
+ 15 * 16
0
= 2560 + 32 + 15 = |2607|
10
Ovo je malo komplikovanije ali bitno je uvideti da se slova zamenjuju odgovarajucim
vrednostima.
1.5 Konverzija iz decimalno u binarni zapis
Bicete u prilici da vrsite ovakvu konverziju. Obajsnicu na sledecem primeru: Broj 44 prevesti
u binarni zapis. Resenje:
|44|
10
=
44/2
22/2
11/2
5/2
2/2
1/2
0 0 1 1 0 1
Zadati broj 44 delimo sa dva, ostatak zapisujemo ispod a rezultat deljena pisemo levo i taj
rezultat delimo sa dva i tako dalje dok god se ne dobije nula kao kolicnik(ne kao ostatak).
Sada obratite paznju na dobijeni od ostataka i procitaj te ga odpozadi:
101100. Dosli smo do resenja! Pokusajete kao proveru da uradite konvertovanje ovog
binarnog broja u decimalni.
2.0 Jezicki tipovi podataka
Postoji nekoliko „ugradjenih“ tipova podataka u jeziku C medjutim ostavljena je mogucnost
da se na vise nacina naprave novi tipovi podataka, njih konstruise programer. Izvedeni tipovi
su krajnje korisni ali isto tako i malo kompleksniji za osmisljavanje pa ce mo se za sada
zadrzati na nekim osnovnim tipovima podataka.
2.1 Promenljive i konstante
Recimo da zelite da napisete program koji ce da sabere dva broja koje ce korisnik uneti.
Proces rada programa bi isao ovako: korisnik unosi prvi broj, program taj broj sacuva, zatim
korisnik unosi drugi broj i program taj broj takodje sacuva. Postavlja se pitanje gde taj broj
sacuvati? Odgovor je u Random Access Memory( RAM) odakle cemo broj po potrebi
iscitavati. Ovo se realizuje tako sto cemo „napraviti“ promenljivu( takodje se nazivaju i
variable) koja ce zauzeti odgovarajuce parce memorije, a velicina tog parceta zavisi od tipa
promenljive. Oko tipova podataka i njihovim karakteristikama( a jedna od njih je i kolicina
zauzete memorije) cemo se pozabaviti kasnije.
Bitno je da uvidite da se u promenljivu mogu upisivati i iscitavati podaci sve dok ta
promenljiva postoji u memoriji. Vratimo se zadatku, dakle ucitali smo dva broja koja valja
sabrati. Sledece, treba nam mesto u memoriji racunara u kojem ce mo snimiti rezultat
sabiranja, dakle treba nam jos jedna promenljiva. Njoj cemo dodeliti vrednost zbira prve dve
promenljive koje smo ucitali. To je to. Trebalo bi da vam je jasno sta su promenljive i cemu
sluze. Sada cemo objasniti i kako se koriste.
Dve su bitne stvari kod kreiranja( pravilnije receno „instancovanja“) promenljivih: njihova
deklaracija i inicijalizacija. Recimo da zelimo da napravimo promenljivu u koju cemo smestiti
prvi broj iz gore navedenog zadatka, to cemo uraditi ovako:
int a;
Ovim smo deklarisali promenljivu koja ima tip „int“ (sto ce reci da moze cuvati samo cele
brojeve, ovim cemo se kasnije pozabaviti) i naglasili da se ona zove „a“. Pogledajmo sledeci
primer:
int a = 157;
dodali smo „ = 157 “. To je inicijalizacija iliti dodavanje vrednosti promenljivoj u isto vreme
kada je i deklarisemo( napravimo). Ukoliko neinicializujemo promenljivu ona dobija neku
bezveznu vrednost, no u svim drugim pogledima ponasanje inicijalizovane i neinicijalizovane

Operatore poredjenja ovde necemo objasnjavati, to cemo uraditi kasnije, priliko
objasnjavanja „grananja koda“.
3.1 Izrazi i naredbe
Ranije smo naveli primer u kojem smo sabirali dva broja : a + b. Rezultat smo smestali u
promenljivu rez, ako od ovih podataka formiramo izraz u jeziku C dobija ovo:
rez = a + b;
Izvedimo konstataciju da je izraz kombinacija operanada i operatora. U navedenom primeru
imamo 3 operanda(rez, a, b) i dva operatora( =, +). Takodje postoje i dva izraza, prvi je
sabiranje promenljive a i b, drugi je dodeljivanje te vrednosti promenljivoj rez. Sve ovo
zajedno cini jednu naredbu. Naredba je dakle skup izraza( ciji broj moze biti ne ograniceno
veliki ali takodje moze biti i 0- prazna naredba) koji se obavezno okoncava znakom „tacka-
zarez“( ; ).
3.2 Operatori u jeziku C
Vazan faktor je svakako prvenstvo operatora, sto znaci da ako napisete naredbu :
rez = a - b * 2
prvo ce se izvrsiti izraz b * 2 pa ce se od a oduzeti rezultat mnozenja i na kraju se ta razlika
dodeljuje promenljivoj rez. Uvidjamo da operator mnozenja ima najvece prvenstvo, zatim
operator oduzimanja i da najmanje prvenstvo ima operator dodele vrednosti. Sledi tabela
prvenstva operatora.
--------------------------------------------------------------------
OPERATOR
|
OPIS
|
--------------------------------------------------------------------
()
| Poziv funkcije
|
[]
| Index niza
|
->
| Pokazivac na strukturu
|
.
| Clan strukture
|
--------------------------------------------------------------------
-
| Unarni minus
|
+
| Unarni plus
|
++
| Inkrementiranje
|
--
| Dekrementiranje
|
!
| Logicka negacija
|
~
| Komplemant nad bitovima |
*
| Posredan pristup
|
&
| Adresa-od
|
sizeof
| Velicina objekta
|
(type cast)
| Eksplicitna konverzija
|
--------------------------------------------------------------------
*
| Mnozenje
|
/
| Deljenja
|
%
| Ostatak( moduo)
|
--------------------------------------------------------------------
+
| Sabiranje
|
-
| Oduzimanje
|
--------------------------------------------------------------------
<<
| Pomeranje bitova ulevo
|
>>
| Pomeranje bitova udesno |
--------------------------------------------------------------------
<
| Manje od
|
<=
| Manje ili jednako
|
>
| Vece od
|
Ovaj materijal je namenjen za učenje i pripremu, ne za predaju.
Slični dokumenti