You are on page 1of 42

Struktura programskog

jezika C
Azbuka
predstavlja osnovni skup znakova od
kojih se grade sve sintaksne kategorije
jezika. Azbuka jezika C obuhvata:
1. velika i mala slova engleskog
alfabeta,
2. dekadne cifre (0 – 9),
3. specijalne znakove i
4. bele (neštampajuće) znakove (space,
tabulacija, novi red, nova stranica,
komentari).
Leksema
znak, ili niz od dva ili više znakova koji u
programu ima određeno značenje.
Lekseme obrazuju rečnik i predstavljaju
osnovne gradivne elemente
programskog jezika. Skup leksema jezika
C deli se na:
1. identifikatore,
2. konstante,
3. službene reči,
4. operatore i
5. separatore.
Konstrukcije
Pomoću leksema grade se konstrukcije.
U konstrukcije spadaju:
1. naredbe,
2. programi i
3. direktive.
Naredbe su nizovi leksema i mogu biti
deklarativne i izvršne.
Programi su nizovi naredbi pomoću kojih
se rešava neki zadatak.
Direktive su naredbe predprocesora, dela
programskog prevodioca koji obrađuje tekst
programa pre prevođenja.
Struktura programa u C –
u
direktive pretprocesora
spoljašnje definicije i deklaracije
main()
{
deklaracije i definicije
izvršne naredbe
/*komentar*/
}
definicije funkcija
Primer1
/*Prikaz na ekranu jedne linije fiksnog teksta*/
 
#include<stdio.h>
#include<stdlib.h>
 
main( )
{
printf("\nHello World\n\n");
system("PAUSE");
}
Primer2
/*Vise poziva funkcije printf(), prikaz na ekranu jedne
linije teksta*/
 
#include<stdio.h>
#include<stdlib.h>
 
main( )
{
printf("\nDobrodosli ");
printf("u jezik C\n\n");
system("PAUSE");
}
Primer3
/*Jedan poziv finkcije printf( ), prikaz na ekranu
vise linija teksta*/
 
#include<stdio.h>
#include<stdlib.h>
 
main( )
{
printf("\nDobrodosli\n\n\tu jezik C\n\n");
system("PAUSE");
}
Deklaracije i definicije
Svaka deklaracija:
daje određeno značenje imenu
koje će se koristiti,
dodeljuje memorijski prostor za
objekat označen tim imenom,
definiše ponašanje funkcije i
specificira tip podataka ili
funkcije.
Deklaracije i definicije - Primer
int x, z;
char c;
double stepen(double x,
double y);
Funkcije
Svaki program može i mora sadržati samo
jednu main() funkciju, od koje započinje
izvršenje svakog C programa.
Funkcija se definiše posebnom naredbom
za definisanje funkcija:
 
[tip_funkcije] ime_funkcije (lista parametara)
{
telo funkcije
}
Identifikatori i rezervisane reči
Identifikatori, ili imena služe za
označavanje:
promenljivih,
simboličkih konstanti,
funkcija i
oznaka naredbi koje su
odredište grananja (skoka).
Identifikatori i rezervisane reči
Identifikator (ime) je niz malih i
velikih slova, dekadnih cifara i znaka
“_“.
Prazna mesta u nizu nisu
dozvoljena. Pravi se razlika između
velikih i malih slova (Ime ≠ ime).
Prvi znak u imenu ne može biti cifra,
a ne preporučuje se da znak _ bude
prvi.
Identifikatori i rezervisane reči

dozvoljeni identifikatori nedozvoljeni identifikatori


