Anda di halaman 1dari 90

Microsoft Visual C++ 2010

Uputstvo za upotrebu
i jednostavni primeri
Verzija: 11. 03. 2014.

Praktikum iz programiranja 2

Sadraj
Objedinjeno razvojno okruenje
Osobine C/C++ razvojnih okruenja
Detalji rada u MSVC
Primeri
Jednostavan C program
Sloeniji C primer
Kreiranje biblioteke
Zavrne napomene

Verzija: 11.03.2014.

2/90

Objedinjeno razvojno okruenje


Istorijat
Program i okruenje
Put do izvrnog programa
Struktura tipinog okruenja:
Editor izvornog programskog koda
Prevodilac (engl. compiler)
Poveziva (engl. linker)
Debager (engl. debugger)
Menader datoteka
Verzija: 11.03.2014.

3/90

Istorijat [1/2]
Rani programi su pripremani korienjem
buenih kartica ili magnetnih doboa
(1890 1975).
Tastatura je postala sredstvo za unos komandi
sa pojavom UNIX operativnih sistema,
korienim na prvim raunarima,
koji su imali silicijumske ipove (1970 - ).

Verzija: 11.03.2014.

4/90

Istorijat [2/2]
Sa rastom zahteva koje softver treba da ispuni
porasli su i zahtevi za uslovima koje razvojno
okruenje treba da obezbedi programerima.
To je dovelo do nastanka
objedinjenih razvojnih okruenja
(engl. Integrated Development Enviroment)
IDE jedinstven alat u kojem se
obavlja itav razvoj softvera.

Verzija: 11.03.2014.

5/90

Program i okruenje [1/2]


Program vie nije mogao biti razvijan
unutar samo jedne datoteke (engl. file).
Savremeni programi se sastoje od
veeg broja datoteka koje su
organizovane u projekat (engl. project).
Svrha projekta je da
informacije iz svih datoteka
budu lake meusobno dostupne.

Sabiranje.c

Test_program.c

Konstante.h

projekat
Verzija: 11.03.2014.

6/90

Program i okruenje [2/2]


Osnovne celine unutar projekta:
Datoteka (fajl, engl. file)
skup informacija ili izvornog koda koji je organizovan
(snimljen) kao jedna sistemska celina
Direktorijum (engl. folder) sadri vie datoteka i/ili
druge direktorijume, slui za njihovo organizovanje
Rad sa projektima se obavlja unutar IDE.

Verzija: 11.03.2014.

7/90

Put do izvrnog programa [1/3]

IDE omoguava da se itav proces razvoja programa,


od ideje do konanog rezultata (izvrni file),
obavi na jednom mestu.
Izvorni programski kod (engl. source code) je
skup naredbi napisan u nekom od programskih jezika.

Verzija: 11.03.2014.

8/90

Put do izvrnog programa [2/3]

Objektni kod (engl. object code) je mainski kod


generisan iz izvornog koda.
Objektni kod, iako je mainski kod,
ne moe se izvravati.

Verzija: 11.03.2014.

9/90

Put do izvrnog programa [3/3]

Izvrni fajl (engl. executable) je fajl


iji sadraj raunar interpretira kao program.
Izvrni fajl se moe pokretati samostalno, nezavisno od
okruenja u kojem je razvijan.
Sainjen je od binarnih informacija (0 i 1).
Kodirane informacije o naredbama koje treba izvriti
i adresama na kojima su podaci za te naredbe.
Raunar dekodira (interpretira) te informacije
i izvrava odgovarajue naredbe nad odgovarajuim podacima.

Verzija: 11.03.2014.

10/90

Editor izvornog programskog koda


Editor izvornog programskog koda je tekstualni editor
specijalno prilagoen za ureivanje izvornog koda,
olakava i ubrzava rad programera
svojim specijalnim funkcionalnostima.
I obini tekst editori (npr. "Notepad")
mogu se koristiti za ureivanje koda,
ali usled nedostatka
specijalnih funkcionalnosti
ne mogu se smatrati
"editorima izvornog programskog koda".

Verzija: 11.03.2014.

11/90

Specijalne funkcionalnosti [1/2]


Syntax highlighting delove izvornog koda
editor automatski prikazuje
u drugoj boji i/ili drugim fontom
u zavisnosti od
njihovog znaenja i konteksta.
Autocomplete na osnovu predvianja
editor omoguava programeru
da automatski, bez unoenja itave celine,
kompletira taj deo izvornog koda.

