You are on page 1of 40

OSNOVE

PROGRAMIRANJA
mr.sci. Goran Madarevi dipl.ing.el.
Prosti Cijelobrojni - int, short, long, char
podataka
Tipovi
(fundamentalni)
Realni - float, double, long double

Sloeni
Strukture
(struktuirani)

Tipovi podataka i
operatori
Aritmetriki + , - , * , /, %

Binarni
Dodijeljivanje =, +=, -=, *=, /=, %=
Operatori

Relacioni >, <, >=, <=


Logiki !, &&, II
Jednakostni ==, !=
S bitima &, I, ~, ^, >>, <<
++

Unarni
sizeof()
--
cast()
Brojevni sistemi

Binarni Sastoji se od cifara 1 i 0. Svaka jedinica ili nula


se naziva bit (binary digit). 8 bita ini jedan byte.
Raunari u stvari prevode sebi sve komande u binarni
brojni sistem jer jedino to razumiju (mainski kod).
Oktalni Sastoji se od cifara 0-7. U C jeziku da bi
predstavili oktalni broj na izlazu koristi se formater %o.
Inae da bi se razlikovali od decimalnih brojeva ispred
njih se pie 0, npr. 073.
Decimalni Sastoji se od cifara 0-9.Koristimo ga u
svakodnevnom ivotu.
Heksadecimalni Sastoji se od cifara 0-9 i slova A-F. U C
jeziku da bi predstavili heksadecimalni broj na izlazu
koristi se formater %x. Da bi se razlikovali od oktalnih i
decimalnih brojeva, ispred njih se pie 0x, npr. 0xA3
Brojevni sistemi pretvaranje

Binarni broj 10011100 moemo preraunati u ostale sisteme na sljedei nain:


U dekadni Uzmemo najmanje znaajan bit (prvi s desne strane i kreemo se prema
lijevoj strane) i poto je baza (broj cifara) 2 piemo sljedee:
0*20 + 0*21 + 1*22 + 1*23 + 1*24 + 0*25 + 0*26 + 1*27 =
0*1 + 0*2 + 1*4 + 1*8 + 1*16 + 0*32 + 0*64 + 1*128 =
0 + 0 + 4 + 8 + 16 + 0 +0 + 128 = 156
U oktalni Svaki oktalni broj se moe napisati sa 3 binarne cifre; Podijelimo binarni broj
krenuvi od najmanje znaajnog bita na po 3 cifre a tamo gdje fali cifra dodamo ispred
nule. Tako da bi ovaj broj izgledao:
010 011 100 =
0*22+1*21+0*20 0*22+1*21+1*20 1*22+0*21+0*20 =
0*4 +1*2 +0*1 0*4 +1*2 +1*1 1*4 +0*2 +0*1 =
2 3 4 = 0234
U heksadecimalni Isti postupak kao u oktalnom samo je razlika u tome to binarni broj
dijelimo po 4 binarne cifre (jer se sa 4 binarne cifre moe predstaviti jedna
heksadecimalna) :
1001 1100 =
1*23+0*22+ 0*21 + 1*20 1*23+1*22+ 0*21 + 0*20 =
8 +0 + 0 + 1 8+4 +0 + 0 =
9 A =0x9C
Pretvaranje iz ostalih sistema se najlake radi tako da se prvo pretvori broj u binarni pa
onda u koji sistem elite
Tipovi podataka
Podaci predmet obrade u programima, mogu se predstaviti promou
vrijednosti ili identifikatora
Konstante predstavljene pomou vrijednosti, ne mijenjaju svoju
vrijednost u toku izvravanja programa i ne zauzimaju prostor u
memoriji raunara
Simbolike konstante konstante vrijednosti predstavljene
identifikatorima
Podaci predstavljeni pomou identifikatora smjetaju se u memoriju
raunara. Vrijednost podatka se smjeta u taj prostor i njima mogu da
se promjene vrijednosti u toku izvravanja programa (promjenjivi
podaci)
Nepostojani podaci (volatile) - posebna vrsta promjenjivih podataka ije
vrijednosti mogu da se promjene u sluajnim trenucima mimo kontrole
programa kao npr. volatile short ekran = 0x800, tastatura;
Nepromjenjivi podaci vrijednosti im se ne mogu promjeniti u toku
izvravanja programa kao npr. const double e= 2.71828182845905;
Prosti podaci ne mogu se rastaviti na manje elemente.
Sloeni podaci (strukture) sastoje se od nekoliko elemenata koji
mogu nezavisno da se obrauju. Elementi mogu da budu prosti a mogu
da budu i sloeni.
Definisanje podataka