alfa 2ab
B01 a-5
ime_i_prezime A:5
nova_vrednost $x2
_nije_preporučeno ime i prezime
rezervisane reči
Rezervisane (ključne) reči imaju tačno
definisano fiksno značenje i ne mogu se
koristiti kao identifikatori. Sve rezervisane
reči pišu se malim slovima, dok se
identifikatori koje uvodi programer mogu
pisati i velikim i malim slovima. Uobičajeno
je da se imena konstantnih veličina pišu
velikim
auto
slovima.
double
Rezervisane reči
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
Tipovi podataka
Tipovi podataka mogu biti prosti i složeni.
Prosti tipovi ne mogu da se razlože na
manje elemente. Nazivaju se još i
skalarni, elementarni, ili nestrukturni
tipovi.
Složeni tipovi podataka sastoje se od
više elemenata koji mogu nezavisno da
se obrađuju. Složeni tipovi se nazivaju
još i strukturni tipovi.
Tipovi podataka
U osnovne tipove podataka u C-u
spadaju:
numerički tip
a) celobrojni tip – int
b) realni tip – float, double
znakovni tip
a) karakteri – char
nabrojivi tip – enum
prazan tip – void
Tipovi podataka
Složeni tipovi su:
niz – array
funkcija – function
pokazivač – pointer
struktura – structure
unija – union
Celobrojni tip - int
Predstavlja pozitivnu ili negativnu celobrojnu vrednost.
Postoje tri tipa:
int,
short int,
long int.
Veličina celobrojnog tipa je 2B (short int) ili 4B (int, long
int), a short i long se nazivaju kvalifikatori. Uz ova tri
osnovna tipa postoje i tri dodatna tipa:
unsigned int,
unsigned short int,
unsigned long int.
unsigned – neoznačen, tj. uzimaju se samo pozitivni celi
brojevi.
Realni tip – float, double
Predstavlja realne brojeve, odnosno
brojeve sa pokretnim zarezom (floating
point) – decimalne brojeve. Razlika između
tipova float i double je u preciznosti i
opsegu predstavljanja.
Promenljiva tipa float pamti vrednost sa
najviše 7 tačnih decimalnih cifara i
predstavljena je sa 4B.
Promenljiva tipa double (double
precision) pamti vrednosti sa najviše 16
decimalnih cifara i predstavljena je sa 8B.
Znakovni tip – char
Znakovni tip je podatak kojem možemo
dodeliti samo jedan znak iz ASCII koda i
veličine je 1B. Uvek se stavlja između dva
apostrofa (npr. ’A’).

tip opseg vrednosti


signed char -128 – 127
-128 – 127
char
0 – 255
unsigned char 0 – 255
Primer
/*Velicina tipa podataka*/

#include<stdio.h>
#include<stdlib.h>

main( )
{
printf("\n int zauzima %d B memorije \n",
sizeof(int));
system("PAUSE");
}
Zadatak
Preraditi prethodni primer tako da se
ispise velicina i sledecih tipova
podataka:

1. short
2. long
3. double
4. float
5. char
Nabrojivi tip – enum
To su sopstveni tipovi koje definiše sam
programer. U njima se kao vrednosti
koriste identifikatori.

typedef enum {PON, UTO, SRE, CET, PET, SUB,


NED} Dani;
typedef enum {CRVENA, ZELENA, PLAVA} Boje;
Konstante
Konstanta je podatak čija je vrednost
unapred zadata i ne može se menjati
tokom izvršavanja programa. Konstante se
mogu predstaviti direktnim zadavanjem
vrednosti, ili pomoću simboličkih imena –
simboličke konstante.
Promenljive su podaci kojima se pri
izvršenju programa mogu dodeljivati
različite vrednosti, tj. mogu se menjati.
Promenljive se u programu označavaju
pomoću identifikatora (imena).
Konstante
Celobrojne konstante
ispravne celobrojne konstante neispravne celobrojne konstante
2003 -12a4
-187 0192
0765 2.41
0xFFaf 01bf7
0xab05 0xa3gj

Realne konstante
ispravne realne konstante neispravne realne konstante
3.14159 1,23
-0.0065 1bE-7
0.1E-06 e-2
-1.06e+04 .E-2
Konstante
Znakovne konstante tipa char
predstavljaju se stavljanjem
odgovarajućeg znaka između dva
apostrofa (npr. 'a' , '7'). Na ovaj
način se mogu predstaviti svi znaci
sa tastature, osim \, ’ i “. Ova tri
izuzetka predstavljaju se na sledeći
način:
’\\’ , ’\’ ’ , ’\“ ’.
Upravljački (kontrolni)
znaci
\a – davanje zvučnog siganala,
\b – vraćanje za jedno mesto nazad,
\f – nova stranica (list),
\n – novi red,
\r – vraćanje na početak reda,
\t – horizontalna tabulacija,
\v – vertikalna tabulacija,
\ - nastavak linije u novom redu (kada
je \ poslednji znak u redu).
 
Zadatak
Napisati program koji ispisiuje sledece:

Radni dani u nedelji su:


“Ponedeljak”
“Utorak”
“Sreda”
“Cetvrtak”
“Petak”

Koristiti samo JEDAN printf. Nakon


zavrsenog ispisa staviti zvucni signal.
Simboličke konstante
To su konstante kojima je dodeljeno ime, pa se
kasnije u programu koristi to ime, a ne sama
vrednost konstante. Uobičajeno je u praksi da
se imena simboličkih konstanti pišu velikim
slovima.
Simboličke konstante se u programu moraju
definisati direktivom predprocesora #define.

