8/19/2019 Programski Jezik C Uvod
1/35
Programski jezik CViši programski jezici (C, Pascal, FORTRAN, C++, Java, . . . ) razvijeni su kako bi se prevladali nedostaciasemblerskog jezika.
Oni oslobađ aju programera potrebe poznavanjaarhitekture računara, omogućavaju prenosivostprograma izmeđ u računara različitih arhitektura tebrže i jednostavnije programiranje.
8/19/2019 Programski Jezik C Uvod
2/35
Uvod
Programski jezik C je viši programski jezik opštenamene. Razvio ga je Dennis Ritchie sedamdestih godina
prošlog veka u Bell Telephone Laboratories, Inc.
Opis jezika prvi put je predstavljen u knjizi BrianW. Kernighan, Dennis M. Ritchie: The CProgramming Language, Prentice-Hall, 1978.
Tokom sedamdesetih i osamdesetih godina jezikse brzo širio te je American National StandardInstitute (ANSI) pristupio njegovoj standardizacijikoja je dovršena 1989. godine.
8/19/2019 Programski Jezik C Uvod
3/35
Uvod
Sledeći program je najmanji mogući program u C jeziku: main()
{
}
Ne radi ništa. Sledeći program ipak nešto radi: #include
main()
{
printf("TFMP\n");}
Ispis programa
TFMP
8/19/2019 Programski Jezik C Uvod
4/35
Uvod
Za pisanje C-programa koriste se mala ivelika slova, ali sve naredbe u C-u morajubiti napisane malim slovima.
Početak C programa označava se sa: main() – deklaracija funkcije main
Zagrade koje se nalaze nakon ključne
riječi main označavaju da program neprima nikakve argumente
8/19/2019 Programski Jezik C Uvod
5/35
Uvod
Dve zagrade, { i }, označavaju početak ikraj delova programa. Svrha izraza
#include (standardna
biblioteka za ulaz i izlaz podataka) je da omogući upotrebu printf funkcije zaispis. Tekst koji će ispisati printf() mora
biti u navodnicima. Program ima samo jednu naredbu
printf(“TFMP\n");
8/19/2019 Programski Jezik C Uvod
6/35
Uvod
printf() je zapravo funkcija u C-u koja sekoristi za formatirani ispis varijabli i teksta.Tekst unutar navodnika " ", ispisuje se
onako kako je zadano. Ipak postoje neki izuzetci - označavaju se
znakovima: \ i % . Ovi znakovi su
modifikatori. U našem primeru \ kojiprethodi znaku n predstavlja oznakuprelaza u novi red.
8/19/2019 Programski Jezik C Uvod
7/35
Uvod
Tako program ispisuje TFMP i kursor sepostavlja na početak nove linije. Kao štoćemo kasnije videti, znak koji sledi iza
znaka \ određuje šta se ispisuje, tj. 8praznih mesta (tab), prazan ekran, praznalinija itd.
Sve naredbe u C-u završavaju se tačka-zarezom ;
8/19/2019 Programski Jezik C Uvod
8/35
Pisanje, kompajliranje i
izvršavanje programa Pisanje koda
Kod – niz naredbi koje čine program Kod se piše u EDITOR-u koji generiše tzv.ACSII file
Napisanom kodu se mora dati neko imesa ekstenzijom .C .
8/19/2019 Programski Jezik C Uvod
9/35
Pisanje, kompajliranje i
izvršavanje programa Kompajliranje koda
Prevođenje napisanih naredbi u tzv. objektni kod. Kompajliranje se vrši pomoću posebnogprograma – kompajlera (prevodioca) koji generiše
objektni kod (datoteka s nastavkom .OBJ) Povezivanje koda u izvršni program
Povezivanje znači konačno formiranje izvršnog programa.
Povezivanje se vrši pomoću posebnog programa – linkera (povezivač) koji generiše izvršni kod(datoteka s nastavkom .EXE).
8/19/2019 Programski Jezik C Uvod
10/35
Pisanje, kompajliranje i
izvršavanje programa Ispravljanje grešaka
Napisani program u svom izvornom kodumože imati grešaka koje prijavljuje kompajlerili linker.
Ako kompajler ili linker jave neku grešku,treba se vratiti korak ili dva nazad, ispravitigreške i ponoviti postupak.
Ako kompajler i linker ne jave greške,program se može izvršiti (što ne znači da je idobar).
8/19/2019 Programski Jezik C Uvod
11/35
Pisanje, kompajliranje i
izvršavanje programa Izvršavanje programa
Konačni program koji se dobije nakon što linker izvrši svoj deo posla (ako ne javi nekugrešku) izvršava se ukucavanjem njegovog
naziva. Traženje logičkih grešaka
Ako program radi ali ne ispravno, treba potražiti logičke greške u programu. To se obično radi s
tzv. debuger programom koji između ostalog omogućava izvršavanje jedne po jedne naredbe i uvid u vrednost svihvarijabli.
8/19/2019 Programski Jezik C Uvod
12/35
Komentari
Dodavanje komentara programu je poželjno. Komentarise u C programu mogu dodati unutar znakova /* */:
/* ovo je komentar. */
Primetite da /* otvara polje komentara, a da ga */
zatvara. Komentari mogu obuhvatati više linija. Međutim,ne mogu se gnezditi jedan unutar drugog.
/* ovo je komentar. /* ovaj komentar je
unutra */ pogrešno */
U gornjem primeru, prva pojava znaka */ zatvarakomentar za čitavu liniju, što znači da se reč pogrešnointerpretira kao C izraz ili varijabla, i u ovom primeru,generiše grešku.
8/19/2019 Programski Jezik C Uvod
13/35
Komentari
Zašto se komentari koriste: dokumentovanje varijabli i njihovo
korišćenje objašnjavanje složenih delova programa opis programa, autor, datum, promene,
revizije itd.
8/19/2019 Programski Jezik C Uvod
14/35
Osnovna struktura C
programa C programi u osnovi imaju sledeću
strukturu:
/* ZAGLAVLJE */
/* Sadrži ime programa, ime autora,broj revizije...*/
/* INCLUDE deo */
/* sadrži #include izraze */
/* KONSTANTE I TIPOVI */
/* sadrži tipove i #define izraze */
8/19/2019 Programski Jezik C Uvod
15/35
Osnovna struktura C programa
/* GLOBALNE VARIJABLE */
/* ako postoje globalne varijable
deklarišu se ovde */
/* FUNKCIJE */
/* funkcije koje definiše korisnik */
8/19/2019 Programski Jezik C Uvod
16/35
Osnovna struktura C programa
/* main() */
int main()
{
}
Pridržavanje ove dobro definisane struktureučinit će vaše programe lakim za čitanje imodifikovanje .
8/19/2019 Programski Jezik C Uvod
17/35
Varijable, tipovi podataka,
konstante VARIJABLE
Programski jezik C ima ČETIRI osnovnatipa podataka. Varijable koje defiše
korisnik moraju biti deklarisanepre nego što će se koristiti u programu.
C razlikuje mala i velika slova, tako da iako
dve varijable imaju isto ime, u C-u sesmatraju različitim varijablama.
sum , Sum
D kl ij ij bli š k
8/19/2019 Programski Jezik C Uvod
18/35
Deklaracija varijabli vrši se nakonotvorene zagrade main(),
Primer: Prikaz ispisa vrednosti celobrojnepromenjive koristeći printf("%d")
#include
main()
{/* definisanje promenljive i sa dodeljivanjem
vrednosti 2 */
int i = 2;
/* ispis vrednosti */printf("Vrednost promenjive i je %d\n",i);
}
8/19/2019 Programski Jezik C Uvod
19/35
Varijable, tipovi podataka,
konstante Osnovni format deklarisanja varijabli je
tip podatka var1, var2, ... ;
gdje je tip podataka jedan od četiri
osnovna tipa podataka: integer (ceobroj), character (jedan bajt, može čuvati
jedan znak iz lokalnog skupa znakova),
float (broj sa pokretnim zarezom jednostruke tačnosti) ili double (broj sapokretnim zarezom dvostruke tačnosti).
8/19/2019 Programski Jezik C Uvod
20/35
Varijable, tipovi podataka,
konstante Imena varijabli moraju započinjati slovom
ili znakom _, a nakon toga bilo kakvomkombinacijom slova, znaka _,
ili cifara 0 - 9. Primeri dozvoljenih imena varijabli:
zbroj izlazna_zastavica i
Jerry7 Broj_poteza _važeća_zastavica
8/19/2019 Programski Jezik C Uvod
21/35
Varijable, tipovi podataka,
konstante Koristite imena sa značenjem za vaše
varijable. Razlozi za to su:
imena sa značenjem na prvi pogled
pokazuju šta varijabla radi lakša su za razumevanje nema povezanosti s korišćenjem prostora
u izvršnom kodu ( .EXE file ) čine program lakšim za čitanje
8/19/2019 Programski Jezik C Uvod
22/35
Varijable, tipovi podataka,
konstante Pogledajmo sada pobliže printf() funkciju.
Ima dva argumenta, odvojena zarezom.Pogledajmo prvi argument,
"Vrednost promenjive i je %d\n" Znak % je posebni znak u C-u. Koristi se
za ispis vrednosti varijable. Kad se
program izvršava, C ispisuje tekst dok ne naiđe na znak % .
8/19/2019 Programski Jezik C Uvod
23/35
Varijable, tipovi podataka,
konstante Kada naiđe, traži sledeći argument (u ovom
slučaju i), ispisuje njegovu vrednost, te nastavlja.
Znak d koji prati % označava da se očekuje
integer tip varijable. Tako, kada se naiđe na znak %d printf() funkcija
traži sledeći argument (u ovom slučaju varijablui, koja iznosi 2), i ispisuje ga. Znak \n se nakon
toga izvršava što znači da se kursor prebacuje unovi red.
8/19/2019 Programski Jezik C Uvod
24/35
Sledeći program ispisuje dve celobrojnevrednosti razdvojene tabulatorom:
To se postiže korišćenjem specijalnog znaka\t
#include
main(){
int sum, value;
sum = 10;value = 15;
printf("%d\t%d\n", sum, value);
}
8/19/2019 Programski Jezik C Uvod
25/35
Varijable, tipovi podataka,
konstante Ispis programa
10 15
8/19/2019 Programski Jezik C Uvod
26/35
Znakovi koji se nalaze iza \ znaka u printf() naredbi, imajusledeće značenje:
Modifikator Značenje
\b pomak za jedno mjesto u nazad
(backspace)
\f nova stranica (form feed)
\n novi red (new line)
\r povratak na početak linije (carriage return)
\t horizontalni tabulator (horizontal tab)
\v vertikalni tabulator (vertical tab)
\\ obrnuta kosa crta (backslash)
\" navodnici (double quote)
\' literal (single quote)
\ sledeća linija (line continuation)
\nnn nnn = oktalna vrednost znaka
\0xnn nn = heksadecimalna vrednost (samo neki
kompajleri)
8/19/2019 Programski Jezik C Uvod
27/35
Specifikatori formata za ispisvarijabli:
%d decimalni cjelobrojni (integer)
%c znak (character)
%s string ili niz znakova (character array)
%f realni brojevi s pokretnim zarezom
(float)
%e realni brojevi s pokretnim zarezomdvostruke tačnosti (double)
8/19/2019 Programski Jezik C Uvod
28/35
Tipovi podataka i konstante
Tip podatka označava način kodiranja ioperacije koje je dozvoljeno primeniti naprogramske varijable, čija je
vrednost smeštena u memoriji računara.Položaj varijable u memoriji naziva seadresa ili memorijska referenca
varijable.
8/19/2019 Programski Jezik C Uvod
29/35
Cjelobrojni decimalni
(INTEGER) U ovaj tip podataka spadaju pozitivni i
negativni celi brojevi. Takođe imamo iunsigned int (samo pozitivni celi
brojevi). Postoje i short int i long int celi brojevi.
Ključna reč za definisanje celog broja je:
int
8/19/2019 Programski Jezik C Uvod
30/35
Cjelobrojni decimalni
(INTEGER) Primer deklaracije i dodeljivanja vrednosti
integer varijable sum je,
int sum;
sum = 20;
8/19/2019 Programski Jezik C Uvod
31/35
Realni brojevi s pokretnim
zarezom (FLOATING POINT) Obuhvaćeni su i pozitivni i negativni realni
brojevi. Ključna reč za definisanje realnogbroja je,
float ime_varijable; Primer deklaracije i dodele vrednosti float
varijable money:
float money;money = 0.12;
8/19/2019 Programski Jezik C Uvod
32/35
Realni brojevi s eksponentom
(DOUBLE) To su brojevi zapisani u obliku realnog
dela x 10 na eksponent, pozitivni inegativni. Ključna reč koja se koristi
za definisanje double varijabli je,double
Primer:
double big;
big = 31.2E+7;
/* znači big=312000000 */
8/19/2019 Programski Jezik C Uvod
33/35
Znak (CHARACTER)
Ključna reč za deklarisanje znaka je char
Primer:
char letter;
letter = 'A';
Primetite da se pridruživanje znaka Avarijabli letter vrši stavljanjem znaka u
jednostruke navodnike. Varijabli
se može pridružiti samo jedan znak!
8/19/2019 Programski Jezik C Uvod
34/35
Primer programa koji pokazujeupotrebu svih tipova podataka
#include < stdio.h >main()
{
int sum;
float money;char letter;
double pi;
sum = 10; /* pridruživanje integer vrednosti */
money = 2.21; /* pridruživanje float vrednosti */
letter = 'A'; /* pridruživanje character vrednosti */
pi = 2.01E6; /* pridruživanje double vrednosti */
8/19/2019 Programski Jezik C Uvod
35/35
Primer programa koji pokazujeupotrebu svih tipova podataka
printf("vrednost sum = %d\n", sum );printf("vrednost money = %f\n", money );
printf("vrednost letter = %c\n", letter );
printf("vrednost pi = %e\n", pi );
}Ispis programa
vrednost sum = 10
vrednost money = 2.210000
vrednost letter = A
vrednost pi = 2.010000e+06