Svaki podatak koji se koristi u programu mora


prethodno da se definie. Tako se odreuje tip
podatka, dodjeljuje se prostor potrebne
veliine u memoriji za smjetanje vrijednosti
podatka i dodjeljuje se poetna vrijednost
podatku
opis_tipa naziv_podatka = poetna vrijednost, naziv_podatka2;
Tipovi podataka

C poznaje samo numerike tipove podataka


U C jeziku postoje prosti (fundamentalni) tipovi
podataka
Cijelobrojni tipovi podataka
Realni tipovi podataka
Karakteri - znakovi (oni su u stvari posebna podvrsta
cijelobrojnih tipova podataka)
Takoe postoje sloeni (struktuirani) tipovi
podataka
Strukture ili sloeni tipovi podataka mogu da se sastoje
od vie razliitih prostih tipova podataka
Pored vie prostih tipova podataka, strukture takoe
mogu da se sastoje i od drugih struktura
Cijelobrojni tipovi podataka
C poznaje 3 vrste cijelih brojeva:
int (skraenica od eng. integer cjelobrojni) osnovni cijelobrojni tip i
predstavlja cijelobrojni podatak koji po veliini (prostoru koji zauzima u
memoriji) najvie odgovara hardveru datog raunara (obino jedna mainska
rije tog raunara- u naem sluaju 4 byte-a)
short int ( moe se skraeno pisati i short) zauzima manje memorije (u
naem sluaju 2 byte-a) od int-a ali se moe pisati i manji raspon brojeva (-
32768 do 32767)
long int ( moe se skraeno pisati i long) zauzima vie memorije (u naem
sluaju 4 byte*a) od int-a ali se zato moe pisati i vei raspon brojeva (
-2 147 483 648 do 2 147 483 647)
Napomena: int tip uvijek zauzima isto prostora ili kao short ili kao long a svi
ovi tipovi se u C jeziku predstavljaju formaterom %d (od decimal) ili %i (od
integer)
Svaki od ovih tipova se moe predstaviti sa predznakom i bez njega.
Default tip je sa predznakom; Naravno ako je tip predstavljen bez
predznaka onda moe prikazati skoro duplo vei pozitivan broj nego
inae ali ne moe prikazati negativne brojeve. Da bi se prikazao tip
bez predznaka koristi se kljuna rije unsigned:
unsigned int
unsigned long int ili unsigned long
unsigned short int ili unsigned short
Cijelobrojni tipovi podataka
Primjer
Karakteri i ASCII kod

Specijalan tip cjelobrojnog podatka je char On


