Professional Documents
Culture Documents
PJiSP E111 15-16-3
PJiSP E111 15-16-3
podataka
3
Identifikatori
Imena:
promenljivih,
funkcija,
makroa,
struktura,
konstanti,
drugi objekti definisani u C prog jeziku.
Pravila za izraavanja identifikatora
Identifikator se sastoji od:
Slova iz osnovnog skupa znakova, uz razlikovanje malih i
velikih slova.
Donje crte _.
Dekadne cifre, prvi znak identifikatora ne sme biti cifra.
Maksimalan broj karaktera u identifikatoru je po
standardu 31, ali u mnogim prevodiocima duina nije
ograniena. Prevodilac zapravo radi sa prvih n
znaajnih znakova a ostale zanemaruje.
Unapred definisan identifikator
main Imenuje funkciju od koje poinje izvravanje
programa.
__func__ (po dve donje crte bez razmaka)
Slui za pristupanje stringu koji sadri ime
funkcije.
Upotreba prilikom obrade izuzetaka (z2.c)
Prostori imena identifikatora
Imena labela (z3.c)
Tagovi (strukture, unije, nabrojani tipovi)
Imena lanova unija i struktura.
Ostali identifikatori
Oblasti vaenja identifikatora
file scope (oblast vaenja fajl)
block scope (oblast vaenja blok)
function prototype scope (oblast vaenja prototip)
function scope (oblast vaenja funkcija) (z4.c)
Identifikator se moe ponovo upotrebiti u oblasti
vaenja, koja je ugnjedena u odnosu na njegovu
izvornu oblast vaenja. (z5.c)
Mnemoniki identifikatori
Izaberite identifikatore koji su mnemoniki
kako bi program bio laki za itanje, vama i
drugima.
Uporedi:
void fun1(int arg1, int arg2, float arg3)
void crtajKrug(int x, int y, float poluprecnik)
Neka su identifikatori samoopisujui.
Promenljive
Promenljiva je imenovani objekat koji zauzima
memorijski prostor odreen tipom.
Ime promenljive je identifikator.
Promenljiva pre koritenja treba biti
deklarisana.
Tipologija
Osnovni tipovi (aritmetiki tipovi)(skalarni tipovi)
celobrojni
realni i kompleksni
Nabrojivi tipovi (aritmetiki tipovi)
Tip void
Izvedeni tipovi
pokazivai (skalarni tipovi)
nizovi (agregati)
strukture (agregati)
unije
funkcije
Oznaeni celobrojni tipovi
signed char
int (signed, signed int)
short (short int, signed short,
signed short int)
long (long int,signed long, signed
long int)
long long (long long int, signed
long long, signed long long int)
Neoznaeni celobrojni tipovi
_Bool (bool)
unsigned char
unsigned int (unsigned)
unsigned short (unsigned short int)
unsigned long (unsigned long int)
unsigned long long
Uobiajene veliine pojedinih tipova i
opsezi
Operator sizeof()
datoteka limits.h
makroi INT_MIN, INT_MAX,
UINT_MAX...
Tipovi u formatu sa pokretnim
zarezom
float (4B) prciznost 6 cifara
double (8B) prciznost 15 cifara
long double (10B) prciznost 19 cifara
Kompleksni brojevi
float _Complex
double _Complex
long double _Complex
complex.h
complex sinonom za _Complex
makro I je imaginarna jedinica (z6.c)
Nabrojivi tipovi
enum [identifikator]{lista
vrednosti};
promenljive
+ operatori izrazi
konstante
Svaki izraz ima
operandi tip i vrednost.
26
Naredba
Osnovna naredba je izraz iza koga sledi znak ";"
Imamo vie vrsta naredbi:
Oznaena naredba
Sloena naredba (blok)
Naredba izbora
Izraz
Naredba ponavljanja
Naredba skoka
Operatori
Dodele
Aritmetiki
Operator sizeof()
Operatori poreenja
Logiki
Operatori nad bitima
Inkrementacija i dekrementacija
Pomeranje
Adresa -od i posredni pristup
Operatori
29
Prioritet i asocijativnost operatora
Unarni operatori imaju vii prioritet od binarnih.
Aritmetiki operatori su vieg prioriteta od
relacionih, a ovi vieg od logikih.
Operatori dodele su najnieg prioriteta.
Ako dva operatora imaju isti prioritet, onda se u obzir
uzima asocijativnost, koja moe biti s leva na desno,
ili s desna na levo.
Prioritet operatora se moe promeniti korienjem
zagrada ().
30
Deljenje - konverzije
Kako izbei celobrojno deljenje
int a,b;
float c;
a = 5;
b = 2;
c = a/b; /* Celobrojno deljenje, c=2*/
c = (1.0*a)/b; /*Implicitna konverzija: 1.0*a je realan
broj pa prilikom deljenja sa b dobija se realan rezultat c=2.5*/
c = (0.0+a)/b; /* Implicitna konverzija: (0.0+a) je realan broj pa prilikom
deljenja sa b dobija se
realan rezultat c=2.5*/
c = (float)a/(float)b; /* Eksplicitna konverzija*/
31
Operatori sa bonim efektima
Pojava da se prilikom izraunavanja nekog
izraza menja vrednost neke promenljive naziva
se boni efekat (eng. side effect).
Operatori koji imaju boni efekat su operatori
dodele i operatori uveanja i umanjenja.
Naredba dodele se u C-u predstavlja izrazom
dodele, a njeno izvravanje se zasniva na
bonim efektima operatora dodele.
32
Operatori dodele =
Levi operand ovog operatora je leva vrednost (ime
promenljive). Desni operand je proizvoljni izraz.
Najpre se izraunava izraz na desnoj strani. Njegova
vrednost se zatim po potrebi konvertuje u tip
promenljive na levoj strani. Nakon toga se dobijena
vrednost upisuje u memorijsku lokaciju koja je
rezervisana za uvanje te promenljive.
33
Operatori umanjenja i uveanja
Unarni operatori ++ i -- nazivaju se operatori uveanja
(inkrementacije) i umanjenja (dekrementacije) respektivno.
Mogu biti prefiksni i sufiksni.
U oba sluaja vri se uveanje promenljive za 1 ali izraz ++n
uveava promenljivu n pre nego to se njena vrednost koristi,
dok n++ uveava n nakon to se njena vrednost koristi. Tako
se x=++n; razlikuje od x=n++;.
Slino za operator --, s tim to je u pitanju umanjenje za jedan.
(z11.c)
34