Verzija: 11.03.2014.

12/90

Specijalne funkcionalnosti [2/2]


Automatsko formatiranje koda
editor omoguava da
se vizuelno strukturira izvorni kod
na nain koji omoguava programeru
lake praenje istog (indentacija)
Izvetaji o grekama
u toku samog unoenja koda
editor prijavljuje bazine greke,
semantikog ili sintaksnog tipa.

Verzija: 11.03.2014.

13/90

Compiler (prevodilac)
U najirem smislu,
Compiler je alat koji prevodi tekst
napisan u nekom od programskih jezika
u drugi programski jezik.
Praktina upotreba je prevoenje
iz programskog jezika vieg
u jezik nieg nivoa,
najee u simboliki mainski jezik
(esto se pogreno naziva i assembler)
ili mainski jezik.

Verzija: 11.03.2014.

14/90

Linker [1/2]
Linker je alat
koji od jedne
ili vie datoteka
koje sadre
objektni kod
kreira jedinstveni
izvrni file ili biblioteku.
Ekstenzija u sistemu
izvrnog fajla je .exe,
od engl. executable.

Verzija: 11.03.2014.

15/90

Linker [2/2]
Rezultat rada linkera
ne mora biti executable,
ve i biblioteka.
Biblioteke (eng. library)
su skupovi potprograma.
Statike biblioteke ((lib))
se koriste u prevoenju
i njihov kod se
neposredno ugrauje
u izvrni program.
Dinamike biblioteke (dll)
se ne ugrauju
u izvrni program,
ali moraju biti dostupne
kada se program izvrava.
Verzija: 11.03.2014.

16/90

Debugger
Debugging metodiki proces
otkrivanja i eliminisanja greaka u programu.
Debugger pomae da se nae
mesto u kodu u kojem je uzrok greke
tako to pokazuje
kontekst izvravanja u svakom trenutku
i vrednosti relevantnih promenljivih.
Postoji vie naina
da se sprovede debugging postupak.

Verzija: 11.03.2014.

17/90

Menader datoteka
Savremena razvojna okruenja
vizuelno prikazuju strukturu projekta,
ukljuene direktorijume i datoteke.
Direktno iz menadera se datoteke
ukljuuju ili iskljuuju iz projekta.
Datoteke mogu biti
sistemske ili ih pie sam programer.
Iz menadera datoteka programer
odabira datoteku kojoj eli da menja sadraj,
ona se otvara u editoru
izvornog programskog koda.
Verzija: 11.03.2014.

18/90

Objedinjeno razvojno okruenje


Primeri:
Microsoft Visual Studio
Eclipse
Netbeans
CodeBlocks
CodeLite
Ecplise i Netbeans su primeri viejezinih okruenja i
jezik Java je podran u njima ali postoje dodaci za
C/C++, Python, Perl, PHP, Fortran, Cobol

Verzija: 11.03.2014.

19/90

Visual IDE
Stalno se poveava interesovanje inenjera za
vizuelnim programiranjem (visual programming) to je
dovelo do razvoja mnogih vizuelnih IDE
Vizuelno IDE omoguava korisnicima pravljenje
aplikacija razmetanjem grafikih elemenata na
ekranu i radom sa tim elementima, to je najee
bre od uobiajenog programiranja

Verzija: 11.03.2014.

20/90

Osobine C/C++ razvojnih okruenja


Rad sa projektima
Standardne biblioteke
Tok kreiranja programa

Verzija: 11.03.2014.

21/90

Rad sa projektima
Projekat sadri jednu ili vie datoteka
koje mogu biti sledeih tipova:
(.c, .cpp, .cxx, .cc, .C) source
sadri izvorni kod
(.h, .hpp, .hxx) header
sadri definicije funkcija
i tipove podataka koji se
nalaze u drugim datotekama
(.obj) object
Napomena:
kompajlirane datoteke
koje sadre objektni kod
.obj fajl

ne sadri objekte
Verzija: 11.03.2014.

22/90

Standardne biblioteke
Zbirke funkcija, konstanti, klasa i objekata
koje proiruju osnovnu funkcionalnost
C/C++ jezika i omoguavaju mu
komunikaciju sa operativnim sistemom
i korienje nekih standardnih algoritama
Biblioteke se koriste pomou zaglavlja,
koja se po potrebi zasebno ukljuuju
iz svakog fajla unutar projekta