#define PI 3.14
#define MAX 100
#define PLUS ’+’
#define PASS “password“
Zadatak
Napisati program koji racuna i
ispisuje povrsine krugova sa
sledecim poluprecnicima: 2, 5, 7,
12, 15. Definisati i koristiti za
izracunavanje konstantu PI. Ispis
na ekranu treba da sadrzi
izracunatu povrsinu i poluprecnik
odgovarajuceg kruga (npr. Povrsina
kruga sa poluprecnikom 2 je ….)
Unos i prikaz podataka
Unos i prikaz podataka se obavlja pomoću
ulaznih i izlaznih funkcija ( scanf i printf )
koje se nalaze u sistemskoj datoteci
stdio.h.
Funkcije printf i scanf obavljaju tzv.
formatirani unos, odnosno prikaz
podataka. Mesto na kome sa nalazi ulazni,
odnosno štampa izlazni podatak naziva se
polje. Broj znakova koji se mogu smestiti
u polje naziva se širina polja. Format
određuje raspored podataka i širinu polja.
Unos i prikaz podataka
Izlazna funkcija printf( )
Opšti oblik opisa konverzije za funkciju printf je sledeći: 
%[-+#0][n][.][k]q – simboli u [ ] nisu obavezni
% - uvod u konverziju
- - poravnanje sa leve strane (inače se poravnava sa desne
strane)
+ - obavezno ispisuje + ispred podatka
# - obavezno ispisivanje 0 za oktalni zapis, 0x za heksadcimalni
ili decimalne tačke za realne brojeve bez razlomljenog dela
0 – kod numeričkih konverzija pri ravnanju udesno, sa leve
strane se obavezno dopisuju nule umesto razmaka
n – minimalna širina izlaznog polja
. – odvaja n i k
k – broj decimala sa kojima se ispisuje izlazni podatak
q – vrsta konverzije (d, f, lf, c, s)
Izlazna funkcija printf( )
Umesto n i k može se staviti *. U tom
slučaju se n i k moraju deklarisati kao
tip int.
printf(“%8.*f“,k,x);
printf(“%*.*f“,n,k,x);
Zadatak
#include<stdio.h> printf("%-10d\n",x);
#include<conio.h>

main() printf("\nRealan
{ broj:\n\n");
int x = 999; printf("%10f%\n",y);
double y = 1.2345; printf("%-10f\n",y);
printf("%10.2f\n",y);
printf("\nCeo printf("%.2f\n",y);
broj:\n\n"); getch();
printf("%10d\n",x); }
Ulazna funkcija scanf( )
Ova funkcija se koristi za formatirano
čitanje podataka. Opšti oblik opisa
konverzije za funkciju scanf je sledeći:

%[n]q

% - uvod u konverziju
n – maksimalna širina ulaznog polja
q – vrsta konverzije (d, f, lf, c, s)
Ulazna funkcija scanf( )
Primeri:
scanf(“%d%d%d“,&a,&b,&c);
ako ovde unesemo npr. 12 370 5,
promenljivima a, b i c dodeliće se sledeće
vrednosti a=12, b=370 i c=5

scanf(“%2d%3d%1d“,&a,&b,&c);
ako ovde unesemo npr. 123705,
promenljivima a, b i c dodeliće se sledeće
vrednosti a=12, b=370 i c=5
Zadatak
/*Prikaz na ekranu zadatog celog broja u raznim oblicima*/
#include<stdio.h>
#include<conio.h> 
main()
{
int x;
printf("\nUnesite ceo broj:\t");
scanf("%d",&x);
printf("\nDecimalni oblik:\t%d",x);
  printf("\nOktalni oblik:\t\t%o",x);
printf("\nHeksadecimalni oblik:\t%x (%X)\n\n",x,x);
getch();
}
Zadatak
Napisati program koji racuna i ispisuje
povrsine krugova za poluprecnik koji
unese korisnik. Definisati i koristiti za
izracunavanje konstantu PI. Ispis na
ekranu treba da sadrzi izracunatu
povrsinu i poluprecnik
odgovarajuceg kruga (npr. Povrsina
kruga sa poluprecnikom 2 je ….).
Zaokruyiti povrsinu na dve decimale.
Primer
#include<stdio.h>
#include<conio.h>
main()
{
int x,y;
printf(“\nUnesite brojeve x i y u obliku x,y\n“);
scanf(“%d,%d“,&x,&y);
printf(“\nUneti brojevi su %d i %d.\n“,x,y);
getch();
}
Zadatak
/*Prihvatanje imena od korisnika i prikaz na ekranu licnog
pozdrava*/

#include<stdio.h>
#include<stdlib.h>

#define MAX 30

main( )
{
char ime[MAX];
printf("\nVase ime?\n\n");
scanf("%s",&ime);
printf("\nZdravo %s, dobrodosli u jezik C.\n\n", ime);
system("PAUSE");
}

You might also like