OSNOVE C JEZIKA

1./*Napisati program koji na ekranu ispisuje poruku Zdravo svete!*/

#include<stdio.h>
void main()
{

printf("Zdravo svete! ");

}

Funkcija  

void   main()

  je   glavna   funkcija   i   postoji   samo   jedna   ova   funkcija   u   C   programu. 

“()”označava da main nema argumenata. 

printf

 je funkcija za štampanje poruke “Zdravo svete!. Karakter 

‘ ’

   predstavlja oznaku za novu liniju. Svaki iskaz se mora završiti karakterom ’;’, koji ima ulogu 

terminatora iskaza. Karakteri ‘{‘ i ‘}’ objedinjuju više pojedinačnih iskaza u jednu programsku celinu i 
oni su obavezni jer se tu izvršava neka obrada.

scanf

 je funkcija slična 

printf

. Razlika je što se argumenti funkcije printf prenose sa vrednošću, 

dok se kod scanf prenose svojom adresom, jer se učitana vrednost mora vratiti u pozivajući program. To 
se postiže navođenjem karaktera 

&

 (operator adresiranja) ispred argumenta u listi argumenata. Npr. 

scanf(“%d”,&x);

%d - 

broj koji se unosi je celobrojni.

%8.2f

 – ostavljanje mesta za zapis realnog broja

Escape karakteri

Konverzioni karakteri funkcije printf

b – povratnik

nn – vrednost karaktera

Konverz. kar.

Konverzija izlaznog niza

f – from feed

- obrnuta kosa crta

c

Karakter (char)

– nova linija

” – dvostuka navodnica

d

ceo broj (int)

r – carriage return

’ – jednostruke navodnice

f

realan broj (float)

– horizontalni tab

- nastavak linije

s

niz karaktera (string)

v – vertikalni tab

e

realan br. u naučnoj notaciji

le

double

Variables - Promenljive

Promenljiva je objekt jezika koji ima ime i kome se mogu dodeljivati različite vrednosti u toku 
izvršavanja programa. 

Imena promenljivih se grade od velikih i malih slova, cifara od 1 do 9 i karaktera  (donja crta _ ). 
Ime   ne   sme   počinjati   cifrom,   niti   sme   sadržati   rezervisane   reči.     Nedozvoljeni   znaci   su   i 
matematički operatori (+, -, *, /, %).

Variable names are 

case sensitive

 – imena promenljivih su osetljiva na mala i velika slova.. 

Ime promenljive (indentifikator):

skola
y
Ab63c
auto_skola

1

Osnovni tipovi podataka

Osnovni tipovi podataka su 

int, float, double 

char

.

Podaci tipa  

int

  su celobrojne vrednosti.  Tu spadaju celobrojne konstante, promenljive, 

izrazi   i   funkcije.   Opseg   celobrojnig   vrednosti   je   različit   i   može   se   menjati   primenom 
kvalifikatora  

long,

 

short i unsigned

. Kvalifikator long povećava opseg vrednosti celobrojnih 

promenljivih. Kvalifikator short ispred int smanjuje opseg celobrojnih promenljivih. Kvalifikator 

unsigned

 ispred int deklariše promenljivu tako da može memorisati samo pozitivne vrednosti.

Promenlljive tipa 

float

 ili 

double 

memorišu vrednosti realnih brojeva, odnosno, vrednosti 

sa decimalnim (pokretnim) zarezom. Promenljive daklarisane kao double mogu memorisati oko 
dva puta više decimalnih cifara od promenljivih tipa float.

Promenljive i konstante tipa  

char

  memorišu karaktere. Konstante tipa char dobijaju se 

stavljanjem karaktera između jednostrukih navodnica, npr. ‘A’, ‘1’, itd.  ‘A’ treba razlikovati od 
“A”,   jer   “A”   predstavlja   konstantni   niz   karaktera   koji   u   C   jeziku   ima   posebnu   predstavu   i 
tretman.

Primeri:

int bob=32;

Creates variable "bob" and initializes it to the value 32. (

Kreirana promenljivba "bob" i izvršena 

inicijalizacija na 32.)

boolean yes=1;

Creates variable "yes" as type "char" and sets its value to 1. 

Aritmetički izrazi i operatori

Aritmetički  operatori  C  jezika su  +,  -,  *,  / i  %  koji odgovaraju  matematičkim  operacijama 
sabiranja, oduzimanja, množenja, deljenja i deljenja po modulu, respektivno. Ovi operatori su 
binarni, jer zahtevaju dva operanda, sa izuzetkom operatora -, koji može biti i unaran. Operator 
deljenja po modulu (%) daje ostatak posle celobrojnog deljenja.

2

background image

Odnosne naredbe – naredbe uslova

Kao i aritmetički operatori, odnosni operatori su binarni tj. uspoređuju dva operanda. Naredba sa 
dva operanda i odnosnim operatorom zove se odnosna naredba (eng. 

relational expression

.)

Rezultat odnosne naredbe je Boolean vrednost odnosno 

istinu 

ili

 laž (

true

 

ili

 

false

).

 S ovom 

tablicom možete videti kako to funkcioniše.

U ovoj tablici se koriste konkretne (

 literal 

) vrednosti koje ne mogu biti promenjene. 4 je 

konkretna vrednost (konstanta), i ona se ne može menjati (moglo bi se menjati da se umesto 
konstanta koriste promenljive).

Operator inkrementiranja i dekrementiranja

Operator 

inkrementiranja ++

  i  