zauzima 1 byte u memoriji i moe imati raspon
brojeva od -128 do 127 (ili 0 do 255). Svaka od
ovih vrijednosti odgovara jednom znaku iz ASCII
tabele.
U ANSI standardu nije precizirano da je oznaen
ili neoznaen ali se to moe prevazii
dodavanjem rijei signed ili unsigned ispred char.
Koristi se da predstavi znakovne podatke.
Da bi se predstavio u C jeziku koristi se formater
%c (od character) ili %s (od string)
ASCII kod
Karakteri i ASCII kod Primjer
Realni tipovi podataka
C poznaje tri vrste realnih brojeva:
float realni tip podatka jednostruke tanosti ( to znai
da moe predstaviti broj do 6 decimalnih mjesta). Zauzima
4 byte-a u memoriji to znai da moe predstaviti od 10-38
do 10+38 razliitih vrijednosti. U C jeziku predstavlja se
formaterom %f (od floating point)
double realni tip podatka dvostruke tanosti (to znai da
moe predstaviti broj do 12 decimalnih mjesta). Zauzima 8
byte-a u memoriji to znai da moe predstaviti 10-308 do
10+308 razliitih vrijednosti. U C jeziku predstavlja se
formaterom %ld
long double realni podatak u viestrukoj tanosti (do 24
decimalna mjesta). Zauzima 12 byte-a u memoriji to
znai da moe predstaviti 10-4932 do 10+4932 razliitih
vrijednosti. Takoe se u C jeziku predstavlja formaterom
%ld
Realni tipovi podataka
Primjer
Rezime prostih tipova podataka

Kljuna rije Rezervisana veliina Opseg brojeva koji se


memorije za varijablu mogu zapisati
int 4 byte-a -2147483648 do 2147483647

short 2 byte-a -32768 do 32767

long 4 byte-a -2147483648 do 2147483647

unsigned int 4 byte-a 0 do 4294967295

unsigned short 2 byte-a 0 do 65535

unsigned long 4 byte-a 0 do 4294967295

char 1 byte-a - 128 do 127

float 4 byte-a 10-38 do 10+38

double 8 byte-a 10-308 do 10+308

long double 12 byte-a 10-4932 do 10+4932


Sloeni tip podatka - struktura

Struktura je sloeni tip podatka i definie se kljunom


rijei struct. Obino se navodi ispred glavne funkcije
(main), jer po pravilima C jezika (proceduralnog) prije
negoli neto koristimo prvo ga moramo definisati.
Struktura se moe sastojati od svih navedenih prostih
tipova podataka i ak i od ve definisanih struktura
Samim tim struktura ne obuhvata neki opseg brojeva
(sve zavisi od elemenata strukture)
Kolika je veliina memorije koju zauzima struktura?
Vie o tome u kasnijem posebnom predavanju o
strukturama
Kljune rijei - keywords

