You are on page 1of 34

ETŠ "Nikola Tesla" Niš, Milena Krstić

PROGRAMSKI JEZIK C
TIPOVI PODATAKA, PROMENLJIVE I
KONSTANTE
ETŠ "Nikola Tesla" Niš, Milena Krstić

C jezik
 Programski jezik C je proceduralni programski jezik, koji je 1972. godine razvio
Denis Riči (Dennis Ritchie, Bell Telephone Laboratories) kao jezik za učenje
programiranja sistemskog softvera.

 Poseduje strukturirane tipove podataka i upravljačke strukture što je karakteristika


viših programskih jezika.

 Sa druge strane podržava manipulaciju bitovima, korišćenje procesorskih registara,


pristup podacima pomoću adrese i operatore orijentisane ka hardveru računara što su
karakteristike nižih programskih jezika (tj. simboličkih mašinskih jezika)

 Tesno je povezan sa operativnim sistemom UNIX. Sam OS UNIX je većim delom


pisan na jeziku C.
ETŠ "Nikola Tesla" Niš, Milena Krstić

Struktura programskih jezika

 Poput prirodnih i programski jezici se odlikuju svojom azbukom i gramatikom

 Svaki jezik ima usvojeni skup sintaksnih pravila za pisanje naredbi jezika (npr. iza
naredbe se obavezno stavlja ;)

 SINTAKSA jezika predstavlja skup pravila kojima se definiše način formiranja


pravilnih jezičkih konstrukcija.

 Pod SEMANTIKOM jezika podrazumeva se značenje dodeljeno usvojenim


sintaksnim strukturama
ETŠ "Nikola Tesla" Niš, Milena Krstić

Struktura programskih jezika

 Za opis sintaksnih pravila koriste se dva načina:


cifra
0
 sintaksni dijagrami
1
..........
.
9

 Bekusova normalna forma <cifra>::=0|1|2|3|4|5|6|7|8|9


ETŠ "Nikola Tesla" Niš, Milena Krstić

Azbuka jezika C
 Azbuka programskog jezika je skup znakova od kojih se grade sve sintaksne
strukture jezika. Azbuku čine:

 Slova: ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz

 Cifre: 0123456789

 Specijalni znaci: +-*/=_&%#!?|<>.,:;’“\~^[]{}()

 Neštampajući (beli) znaci:


 razmak ili space (sp),
 novi red (new line= line feed + carrage return, nl=lf+cr),
 horizontalni tabulator (ht),
 vertikalni tabulator (vt),
 nova stranica (ff)
ETŠ "Nikola Tesla" Niš, Milena Krstić

Ključne reči

 Svaki programski jezik koristi vlastiti, ograničeni skup reči formiranih nad
azbukom jezika, a koje imaju rezervisano i nepromenljivo značenje.

 Takve ćemo reči nazivati ključnim ili rezervisanim riječima.

 auto, break, case, char, const, continue, default, do, double, else, enum,
extern, float, for, goto, if, int, long, register, return, short, signed, sizeof,
static, struct, switch, typedef, union, unsigned, void, volatile, while
ETŠ "Nikola Tesla" Niš, Milena Krstić

Identifikatori (imena)
 Koriste se za označavanje osnovnih objekata jezika – konstanti, promenljivih,