dekrementiranja --

  su unarni operatori i javljaju se u 

prefiksnom i postfiksnom obliku. Operator inkrementiranja ++ promenljivoj p dodaje vrednost 1, 
dok operator dekrementiranja -- promeljivoj p oduzima vrednost 1, pa važi:

p++ je ekvivalentno p=p+1

p-- je ekvivalentno p=p-1 

(postfiksni oblik)

++p je ekvivalentno p=p+1

--p je ekvivalentno p=p-1

(prefiksni oblik)

Ako se koristi oblik 

++x

 to znači da se

 

x

 

prvo uvećava pa tek onda koristi u izrazu. Oblik 

x++

 

znači da se

 

x

 prvo koristi u izrazu pa tek onda uvećava. Anaklogno važi za operaciju --.

x+=2   je

x=x+2

x/2

je 

x=x/2

x*=2 je

x=x*2

x%=2 je

x=x%2

Rezervisane reči - Keywords

The following keywords are reserved and may not be used as an identifier for any other purpose. 

auto

double

int

long

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

Elementarne algoritamske strukture 

4

Algoritamske strukture se dele u tri osnovne grupe:

Linijska (sekvencija)

Razgranata (selekcija)

Ciklična (iteracija)

Linijska struktura:

Karakteristika linijske strukture je da se svi elementi izvršavaju samo jednom i koraci se odvijaju u nizu 
jedan za drugim bez ponavljanja ili "skretanja".

Primjer u BASIC-u

Primjer u C-u

INPUT a, b
zbir = a + b
PRINT zbir
END

#include <stdio.h>

void main () {
    int a, b, zbir;

    printf("a,b? "); 
    scanf("%d%d", &a, &b);
    zbir = a + b;
    printf("a + b = %d ", zbir);
}

Razgranata struktura:

Razgranata struktura će se pojaviti kod algoritma koji ima blok odlučivanja kao što su IF i CASE, pri čemu 
se vrši testiranje određenog uslova a prema rezultatu (obično TRUE ili FALSE) algoritam se grana i 
nastavlja tok jednom od grana- opcija. Primjer na slici je tipičan gdje se otklanja blokiranje programa 
provjerom da li je djelilac jednak nuli. Ako je djelilac različit od nule, daće rezultat dijeljenja, u suprotnom 
će dati samo poruku da dijeljenje nulom nema smisla i nastaviti dalje prema sledećoj proceduri ili kraju 
programa.

Primjer u BASIC-u

Primjer u C-u

INPUT a,b
IF b <> 0 THEN
PRINT a/b
ELSE
PRINT "Ne mogu 
deliti nulom"
END

#include<stdio.h>

void main () {
    float a, b;

    scanf("%f%f", &a, &b);
    if (b == 0) {
        printf("Ne mogu deliti 
nulom ");
    } else {
        printf("a : b = %f ", a / b);
    }
}

Ciklična struktura

Ciklični algoritam će se pojaviti kada treba isti posao uraditi više puta. Postoji više varijanti ove srtukture, a 
dve osnovne poele su: 

Broj iteracija (ponavljanja) je unapred poznat. Primer ove petlje je na slici i tu se obično koristi 
petlja 

FOR.

Iteracija se vrši dok se ne zadovolji određen uslov. Koriste se petlje tipa 

WHILE...DO.

Kod Iteracije sa proverom istinitosti uslova (da li je uslov zadovoljen) postoje varijante s proverom uslova 

5

background image

int a=0,b=0,c=0;
printf(" a=%d b=%d c=%d ",a,b,c);
a=++b + ++c;
printf("a=%d b=%d c=%d ",a,b,c);
a=b++ + c++;
printf(" a=%d b=%d c=%d ",a,b,c);
a=++b + c++;
printf(" a=%d b=%d c=%d ",a,b,c);
a=++c + c;
printf(" a=%d b=%d c=%d ",a,b,c);

}

3.   /*Napisati   program   kojim   se   obračunavaju   troškovi   putovanja   ako   je   udaljenost   S 
kilometara, potrošnja automobila na 100 km L litara, a cena litra goriva C dinara.*/

#include<stdio.h>
void main()
{

float s,l,c,t;
printf("Rastojanje u kilometrima ");
scanf("%f",&s);
printf("Potrosnja u litrima na 100 km ");
scanf("%f",&l);
printf("Cena goriva u dinarima ");
scanf("%f",&c);
t=2*s*l*c/100;
printf("Troskovi putovanja su %0.2f dinara ",t);

}

4./*Napisati program koji datom prirodnom četvorocifrenom broju:

a) izračunava proizvod cifara;
b) izračunava razliku sume krajnjih i srednjih cifara broja;
c) izračunava sumu kvadrata cifara;
d) određuje broj koji se dobija ispisom cifara u obrnutom porektu.*/

a)
#include<stdio.h>

void main()
{

int n,a,b,c,d,proizvod;
printf("Uneti cetvorocifren broj ");
scanf("%d",&n);
a=n%10;
b=((n%100)/10);
c=((n/100)%10);
d=n/1000;
proizvod=a*b*c*d;
printf("Proizvod cifara broja %d je: %d ",n,proizvod);

}

b)

#include<stdio.h>
void main()
{

int n,a,b,c,d,razlika;

7

Želiš da pročitaš svih 74 strana?

Prijavi se i preuzmi ceo dokument.

Ovaj materijal je namenjen za učenje i pripremu, ne za predaju.

Slični dokumenti