Verzija: 11.03.2014.

23/90

Zaglavlja (C)
stdio.h
komunikacija sa I/O ureajima
stdlib.h
rad sa memorijom, konverzije podataka
time.h
rad sa datumima i vremenskim jedinicama
string.h
manipulacija stringovima (tekst)
math.h
matematike operacije
Verzija: 11.03.2014.

24/90

Tok kreiranja programa


Prvi source file
ukljuuje
i prvi i drugi header,
dok ostali ukljuuju
samo drugi.

Kada kreira .obj file


Compiler koristi odgovarajui
source file
i ukljuene headere.
Za svakl .cpp se kreira
pojedinani .obj.

Sve kreirane .obj


Linker povezuje u
jedinstven executable file
ili biblioteku.
Verzija: 11.03.2014.

25/90

Detalji rada u MSVC


Uvod u MSVC
Radni prostor
Kreiranje projekta
Dodavanje fajla u projekat
Unos koda
Palete sa alatkama (engl. toolbars)
Build meni
Pokretanje aplikacije
Korienje Debugger alata
Verzija: 11.03.2014.

26/90

Uvod u MSVC [1/2]


MSVC (Microsoft Visual C++) je IDE
za razvoj C/C++ aplikacija.
Visual C++ je deo paketa Visual Studio 2010, proizvoda
kompanije Microsoft
Visual Studio 2010 sadri mnoge komponente,
od kojih su najvanije:
Visual C++
Visual C#
Visual Basic

Besplatno dostupno na http://msdnaa.etf.rs


Vai studentski kredencijali za login
Verzija: 11.03.2014.

27/90

Uvod u MSVC [2/2]


Upoznavanje sa MSVC bie pokazano
kroz jednostavan primer koji
sabira dva broja i prikazuje poruku.
Preduslov za dalje
adekvatno praenje tutorijala
je instaliran MSVC 2010 sa SP1 na raunaru.

Verzija: 11.03.2014.

28/90

Prvo pokretanje VS2010


Pri prvom pokretanju, odabrati
Visual Studio for C++ development

Verzija: 11.03.2014.

29/90

Izgled Visual Studio


nakon startovanja

Verzija: 11.03.2014.

30/90

Radni prostor i solution


Radni prostor (engl. workspace)
je, u vizuelnom smislu,
povrina na kojoj se nalaze
svi prozori, meniji i opcije
razvojnog okruenja
Projekti su grupisani u okviru reenja
(engl. solution)
Jedno reenje moe sadrati
vei broj projekata

Verzija: 11.03.2014.

workspace
Solution1

Solution2

Project 11

Project 21

Project 12

Project 22

Project13

31/90

Kreiranje novog projekta

U meniju "File" izabrati podmeni "New i u njemu Project


Od ponuenih opcija u dijalogu odabrati "Win32 Console Application"
U "Location" odabrati putanju do direktorijuma gde e se nalaziti program
U Name" upisati ime projekta (u ovom primeru: "HelloProject")
Pritisnuti "OK".
U novonastalom dijalogu odabrati "An empty project"
Verzija: 11.03.2014.

32/90

Solution Explorer
Solution Explorer
omoguava pregled svih
projekata i fajlova
ukljuenih u jedan
solution.
Preko kontekstnog
menija je mogue obaviti
mnoge potrebne
operacije vezane za
projekte sadrane u
reenju.

Verzija: 11.03.2014.

33/90

Dodavanje fajla u projekat

U Solution Exploreru desni klik na projekat


(ili na folder Source Files) i u meniju Add izabrati New Item
Od ponuenih opcija u dijalogu odabrati
Code i C++ File (.cpp)
U polju Name" upisati ime fajla, obavezno sa ekstenzijom .c
(u ovom primeru "HelloWorld.c")
Pritisnuti Add"
Verzija: 11.03.2014.

34/90

Unos programskog koda


