Java, . . . ) razvijeni su kako bi se prevladali nedostaci asemblerskog jezika. Oni oslobaaju programera potrebe poznavanja arhitekture raunara, omoguavaju prenosivost programa izmeu raunara razliitih arhitektura te bre i jednostavnije programiranje. Uvod Programski jezik C je vii programski jezik opte namene. Razvio ga je Dennis Ritchie sedamdestih godina prolog veka u Bell Telephone Laboratories, Inc. Opis jezika prvi put je predstavljen u knjizi Brian W. Kernighan, Dennis M. Ritchie: The C Programming Language, Prentice-Hall, 1978. Tokom sedamdesetih i osamdesetih godina jezik se brzo irio te je American National Standard Institute (ANSI) pristupio njegovoj standardizaciji koja je dovrena 1989. godine. Uvod Sledei program je najmanji mogui program u C jeziku: main() { } Ne radi nita. Sledei program ipak neto radi: #include <stdio.h> main() { printf("TFMP\n"); } Ispis programa TFMP Uvod Za pisanje C-programa koriste se mala i velika slova, ali sve naredbe u C-u moraju biti napisane malim slovima. Poetak C programa oznaava se sa: main() deklaracija funkcije main Zagrade koje se nalaze nakon kljune rijei main oznaavaju da program ne prima nikakve argumente Uvod Dve zagrade, { i }, oznaavaju poetak i kraj delova programa. Svrha izraza #include <stdio.h> (standardna biblioteka za ulaz i izlaz podataka) je da omogui upotrebu printf funkcije za ispis. Tekst koji e ispisati printf() mora biti u navodnicima. Program ima samo jednu naredbu printf(TFMP\n"); Uvod printf() je zapravo funkcija u C-u koja se koristi za formatirani ispis varijabli i teksta. Tekst unutar navodnika " ", ispisuje se onako kako je zadano. Ipak postoje neki izuzetci - oznaavaju se znakovima: \ i % . Ovi znakovi su modifikatori. U naem primeru \ koji prethodi znaku n predstavlja oznaku prelaza u novi red. Uvod Tako program ispisuje TFMP i kursor se postavlja na poetak nove linije. Kao to emo kasnije videti, znak koji sledi iza znaka \ odreuje ta se ispisuje, tj. 8 praznih mesta (tab), prazan ekran, prazna linija itd. Sve naredbe u C-u zavravaju se taka- zarezom ; Pisanje, kompajliranje i izvravanje programa Pisanje koda Kod niz naredbi koje ine program Kod se pie u EDITOR-u koji generie tzv. ACSII file Napisanom kodu se mora dati neko ime sa ekstenzijom .C . Pisanje, kompajliranje i izvravanje programa Kompajliranje koda Prevoenje napisanih naredbi u tzv. objektni kod. Kompajliranje se vri pomou posebnog programa kompajlera (prevodioca) koji generie objektni kod (datoteka s nastavkom .OBJ) Povezivanje koda u izvrni program Povezivanje znai konano formiranje izvrnog programa. Povezivanje se vri pomou posebnog programa linkera (poveziva) koji generie izvrni kod (datoteka s nastavkom .EXE). Pisanje, kompajliranje i izvravanje programa Ispravljanje greaka Napisani program u svom izvornom kodu moe imati greaka koje prijavljuje kompajler ili linker. Ako kompajler ili linker jave neku greku, treba se vratiti korak ili dva nazad, ispraviti greke i ponoviti postupak. Ako kompajler i linker ne jave greke, program se moe izvriti (to ne znai da je i dobar). Pisanje, kompajliranje i izvravanje programa Izvravanje programa Konani program koji se dobije nakon to linker izvri svoj deo posla (ako ne javi neku greku) izvrava se ukucavanjem njegovog naziva. Traenje logikih greaka Ako program radi ali ne ispravno, treba potraiti logike greke u programu. To se obino radi s tzv. debuger programom koji izmeu ostalog omoguava izvravanje jedne po jedne naredbe i uvid u vrednost svih varijabli. Komentari Dodavanje komentara programu je poeljno. Komentari se u C programu mogu dodati unutar znakova /* */: /* ovo je komentar. */ Primetite da /* otvara polje komentara, a da ga */ zatvara. Komentari mogu obuhvatati vie linija. Meutim, ne mogu se gnezditi jedan unutar drugog. /* ovo je komentar. /* ovaj komentar je unutra */ pogreno */ U gornjem primeru, prva pojava znaka */ zatvara komentar za itavu liniju, to znai da se re pogreno interpretira kao C izraz ili varijabla, i u ovom primeru, generie greku. Komentari Zato se komentari koriste: dokumentovanje varijabli i njihovo korienje objanjavanje sloenih delova programa opis programa, autor, datum, promene, revizije itd. Osnovna struktura C programa C programi u osnovi imaju sledeu strukturu: /* ZAGLAVLJE */ /* Sadri ime programa, ime autora, broj revizije...*/ /* INCLUDE deo */ /* sadri #include izraze */ /* KONSTANTE I TIPOVI */ /* sadri tipove i #define izraze */ Osnovna struktura C programa /* GLOBALNE VARIJABLE */ /* ako postoje globalne varijable deklariu se ovde */ /* FUNKCIJE */ /* funkcije koje definie korisnik */ Osnovna struktura C programa /* main() */ int main() { } Pridravanje ove dobro definisane strukture uinit e vae programe lakim za itanje i modifikovanje . Varijable, tipovi podataka, konstante VARIJABLE Programski jezik C ima ETIRI osnovna tipa podataka.Varijable koje defie korisnik moraju biti deklarisane pre nego to e se koristiti u programu. C razlikuje mala i velika slova, tako da iako dve varijable imaju isto ime, u C-u se smatraju razliitim varijablama. sum , Sum Deklaracija varijabli vri se nakon otvorene zagrade main(), Primer: Prikaz ispisa vrednosti celobrojne promenjive koristei printf("%d") #include <stdio.h> main() { /* definisanje promenljive i sa dodeljivanjem vrednosti 2 */ int i = 2; /* ispis vrednosti */ printf("Vrednost promenjive i je %d\n",i); } Varijable, tipovi podataka, konstante Osnovni format deklarisanja varijabli je tip podatka var1, var2, ... ; gdje je tip podataka jedan od etiri osnovna tipa podataka: integer (ceo broj), character (jedan bajt, moe uvati jedan znak iz lokalnog skupa znakova), float (broj sa pokretnim zarezom jednostruke tanosti) ili double (broj sa pokretnim zarezom dvostruke tanosti). Varijable, tipovi podataka, konstante Imena varijabli moraju zapoinjati slovom ili znakom _, a nakon toga bilo kakvom kombinacijom slova, znaka _, ili cifara 0 - 9. Primeri dozvoljenih imena varijabli: zbroj izlazna_zastavica i Jerry7 Broj_poteza _vaea_zastavica Varijable, tipovi podataka, konstante Koristite imena sa znaenjem za vae varijable. Razlozi za to su: imena sa znaenjem na prvi pogled pokazuju ta varijabla radi laka su za razumevanje nema povezanosti s korienjem prostora u izvrnom kodu ( .EXE file ) ine program lakim za itanje Varijable, tipovi podataka, konstante Pogledajmo sada poblie 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 izvrava, C ispisuje tekst dok ne naie na znak % . Varijable, tipovi podataka, konstante Kada naie, trai sledei argument (u ovom sluaju i), ispisuje njegovu vrednost, te nastavlja. Znak d koji prati % oznaava da se oekuje integer tip varijable. Tako, kada se naie na znak %d printf() funkcija trai sledei argument (u ovom sluaju varijablu i, koja iznosi 2), i ispisuje ga. Znak \n se nakon toga izvrava to znai da se kursor prebacuje u novi red. Sledei program ispisuje dve celobrojne vrednosti razdvojene tabulatorom: To se postie korienjem specijalnog znaka \t #include <stdio.h> main() { int sum, value; sum = 10; value = 15; printf("%d\t%d\n", sum, value); } Varijable, tipovi podataka, konstante Ispis programa 10 15 Znakovi koji se nalaze iza \ znaka u printf() naredbi, imaju sledee znaenje: Modifikator Znaenje \b pomak za jedno mjesto u nazad (backspace) \f nova stranica (form feed) \n novi red (new line) \r povratak na poetak linije (carriage return) \t horizontalni tabulator (horizontal tab) \v vertikalni tabulator (vertical tab) \\ obrnuta kosa crta (backslash) \" navodnici (double quote) \' literal (single quote) \<enter> sledea linija (line continuation) \nnn nnn = oktalna vrednost znaka \0xnn nn = heksadecimalna vrednost (samo neki kompajleri) Specifikatori formata za ispis varijabli: %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 zarezom dvostruke tanosti (double) Tipovi podataka i konstante Tip podatka oznaava nain kodiranja i operacije koje je dozvoljeno primeniti na programske varijable, ija je vrednost smetena u memoriji raunara. Poloaj varijable u memoriji naziva se adresa ili memorijska referenca varijable. Cjelobrojni decimalni (INTEGER) U ovaj tip podataka spadaju pozitivni i negativni celi brojevi. Takoe imamo i unsigned int (samo pozitivni celi brojevi). Postoje i short int i long int celi brojevi. Kljuna re za definisanje celog broja je: int Cjelobrojni decimalni (INTEGER) Primer deklaracije i dodeljivanja vrednosti integer varijable sum je, int sum; sum = 20; Realni brojevi s pokretnim zarezom (FLOATING POINT) Obuhvaeni su i pozitivni i negativni realni brojevi. Kljuna re za definisanje realnog broja je, float ime_varijable; Primer deklaracije i dodele vrednosti float varijable money: float money; money = 0.12; Realni brojevi s eksponentom (DOUBLE) To su brojevi zapisani u obliku realnog dela x 10 na eksponent, pozitivni i negativni. Kljuna re koja se koristi za definisanje double varijabli je, double Primer: double big; big = 31.2E+7; /* znai big=312000000 */ Znak (CHARACTER) Kljuna re za deklarisanje znaka je char Primer: char letter; letter = 'A'; Primetite da se pridruivanje znaka A varijabli letter vri stavljanjem znaka u jednostruke navodnike.Varijabli se moe pridruiti samo jedan znak! Primer programa koji pokazuje upotrebu svih tipova podataka #include < stdio.h > main() { int sum; float money; char letter; double pi; sum = 10; /* pridruivanje integer vrednosti */ money = 2.21; /* pridruivanje float vrednosti */ letter = 'A'; /* pridruivanje character vrednosti */ pi = 2.01E6; /* pridruivanje double vrednosti */ Primer programa koji pokazuje upotrebu 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