korisničkih tipova podataka, korisničkih funkcija i labela (oznake naredbi koje su
odredišta grananja (skokova)

 Identifikator je proizvoljan niz znakova (slova, cifara i znaka _) koji ne sme da


počinje cifrom

Korektno Nekorektno
T_33 T 33 ili T-33
PrvaTacka ili Tacka1 ili Prva_Tacka 1.Tacka ili Prva Tacka
_prosek (može, ali nije preporučljivo) #prosek

 Nije preporučljivo da identifikatori počinju znakom _ jer obično imena sistemskih


bibliotečkih funkcija počinju tim znakom

 C RAZLIKUJE VELIKA I MALA SLOVA – CaseSensitive (tj. Pera_Peric nije isto


što i pera_peric; xA nije isto što i xa)
ETŠ "Nikola Tesla" Niš, Milena Krstić

Tipovi podataka

 Određivanjem kog je tipa podataka promenljiva zadaje se:

 Skup mogućih vrednosti promenljive

 Skup operacija koje se mogu izvršiti nad tom promenljivom

 Način registrovanja promenljive u računaru


ETŠ "Nikola Tesla" Niš, Milena Krstić

Tipovi podataka

SKALARNI STRUKTURIRANI
Pokazivački - pointer
(prosti) (složeni)

Nizovi – array
Struktura – structure
Celobrojni – char, int Unija – union
Realni – float, double
Nabrojivi – enum
Prazan tip - void
ETŠ "Nikola Tesla" Niš, Milena Krstić

Celobrojni tipovi
 Celobrojni tipovi su char i int

 Opseg vrednosti celobrojnog tipa (int) se smanjuje korišćenjem kvalifikatora short i


povećava kvalifikatorom long

 Ako je broj bitova za pamćenje celobrojnog označenog tipa n opseg vrednosti je od -


2n-1 do 2n-1-1

 U deklaracijama short int i long int može se izostaviti int i piše se samo short ili
long

 Kvalifikator unsigned ispred oznake celobrojnog tipa označava samo pozitivne


vrednosti

 Ako je broj bitova za pamćenje celobrojnog neoznačenog tipa n opseg vrednosti je


od 0 do 2n-1
ETŠ "Nikola Tesla" Niš, Milena Krstić

Celobrojni tipovi
Tip Dužina (bita) Opseg vrednosti
signed char 8 -128 do 127
char 8 -128 do 127
unsigned char 8 0 do 255
short int 16 -32768 do 32767
unsigned short int 16 0 do 65535
16 -32768 do 32767
int
32 -2 147 483 648 do 2 147 483 647
16 0 do 65535
unsigned int
32 0 do 4 294 967 295
long int 32 -2 147 483 648 do 2 147 483 647
unsigned long int 32 0 do 4 294 967 295
ETŠ "Nikola Tesla" Niš, Milena Krstić

Zapis celobrojne konstante


 Celobrojne konstante mogu da se pišu u dekadnom, oktalnom ili heksadecimalnom
brojnom sistemu

 Kod dekadne konstante prvi znak ne može biti nula (0)

 Oktalne konstante počinju nulom (0)

 Heksadecimalne konstante počinju znakovima 0x ili 0X

 Sufiks u ili U označava neoznačenu (samo pozitivnu) celobrojnu konstantu tipa


unsigned int ili unsigned long int zavisno od veličine broja

 Sufiks l ili L označava celobrojnu konstantu tipa long int ili unsigned long int
(nezavisno od veličine broja)
ETŠ "Nikola Tesla" Niš, Milena Krstić

Zapis celobrojne konstante


 Ispravne celobrojne konstante:

947 0123 0xf7a5


-3586 0177777u 0X12FFFu
65000u 01234567L 0xabcdefL
123L 07777777UL 0XF1A54ECuL
-758L
123456789ul
ETŠ "Nikola Tesla" Niš, Milena Krstić

Realni tipovi
 Realni tipovi su:

 float – realni brojevi u jednostrukoj tačnosti


 pamti se na 32 bita
 tačnost je do 7 decimalnih cifara
 opseg vrednosti tipa float je približno 10  38

 double – realni brojevi dvostruke tačnosti


 pamti se na 64 bita
 tačnost je do 16 decimalnih cifara
 opseg vrednosti tipa double je približno 10  308
ETŠ "Nikola Tesla" Niš, Milena Krstić

Zapis realne konstante


 Realne konstante pišu se samo u dekadnom brojnom sistemu

 Za brojeve sa vrlo velikom ili vrlo malom apsolutnom vrednošću koristi se


eksponencijalna notacija mEe (m*10e)

 Mantisa mora da sadrži bar jednu cifru

 Obavezno mora da u sastavu realne konstante postoji znak . , e ili E da bi se


razlikovala od celobrojne konstante

 Realna konstanta jednostruke tačnosti obeležava se sufiksom f ili F

 Realna konstanta višestruke tačnosti obeležava se sufiksom l ili L


ETŠ "Nikola Tesla" Niš, Milena Krstić

Zapis realne konstante

 PAŽNJA:

Konstanta u zapisu 145 predstavlja CELOBROJNU vrednost

Konstanta u zapisu 145. predstavlja REALNI broj


ETŠ "Nikola Tesla" Niš, Milena Krstić

Zapis realne konstante


 Ispravne realne konstante:

1.23 1e5 532.e-2L


-125. 123.456E-2 0.12345L
.847 2.0E+6F 345.785f
ETŠ "Nikola Tesla" Niš, Milena Krstić

Zapis realne konstante


 Primeri:
Prevedi realni broj iz pozicionog u eksponencijalni oblik i obrnuto:

0.00006 = ?6.0E-05 3E-03 3*10


= ? -03=0.003
-123.45 = ?-1.2345E02 0.1E050.1*10
= ? 5=10000.0
-0.012 = ?-1.2E-02 1.0E-06 1.0*10
= ? -6=0.000001
4000000.0 = ?4E+06 0.2E040.2*10
= ? 4=2000.0
ETŠ "Nikola Tesla" Niš, Milena Krstić

Znakovni tip
 Za predstavljanje znakova koristi se ASCII (ISO7) kod u kome je svaki znak
kodiran sa 7 bitova

 ASCII tablica ima ukupno 27=128 znakova, od kojih su 96 vidljivi znaci


(štampajući), a 32 znaka su nevidljivi (negrafički) znaci

 Svakom znaku u tablici dodeljen je ceo broj koji prestavlja poziciju tog znaka u
tablici (npr. A ima vrednost 65, B – 66,..., a – 97, b – 98, ..., 0 – 48, 1 – 49, ...)

 Znakovi se mogu porediti poređenjem njihovih rednih brojeva: A<B, A<a

 Znakovi se u memoriji pamte kao celobrojni tip char, tj. kao odgovarajući broj na
dužini od 8 bita.
ETŠ "Nikola Tesla" Niš, Milena Krstić

Zapis znakovne konstante


 Znakovna konstanta je ceo broj čija je vrednost jednaka kodu navedenog znaka

 Znakovna konstanta se piše tako što se željeni znak stavi između para apostrofa

 Znak može da bude slovo, cifra, specijalni znak ili znak za razmak (npr. ‘A’, ‘a’,
‘5’, ‘.’, ‘~’, ‘[‘ ...)

 Specijalni znaci obrnuta kosa crta, navodnik, apostrof i upitnik zadaju se iza
obrnute kose crte – ‘\\’ ‘\”’ ‘\’’ ‘\?’

 Znak se može predstaviti i svojim oktalnim ili heksa kodom:

 Oktalno tako što se iza \ navede odgovarajući niz od tri oktalne cifre (npr. ‘\013’
‘\177’)

 Heksadecimalno tako što se iza \x ili \X navede niz od 2 heksadecimalne cifre


(npr. ‘\x7F’ ‘\X41’)
ETŠ "Nikola Tesla" Niš, Milena Krstić

Zapis znakovne konstante


 Neki češće korišćeni upravljački znakovi se osim svojim oktalnim ili heksa kodom
mogu predstaviti rezervisanim simboličkim oznakama
 Ovi znaci se nazivaju prelazni ili escape znaci

Znak Značenje Oznaka


\a davanje zvučnog signala bel
\b vraćanje za jedno mesto unazad backspace - bs
\f nova stranica form feed - ff
\n novi red new line - nl
\r vraćanje na početak tekućeg reda carrage return - cr
\t horizontalni tabulator ht
\v vertikalni tabulator vt
\ nastavak linije u novom redu (kada
je \ poslednji znak u redu)
ETŠ "Nikola Tesla" Niš, Milena Krstić

Zapis znakovne konstante


 PAŽNJA:

Konstanta 5 predstavlja CELOBROJNU vrednost

Konstanta 5.0 predstavlja REALNU vrednost

Konstanta ‘5’ predstavlja ZNAKOVNU konstantu koja u memoriji ima


vrednost 53 (redni broj znaka ‘5’ u ASCII tablici)
ETŠ "Nikola Tesla" Niš, Milena Krstić

Zapis znakovne konstante


 PAŽNJA:

+ je aritmetički operator

‘+’ je ZNAKOVNA konstanta


ETŠ "Nikola Tesla" Niš, Milena Krstić

Konstantni niz znakova

 Sažeti način zapisivanja znakovnih konstanti je da se veći broj znakova


navede između para navodnika (“)

 “Zdravo!” “Unesite dva broja: \n” “Dobar dan.”

 Za svaki znak između navoda se generiše po jedan ceo broj tipa char i na
kraju još jedan znak sa vrednošću nula (\0) da označi kraj niza:

“Zdravo!” se prevodi u ‘Z’ ’d’ ’r’ ’a’ ’v’ ’o’ ’ \0’


ETŠ "Nikola Tesla" Niš, Milena Krstić

Konstantni niz znakova

 PAŽNJA:

Konstanta u zapisu ‘q’ predstavlja ZNAKOVNU konstantu, tj. ceo broj


čija je vrednost jednaka kodu slova q

“q” predstavlja ZNAKOVNI NIZ koji se prevodi u dva znaka ‘q’ ‘\0’
ETŠ "Nikola Tesla" Niš, Milena Krstić

Logički podaci
 U nekim programskim jezicima postoji kao jedan od osnovnih tipova i logički tip
podataka – Logical ili Boolean, a promenljive ovog tipa mogu imati jednu od dve
logičke vrednosti TRUE (tačno) ili FALSE (netačno)

 U jeziku C ne postoji poseban logički tip

 Za predstavljanje logičkih vrednosti koriste se celobrojni podaci tipa int, s tim da


se vrednost 0 tumači kao FALSE, a svaka vrednost različita od nule kao TRUE

 Logički operatori i funkcije posle izvršenja logičke operacije vraćaju celobrojnu


vrednost 1 kao zamenu za TRUE i 0 kao zamenu za FALSE
ETŠ "Nikola Tesla" Niš, Milena Krstić

Promenljive

 Promenljiva je prostor u operativnoj memoriji kome je dodeljeno ime.

 Vrednost promenljive može se menjati u toku izvršenja programa.

 Svaka nova vrednost upisana u promenljivu potire prethodnu vrednost.

 Dodela vrednosti vrši se operatorom =

 Promenljivoj sa leve strane znaka dodele dodeljuje vrednost izraza sa desne


strane (npr. A=15; x=x+1; p=a*b)
ETŠ "Nikola Tesla" Niš, Milena Krstić

Promenljive

 Sve vrednosti moraju pripadati nekom od tipova podataka definisanih u jeziku

 Svaka promenljiva koja se koristi u programu mora se prethodno deklarisati

 Deklaracija se zadaje u obliku

tip_promenljivih lista_indentifikatora;

 Deklaracijom se rezerviše memorijski prostor za promenljivu,

 Pri samoj deklaraciji može se izvršiti inicijalizacija, tj. može se zadati početna
vrednost promenljive
ETŠ "Nikola Tesla" Niš, Milena Krstić

Promenljive
,
const
definicija oznaka naziv početna
tipa promenljive
= vrednost
;
promenljive
volatile

 Primeri deklaracije i inicijalizacije promenljivih:

int pocetak, kraj, korak;

char c, tab=‘\t’;

float eps=1.0e-5;

double e=2.71828182845905;
ETŠ "Nikola Tesla" Niš, Milena Krstić

Nepostojane promenljive

 Oznaka volatile označava da promenljiva može da promeni svoju vrednost


mimo kontrole programa.

 Npr. promenljiva predstavlja sadržaj registra pridruženog tastaturi. Sadržaj


tog registra se menja u momentu pritiska na neki taster potpuno nezavisno od
rada procesora.
ETŠ "Nikola Tesla" Niš, Milena Krstić

Konstantne promenljive

 Oznaka const ispred oznake tipa označava da promenljiva neće menjati svoju
vrednost u toku programa (bez obzira na const vrednost ovakve promenljive se
ne može koristiti tamo gde se striktno zahteva korišćenje konstante)

 const int max=100;

 U slučaju korišćenja prefiksa const obavezno mora da se dodeli početna


vrednost svim promenljivama u naredbi

 Ovakva konstanta se zove KONSTANTNA PROMENLJIVA


ETŠ "Nikola Tesla" Niš, Milena Krstić

Simboličke konstante
 Definišu se naredbom #define

identifikator vrednost
#define
konstante konstante

 Naredba #define mora da se piše u zasebnom redu i jednom naredbom se


definiše samo jedna simbolička konstanta

 Identifikator konstante se obično piše velikim slovima

 Tip simboličke konstante određen je tipom konstante koja se navodi kao


vrednost

 Vrednost konstante može biti ceo broj, realan broj, znakovna konstanta ili
konstantni niz znakova
ETŠ "Nikola Tesla" Niš, Milena Krstić

Simboličke konstante

 Primeri definisanja simboličkih konstanti:

 #define MIN 0

 #define PI 3.1415

 #define BELL ‘\007’


!!!Kako drugačije možemo definisati ovu konstantu
#define BELL ‘\a’
korišćenjem escape znaka?
 #define PORUKA “Pozdrav svima!”
ETŠ "Nikola Tesla" Niš, Milena Krstić

Zaključak

 Podaci čija je vrednost unapred zadata i ne može se menjati u toku izvršenja


programa zovu se KONSTANTE

 Konstante mogu biti:

 konstantne promenljive const float eps=1.0E-05

 simboličke konstante. #define eps 1.0E-05

Smatra se da simboličke konstante (za razliku od konstantnih promenljivih) ne


zauzimaju prostor u memoriji računara već se ugrađuju neposredno u naredbe
programa.

You might also like