U Solution Exploreru rairiti folder
sa izvornim fajlovima (npr. "Source Files)
eljeni fajl (npr. fajl "HelloWorld.c")
dvostrukim klikom otvoriti za ureivanje
U editoru sa desne strane uneti kod
Snimiti fajl,
odabirom "Save" iz menija "File"
Napomena:
Opcija "Save All"
snima sve fajlove
otvorene unutar projekta.
Verzija: 11.03.2014.

35/90

Primer rada sa jednim fajlom

Verzija: 11.03.2014.

36/90

Palete sa alatkama (engl. toolbars)

Paleta sa alatkama (engl. toolbar) je


skup dugmadi prikazan kao blok.
Pozicija bilo koje palete sa alatkama nije fiksna,
mogue je preurediti ih po elji.
Ukoliko neki toolbar nije prikazan,
ukljuuje se odabirom opcije "Customize"
iz menija "Tools",
(izabere se kartica "Toolbars" i eljeni toolbar).
Verzija: 11.03.2014.

37/90

Build i Debug palete sa alatkama

Build (F7): prevodi sve datoteke u projektu


Compile (Ctrl+F7): prevodi samo trenutnu datoteku
Stop Build (Ctrl+Break): prekida prevoenje
Start Debugging (F5): pokree projekat-program
za kontrolisano izvravanje (debug reim)
Start Without Debugging (Ctrl+F5): pokree projekatprogram bez kontrole (IZBEGAVATI!)

Verzija: 11.03.2014.

38/90

Izgradnja izlaznih fajlova

Nakon pokretanja opcije "Build" pojavljuje se


tekst koji sadri izvetaj (engl. log) o izvrenim akcijama i
eventualnim pronaenim grekama u izvornom kodu
ili grekama prilikom povezivanja datoteka unutar projekta.
U ovom primeru log prikazuje da nije bilo greaka
(engl. errors) niti upozorenja (engl. warnings).
Verzija: 11.03.2014.

39/90

Pregled greaka u projektu

Mogue je dodati pregled greaka u kodu, izborom


opcije Error List iz menija View.
U dobijenoj kartici Error list prikazuju se sve
sintaksne greke i upozorenja u projektu.
Verzija: 11.03.2014.

40/90

Pokretanje aplikacije

Pokretanje primera "HelloWorld":


Provera da li je fajl snimljen
Build
Execute

Program se pokree u MS-DOS konzoli.


Program se moe samostalno pokretati,
pokretanjem fajla "HelloProject.exe".
Verzija: 11.03.2014.

41/90

Korienje Debugger alata [1/4]

1 Start: pokretanje programa u debug reimu


2 Stop Debugging: prekid debug reima
3 Step Into: ulazak u sledeu funkciju u liniji na koju pokazuje uta strelica,
odnosno izvravanje proste naredbe ako nema funkcije u pokazanoj liniji
4 Step Over: izvravanje linije na koju pokazuje uta strelica, bez ulaska u
funkciju (ako postoji)
5 Step Out: izvravanje tekue funkcije do kraja i izlazak u pozivajuu
funkciju
Verzija: 11.03.2014.

42/90

Korienje Debugger alata


Mogue su sledee akcije:
Praenje vrednosti promenljivih (Locals, Autos)
Praenje vrednosti izraza (Watch)
Praenje toka izvravanja programa (Stack Trace)
Privremeno zaustavljanje izvravanja na eljenim
mestima (Breakpoint)

Verzija: 11.03.2014.

43/90

Korienje Debugger alata [2/4]


U trenutku zaustavljanja programa
i aktiviranja Debugger alata prikazuju se
etiri dodatna prozora:
Watch, Autos, Locals i Call Stack.
Watch prikazuje vrednosti promenljivih koje
programer odabere i prebaci u listu za praenje
vrednosti (engl. watchlist);
promenljiva koja se prati
ne mora biti deo koda u kojem se aktivirao Debugger.
Mogue je pratiti i vrednosti proizvoljnih izraza

Verzija: 11.03.2014.

44/90

Korienje Debugger alata [3/4]


Autos prikazuje trenutni kontekst izvravanja, tj.
vrednosti svih promenljivih
koje su aktivne u tom delu koda.
Takoe se, prilikom debugging-a, prikazuje povratna
vrednost funkcije koja je pozvana

Locals prikazuje vrednosti


svih lokalnih promenljivih u datom trenutku.
Call Stack prikazuje redosled poziva
svih funkcija koje su pozvane
da bi se dolo do trenutne funkcije
(vie informacija ovde)
Verzija: 11.03.2014.

45/90

Korienje Debugger alata [4/4]


Dvostruki klik na funkciju u Call Stack
e prikazati kontekst vezan za tu funkciju
(izvorni kod u editoru programskog koda,
vrednosti lokalnih promenljivih u Locals)
Ako je funkcija izabrana u Call Stack
razliita od one u kojoj je zaustavljeno izvravanje
(u kojoj je uta strelica),
mesto dokle je program stigao
(sa gledita tekue funkcije)
je oznaeno zakrivljenom zelenom strelicom

Verzija: 11.03.2014.

46/90

Verzija: 11.03.2014.

47/90

Breakpoint [1/2]
Kursor se pozicionira
u liniji u kojoj elimo
da se program zaustavi.
Pritisne se
Toggle Breakpoint" dugme
iz Debug" menija (ili F9)
Ili pritiskom na levi taster
mia uz levu marginu koda
Uz levu marginu koda MSVC
dodaje marker
kako bi naznaio
da je tu taka prekida.
Verzija: 11.03.2014.

48/90

Breakpoint [2/2]
Program se pokree
pritiskom
Start Debigging
dugmeta
iz Debug" menija
(ili F5).
Program se izvrava
do nailaska
na taku prekida,
gde se zaustavlja.

Verzija: 11.03.2014.

49/90

Korienje "Step By Step" [1/2]

Program se pokree u debug reimu


pritiskom na Step Into dugme (1) iz Debug menija
(ili Ctrl+F10), ili pritiskom na Step Over dugme (2) (ili F10).
Step Into je izvravanje korak po korak.
sa ulaskom u kod funkcija koje se pozivaju,
gde se izvravanje identino nastavlja.
Verzija: 11.03.2014.

50/90

Korienje "Step By Step" [2/2]

Step Over je izvravanje korak po korak,


bez ulaska u kod pozivanih funkcija.
Step Out (3) izvrava do kraja
kod funkcije u kojoj se nalazi
i vraa se u funkciju koja ju je pozvala.
Verzija: 11.03.2014.

51/90

Razlike izmeu C i C-unutar-C++


Veliki broj C reenja je u C++
zamenjen drugim pristupom
Ipak, skoro sva C reenja je
mogue koristiti u C++ izvornom kodu
Iako se skoro cela sintaksa poklapa,
postoje manje razlike u onome to je u jeziku C++
nasleeno od jezika C
Navedene razlike su opisane ovde

Verzija: 11.03.2014.

52/90

Razlike izmeu C i C++ fajlova


U MSVC je mogue pisati
izvorni kod u sintaksi C jezika,
bez obzira na postojee razlike
izmeu C i C++.
Datoteke koje sadre C izvorni kod
imaju ekstenziju .c,
ali u MSVC mogu imati i ekstenziju .cpp
rezervisanu za datoteke
koje sadre C++ izvorni kod.
Podrazumevano:
.c = C
.cpp = C++
Verzija: 11.03.2014.

53/90

Prevoenje prema ekstenziji [1/2]


Podrazumevano, prevodilac bira jezik
kojim e prevesti fajl prema ekstenziji fajla (.c)
U VS 2010 moe se eksplicitno zadati nain kako da
prevodilac prevede dati projekat
Desnim klikom na projekat u Solution Explorer i
pritiskom na stavku Properties otvara se dijalog u
kome se bira stavka C/C++ i u njemu Advanced
Tada se u dijalogu moe izabrati jezik prevoenja
(Compile as C Code (/TC))

Verzija: 11.03.2014.

54/90

Prevoenje prema ekstenziji [2/2]

Verzija: 11.03.2014.

55/90

Intellisense
Intellisense je nain na koji
je u VS ostvarena
autocomplete
funkcionalnost.
To je nain da se
lake pristupi
imenima identifikatora,
opisima funkcija i njihovim
listama argumenata.
Koristi se tako to se
zapone sa unosom naziva
identifikatora, a aktivira se
kombinacijom CTRL+space.
Verzija: 11.03.2014.

56/90

Dodavanje projekta u postojei solution


Kreirati projekat u okviru postojeeg solution-a:
desni klik na solution, i u meniju Add odabrati opciju
Project i kompletirati kreiranje projekta.

Verzija: 11.03.2014.

57/90

Jednostavan C program
C primer, koji e biti pokazan, sastoji se samo od
jedne izvorne datoteke.
Program zahteva od korisnika da unese 3 elementa
niza a zatim taj niz ispisuje.

Verzija: 11.03.2014.

58/90

Prikaz rada sa jednostavnim C programom

Verzija: 11.03.2014.

59/90

Pokretanje projekta
Da bi se odreeni projekat iz solutiona pokrenuo
putem debug toolbar-a, potrebno je oznaiti ga kao
startUp project solutiona kome pripada.
Desni klik na projekat,
odabir stavke Set as StartUpProject.

StartUp projekat
se raspoznaje po
blodovanom
nazivu unutar
solution
exloprer-a
Verzija: 11.03.2014.

60/90

Pretprocesor [1/2]
Pretprocesor jezika C je deo prevodioca koji vri
pripremnu obradu izvornog teksta programa tj.
vri razne transformacije teksta kojima se stvara
konani oblik teksta koji treba da bude preveden.
Na ovaj nain programeru je omogueno da
uslovno prevodi neki kod,
definie tzv. simbolike konstante i makroe,
da specificira poruke za greke u vreme prevoenja i
jo mnogo toga.

Verzija: 11.03.2014.

61/90

Pretprocesor [2/2]
Radom pretprocesora upravlja se specijalnim
naredbama koje se nazivaju direktive pretprocesora.
Direktive pretprocesora piu se u zasebnim linijama i
poinju zankom #.

Verzija: 11.03.2014.

62/90

Direktive define i undef [1/2]


Pretprocesorskim direktivama omogueno je da se svaka pojava
nekog indentifikatora u kodu zameni nizom leksikih simbola.
Definisanje identifikatora omogueno je direktivom #define.
Posle direktive #define navodi se ime identifikatora
(po pravilu se ime zadaje velikim slovima) i niz leksikih simbola
kojima pretprocesor posle ove direktive menja svako pojavljivanje
definisanog identifikatora.
#define PI 3.14
main() {
double P, O, r=2;
P = r*r*PI;
precompiler
O = 2*r*PI;
Izvri tekstualnu zamenu
}
svakog pojavljivanja identifikatora PI
simbolima koji su zadati u #define
Verzija: 11.03.2014.

main() {
double P, O, r=2;
P = r*r*3.14;
compiler
O = 2*r*3.14;
Prevodi izmenjeni kod,
}
ne znajui nita o identifikatoru PI
(uklonjen je)
63/90

Direktive define i undef [2/2]


Direktivom #undef se uklanja trenutna definicija
identifikatora.
Obino se direktive #define i #undef uparuju da se
da bi se kreirao odreeni deo koda programa u kome
definisani identifikator ima neko posebno znaenje.
Ukoliko u direktivi #define nakon imena
identifikatora nije naveden simbol tada se takav
identifikator zamenjuje praznim tekstom.

Verzija: 11.03.2014.

64/90

Uslovno prevoenje [1/2]


Generalna ideja uslovnog prevoenja je
da se delovi koda mogu selektivno prevoditi
u zavisnosti od toga da li je odreeni identifikator
definisan ili ne.
Uslovno prevoenje poinje direktivama
#if, #ifdef i #ifndef.
Iza direktive #if se navodi konstantni izraz
ako je taj izraz istinit, redovi izvornog koda
do sledee uslovne direktive se prevode
u suprotnom se ne prevode.
Verzija: 11.03.2014.

65/90

Uslovno prevoenje [2/2]


Uslovno prevoenje vrlo esto zavisi samo od
postojanja ili ne postojanja nekog identifikatora.
U tim sluajevima se koriste direktive
#ifdef i #ifndef (if defined, if not defined).
Posle poetka uslovnog prevoenja mogu se koristiti i
direktive #elif i #else.
Uslovno prevoenje se zavrava direktivom #endif.

Verzija: 11.03.2014.

66/90

Uslovno prevoenje

Ukoliko se pretprocesoru definie identifikator _MNOZENJE_


prevodilac e prevesti i poziv funkcije pomnozi().
U suprotnom deo koda koji se nalazi izmeu direktiva #ifdef
i #endif nee biti preveden.

Verzija: 11.03.2014.

67/90

Spreavanje viestrukog prevoenja [1/2]


Viesturko prevoenje jedne datoteke zaglavlja moe
se spreiti uslovnim prevoenjem ako se na poetku te
datoteke definie identifikator sa imenom koje
odgovara imenu fajla.
Na primer u datoteci akcije.h spreavanje viestrukog
prevoenja postie se ako se kod obavije direktivama:
#ifndef _akcije_h_
/* ako _akcije_h_ nije vec definisano,
naredni redovi se prevode. U suprotnom ne
*/
#define _akcije_h_
#endif
Verzija: 11.03.2014.

68/90

Spreavanje viestrukog prevoenja [2/2]

Verzija: 11.03.2014.

69/90

Definisanje identifikatora pretprocesora


[1/2]
U VS pretprocesoru se mogu definisati identifikatori
koje on koristi u uslovnom prevoenju
Ne definiu se u fajlovima izvornog koda,
ve u samom IDE
To se ostvaruje dijalogu do koga se dolazi desnim
klikom na projekat u Solution Explorer. Zatim se biraju
Properties, Configuration Properties, C/C++,
Preprocessor, redom.
U Pretprocesor Definitions upisuje se ime
identifikatora koji se koristi u uslovnom prevoenju.

Verzija: 11.03.2014.

70/90

Definisanje identifikatora pretprocesora [1/2]

Verzija: 11.03.2014.

71/90

Jedno podeavanje VS okruenja [1/2]


Visual Studio okruenje ima specifino ponaanje da
upozori korisnika da koristi potencijalno opasnu
funkciju
(npr. prilikom korienja C funkcija scanf() i
printf())
Upozorenja ovog tipa mogu se iskljuiti tako to se u
definicije pretprocesora dodaje simbol
_CRT_SECURE_NO_WARNINGS.

Verzija: 11.03.2014.

72/90

Jedno podeavanje VS okruenja [2/2]

Verzija: 11.03.2014.

73/90

Sloeniji C primer [1/4]


Projekat "c_slozeniji_primer",
koji se nalazi uz tutorijal,
sadri 4 fajla
sa izvornim kodom
(3 source i 1 header).
U direktorijumu projekta
nalaze se i fajlovi
koje MSVC
automatski kreira, najbitniji
su:
.vcproj fajl koji sadri
podeavanja projekta
.sln fajl koji sadri
podeavanja za Solution

Verzija: 11.03.2014.

74/90

Sloeniji C primer [2/4]


U header fajlu akcije.h
nalaze se definicije funkcija
koje sadre source fajlovi
obrada.c i ulaz-izlaz.c.
Header fajl moe da sadri
i definicije simbolikih konstanti.

Verzija: 11.03.2014.

75/90

Sloeniji C primer [3/4]


Izvravanje programa
e krenuti od take u programskom kodu
gde se nalazi main funkcija.
Tok programa:
Naredbom #include "akcije.h"
fajlu c_primer.c
je omogueno korienje prototipova(zaglavlja) funkcija
ispisi, ucitaj, saberi i pomnozi.
Na kraju program u zavisnosti do toga da li je definisan
identifikator _MNOZENJE_ u definicijama pretprocesora
ispisuje vrednost:
rezultat = y * (x + y) ili rezultat = x + y.
Verzija: 11.03.2014.

76/90

Sloeniji C primer [4/4]

Podeavanja argumenata komandne linije


vri se u dijalogu "Property Pages"
(meni Project, pa opcija Properties).
Podaci uneti u kontroli Command Arguments"
e biti prosleeni glavnom programu
kao argumenti komandne linije
Verzija: 11.03.2014.

77/90

Kreiranje biblioteke [1/2]


Za izradu statike bibloteke (.lib fajl)
koriste se source fajlovi
iz projekta "C primer".
Statike biblioteke imaju namenu da se
esto koriene operacije i strukture podataka
mogu lake koristiti za druge projekte,
bez potrebe da se poseduje izvorni kd.
Neophodno je da projekti koji koriste biblioteke imaju
dostupne odgovarajue .h fajlove tih biblioteka,
koji opisuju funkcije i tipove koje te biblioteke pruaju.

Verzija: 11.03.2014.

78/90

Kreiranje biblioteke [2/2]

Dvoklikom na fajl c_primer.sln otvara se


solution koji sadri projekat "C primer".
Desni klik na projekat i u meniu Add dodati novi projekat
U polje "Project name" upisati "c_biblioteka"
U dijalogu odabrati opciju "Static Library".
Na taj nain u postojei solution bie dodat novi projekat.
Verzija: 11.03.2014.

79/90

Dodavanje fajlova u biblioteku [1/2]


Desnim klikom
na folder "Source Files"
u okviru projekta
"c_biblioteka",
otvara se meni
gde se odabira opcija
"Add i izabere se opcija
Existing Item.
Lociraju se fajlovi
obrada.c i
ulaz-izlaz.c,
dodaju se klikom na "OK".
Verzija: 11.03.2014.

80/90

Dodavanje fajlova u biblioteku [2/2]


Na identian nain dodaje
se
u folder "Header Files"
fajl akcije.h.
Header fajl
je neophodan
kako bi se biblioteka mogla
koristiti
u drugim projektima.

Verzija: 11.03.2014.

81/90

Kreiranje lib fajla


Iz menija "Build" odabere se opcija
"Build c_biblioteka.lib" (ili F7).
Rezultat je fajl c_biblioteka.lib,
koji se nalazi u direktorijumu
C_slozeniji_primer\Debug\ ili
C_slozeniji_primer\c_biblioteka\Release\,
zavisno od aktivne konfiguracije projekta
(podeava se u Project Settings).

Verzija: 11.03.2014.

82/90

Korienje .lib fajla [1/3]


Da bi se statika biblioteka mogla koristiti iz drugog
projekta, neophodno je podesiti konfiguraciju linkera
(povezivaa) tako da tu biblioteku koristi.
Neophodno je podesiti
Dodatne direktorijume sa bibliotekama
(Additional Library Directories)
Sadre biblioteke koje se mogu a ne moraju koristiti u projektu

Spisak biblioteka koje e biti koriene u projektu


(Additional Dependencies)
Biblioteke (.lib fajlovi) se nalaze u nekom od Library Directories

Ukoliko se pratei .h fajl ne nalazi u projektu, trebalo bi


podesiti i dodatne direktorijume sa fajlovima zaglavlja
(Additional Include Directories)
Verzija: 11.03.2014.

83/90

Korienje .lib fajla [2/3]

Dodavanje biblioteka u projekat: u podeavanjima projekta odabrati


Linker, General, Additional Library Dependencies (odabrati <Edit>),
odabrati ikonu novog foldera, potom dugme ,
a zatim odabrati direktorijum u kome se nalazi .lib fajl (proveriti preko Explorer-a).
Verzija: 11.03.2014.

84/90

Korienje .lib fajla [3/3]

Uneti naziv .lib fajla

Upotreba biblioteke u projektu: u podeavanjima projekta odabrati


Linker, Input, Additional Dependencies (opcija <Edit>),
a potom uneti naziv biblioteke (c_biblioteka.lib).
Verzija: 11.03.2014.

85/90

Praktina primena MSVC


Danas je MSVC jedan od
najkorienijih alata za
razvoj komercijalnih aplikacija.
Operativni sistem "Microsoft Windows"
je dobrim delom razvijen u MSVC.

Verzija: 11.03.2014.

86/90

Aplikacije razvijene u MSVC

Verzija: 11.03.2014.

87/90

Dalje uenje
Sve domae izdavake kue
(Mikro knjiga, Kompjuter biblioteka...)
imaju u svojoj ponudi
knjige za osnovne i naprednije kurseve
uenja C/C++ jezika.
Na Internetu se nalazi
veliki broj tutorijala i
besplatnih knjiga u elektronskom formatu.
Neki od linkova:
link 1
link 2
Verzija: 11.03.2014.

88/90

Internet zajednice
Saveti i reenja za svoje probleme
se mogu pronai i u Internet zajednicama.
Zajednice su organizovane
ili kao forumi ili kao mailing liste.
U prvom sluaju poruke
ostaju zapisane na Internet stranama,
dok u drugom stiu na mail uesnicima.
Neki forumi:
EliteSecurity, domai forum o informatici
Go4expert
Dev Articles
Verzija: 11.03.2014.

89/90

Citat
Proces stvaranja programa za kompjutere
je izuzetno atraktivan,
ne samo zbog svoje
ekonomske i naune isplativosti,
ve i zato to moe biti umetniko iskustvo nalik
komponovanju poezije ili muzike.
- Donald Knuth

Verzija: 11.03.2014.

90/90

Anda mungkin juga menyukai