Osnove c jezika: skripta sa primerima
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
i
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

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

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
Ovaj materijal je namenjen za učenje i pripremu, ne za predaju.
Slični dokumenti