Slubene rijei (kljune rijei, engl. keywords


u C koje se NE MOGU koristiti kao
identifikatori(imena varijabli i funkcija):
auto double int struct

break else long switch

case enum register typedef

char extern return union

const float short unsigned

continue for signed void

default goto sizeof volatile

do If static while
Konstante

U C jeziku imamo vie vrsta konstanti i


upoznat emo ih sve:
Numerike
Realne
Simbolike
Numerike konstante

Mogu se predstaviti u decimalnom, oktalnom i


heksadecimalnom brojevnom sistemu
Decimalne konstante- sastoje se od niza decimalnih cifara
(0-9) ispred kojih moe da se nalazi predznak + ili -.
Oktalne konstante prva cifra je 0 a dozvoljene cifre su 0-
7
Heksadecimalne konstante poinju sa 0x a dozvoljene
cifre su 0-9 i slova a-f (predstavljaju vrijednosti 10-15)
U svim sluajevima konstanta je int osim ako nije suvie
velika za taj tip (long int)
Dodavanjem sufiksa u ili U iza cifara dobija se neoznaena
(unsigned) cijelobrojna konstanta a dodavanjem sufiksa l
ili L dobija se konstanta tipa long int ili unsigned long int
Realne konstante

Na C-u se piu samo u decimalnom brojevnom


sistemu
Za brojeve sa vrlo velikim i malim apsolutnim
vrijednostima koristi se eksponencijalna notacija
mEe. m*(10)^2
Obavezno mora da postoji taka da bi se
razlikovale realne od cjelobrojnih konstanti
Podrazumjeva se da su u tipu double (dvostrukoj
tanosti). Dodavanjem sufiksa f ili F konstante su u
jednostrukoj tanosti (float). Sufiksom l ili L
obiljeavaju se realne konstante u viestrukoj
tanosti (long double)
Simbolike konstante

Konstanta kojoj je dodijeljen identifikator (kroz program se


koristi taj identifikator)
Definiu se preprocesorskom direktivom define
#define IME_KONSTANTE vrijednost_konstante
Primjer: #define PI 3.14
IME_KONSTANTE je identifikator koji u nastavku programa
predstavlja navedenu konstantu vrijednost
vrijednost_konstante moe da bude konstanta standardnog
prostog tipa
Direktiva define mora da se pie u zasebnom redu i jednom
direktivom moe da se definie samo jedna konstanta
Treba da omoguavaju lake razumijevanje programa koritenjem
rijei za identifikatore koje ukazuju na smisao tih konstanti
Lake je izmjeniti parametre u programu ako je to potrebno
Konstante Primjer
Pridruivanje identifikatora
tipovima podataka
Programer u C jeziku moe da dodjeli sopstvene identifikatore
deklarativnim naredbama typedef
typedef opis_tipa Naziv_tipa;
Primjer: typedef long int Veliki_cijeli_brojevi;
opis_tipa predstavlja tip kome se dodijeljuje identifikator i
moe da bude:
naziv bilo kog standardnog prostog tipa (int, short, long, float, double...)
identifikator koji je ranije uveden drugom naredbom typedef ili
opis proizvoljno sloenog tipa koji definie programer
Naziv_tipa identifikator koji se pridruuje osnovnom tipu
navedenom u opisu tipa
Uobiajeno je da se za identifikatore tipova koriste rijei sa
velikim poetnim slovima (konvencija, ne pravilo)
Nabrojane konstante (enum)

Cijelobrojno simbolike konstante kojima su


vrijednosti dodijeljene eksplicitno ili
implicitno nabrajajui njihove identifikatore u
jednom nizu
Skup odjednom nabrojanih konstanti ini jedno
nabrajanje koje moe da se smatra tipom
podatka koji je definisao programer. Opti
oblik opisa nabrajanja je:
enum ime_nabrajanja{IME_KONSTANTE=vrijednost,
IME_KONSTANTE =vrijednost,
IME_KONSTANTE=vrijednost}
Typedef i enum Primjer
OPERATORI

Nad svim pomenutim tipovima podataka mogu se


vriti matematike operacije. Operacije se rade sa
operaterima. U C jeziku imamo vie vrsta
operatera a to su:
Aritmetriki operatori
Unarni (rade operaciju na samo jednom operandu
varijabli)
Binarni (rade operaciju na dva operanda varijable)
Operatori dodjeljivanja
Relacioni operatori
Logiki operatori
Jednakostni operatori
Operatori s bitima
sizeof() i cast() operatori
Pored operatora pomou kojih se vre operacije u C moemo pisati i
izraze. Izraz je kombinacija nekoliko operatora (istih ili razliitih)
iste ili razliite vrste
Aritmetriki operatori i
operatori dodjeljivanja

Operacija Sabiranje Oduzimanje Mnoenje Dijeljenje Ostatak dijeljenja (modul)

Operator + - * / %
Operacija Dodjeljivanje Skraeni operator za Skraeni operator za
vrijednosti istovremeno sabiranje i istovremeno oduzimanje i
dodjeljivanje dodjeljivanje
Operator
= += -=
Operacija Skraeni operator za Skraeni operator za Skraeni operator za
istovremeno mnoenje i istovremeno dijeljenje i istovremenu modul operaciju i
dodjeljivanje dodjeljivanje dodjeljivanje
Operator
*= /= %=
Operatori aritmetriki i
dodjeljivanje - Primjer
Unarni aritmetriki operatori

Inkrement Dekrement
Operacija Znak (poveanje vrijednosti (smanjenje vrijednosti
varijable za 1) varijable za 1)

Operator + ili - ++ --
Mogu biti navedeni u dvije forme: prefiks i postfiks
Prefiks: ++a
Postfiks: a++
Prefiks i postfiks: ++a
Razlika lei u tome da kada se radi sa prefiksom, varijabli se
pripie vrijednost prije poetka izraza, a sa postfiksom varijabli
se pripie vrijednost nakon kraja izraza.
Unarni Operatori Primjer
Relacioni, logiki,
jednakostni operatori
Operator Operacija
Relacioni operatori Relacione operacije
< Manje od
> Vee od
<= Manje od ili jednako
>= Vee od ili jednako
Operator jednakosti Jednakostne operacije
== Jednako
!= Nije jednako
Logiki operatori Logike operacije
! Logika negacija
ll Logiki ILI
&& Logiki I
Relacioni, logiki, jednakostni
operatori - Primjer
Prioritet Operatora

Operatori (prioriteti po redovima) Asocijativnost

( ), ++ (postfiks), -- (postfiks) sa lijeva udesno

+ (unarni), -(unarni), ++ (prefiks), -- sa lijeva udesno


(prefiks)
*,/,% sa lijeva udesno

+,- sa lijeva udesno

<, <=, >, >= sa lijeva udesno

==, != sa lijeva udesno

&& sa lijeva udesno

ll sa lijeva udesno

=, +=, -=, *=, /=, %= sa desna ulijevo


Operatori sa bitima

Operator Operacija

& Logiko I

l Logiko ILI

^ Eksluzivno ILI

~ 1 Komplement

>> Pomjeranje bita udesno

<< Pomjeranje bita ulijevo


Operatori sa bitima - Primjer
Operator sizeof()

Sintaksa za ovaj operator je: sizeof(objekat)


Objekat moe biti prosti (fundamentalni) tip,
sloeni(struktuirani) tip i izraz
Objekat moe da bude i identifikator neke vrijable
ali opet se vraa kao rezultat zauzetost memorije
tipa podatka identifikatora
Ako se sjeate kada smo spominjali strukture da ne
moemo unaprijed znati koliko zauzimaju
memorije. Pomou ovog operatora moemo uvijek
saznati koliko prostora u memoriji zauzima
struktura
Konverzije podataka
Ako je jedan long double onda drugi se konvertuje Da bi uopte mogli raditi
operand u long double proraunavanja sa
varijablama koje su
Ako je jedan double onda drugi se konvertuje
operand u double razliitih tipova
podataka, C jezik radi
Ako je jedan float onda drugi se konvertuje konverziju jednog tipa
operand u float podatka u drugi
Tablica prioriteta
Ako je jedan unsigned onda drugi se konvertuje
operand long u unsigned long konverzije je data u
tabeli pored
Ako je jedan long onda drugi se konvertuje Primjetite da je pravilo
operand u long kada se radi sa dva
razliita tipa podatka
Ako je jedan unsigned onda drugi se konvertuje
operand u unsigned
uvijek se konvertuje
onaj koji zauzima manje
Ako je jedan Int onda drugi se konvertuje memorije u onaj koji
operand u int zauzima vie memorije u
raunaru
Cast operator

Sintaksa za cast operator je: (tip podatka) izraz


Recimo npr:
int x;
(float)x;
Gornji primjer pretvara int tip podatka u float tip podatka
Vidjeli smo prethodno da tu konverziju radi sam C jezik, i
to tako da pretvara tip podatka koji zauzima manje
memorije u tip podatka koji zauzima vie memorije
Sa cast operatorom moemo zaobii ovaj defaultni nain
promijene tipa podatka i raditi sa tipovima podataka sa
kojim nama odgovara
Cast operator ima jo neke svoje primjene ali do njih emo
doi u kasnijim predavanjima
sizeof() i cast operator
Kraj

Pitanja

You might also like