Click here to load reader

C++ programer: Lekcija 1 - programiranjeprogramiranje.yolasite.com/resources/C++ PRIRUCNIK.doc  · Web viewObjektno-orijentirano programiranje pokušava odgovoriti na te potrebe,

Embed Size (px)

Citation preview

C++ programer: Lekcija 1

C++ programer

Skripta Informatike kole Proanima

Lekcija 1 Uvod u C++

Danas emo nauiti:

Zato je C++ postao industrijski standard za razvoj softwarea

Korake potrebne za razvoj C++ programa

Kako unijeti, kompajlirati i povezati na prvi C++ program

Kratka povijest jezika C++

Programski jezici su proli kroz dramatinu evoluciju od vremena prvih elektronskih raunala koja su se koristila za proraune i razbijanje ifri za vrijeme Drugog svjetskog rata. U ranim danima, programeri su radili u najprimitivnijem programskom jeziku: strojnom jeziku. Te instrukcije su bile prikazane slijedom dugakih brojeva prikazanih nulama i jedinicama. Uskoro je razvijen assembler kako bi povezao teko pamtljive brojeve za svaku naredbu i asocirao ih sa engleskim rijeima, tzv. mnemonicima poput ADD ili MOV.

S vremenom, razvili su se vii programski jezici, poput BASICa i COBOLa, Ti jezici su omoguavali programerima da rade s neim to aproksimira rijei i reenice, npr. Let A = 100. Te instrukcije se prevode nazad u strojni jezik uz pomo programa koje nazivamo interpreteri i kompajleri. Interpreter prevodi program dok ga ita, pretvarajui programsku instrukciju, odnosno kod direktno u akcije. Kompajler prevodi kod u neku vrstu prijelaznog oblika, mjeanca izmeu strojnog jezika i jezika u kojem razvijamo program. Taj proces se zove kompajliranje i proizvodi objektni kod. Kompajler nakon toga obino poziva linker koji objektni kod pretvara u izvrnu datoteku, odnosno u program.

Programi

Obratite panju na to da se rije program koristi za dve potpuno razliite vrste datoteka. Programom nazivamo i na izvorni kod (engl. source kod), ali i izvrnu datoteku koja je nastala kao proces kompajliranja i linkanja izvrne datoteke.

Proceduralno, strukturirano i objektno-orjentirano programiranje

Do nedavno, programi su bili smatrani slijedom procedura koje vre zadane radnje nad podacima. Procedura, ili funkcija je kruto definiran slijed specifinih instrukcija. Sami podaci su bili potpuno odvojeni od procedura, i itav trik programiranja se sastoji u praenju koja funkcija je zvala koju i koji podaci su bili promjenjeni u tom procesu. Kako bi se unio nekakav red u potencijalno konfuznu situaciju, izmiljeno je strukturirano programiranje.

Osnovna ideja koja se krije iza pojma strukturiranog programiranja jest stara podjeli pa vladaj. Raunalni program je smatran nizom zadaa koje treba izvriti. Svaka zadaa koje je prekompleksna za jednostavan opis bi trebala biti razbijena u niz manjih zadataka, sve dok zadaci nisu zadovoljavajue mali ali i samodostatni u smislu da su takvi dijelovi koda lako razumljivi.

Kao primjer, raunanje prosjene plae svih uposlenika u tvrtci je prilino kompleksan zadatak. Moemo ga, meutim razbiti na podzadatke:

1.Saznati koliko svaka osoba zarauje.

2.Zbrojiti sve uposlene.

3.Zbrojiti sve plae.

4.Podijeliti sa brojem zaposlenih.

Zbrojiti sve plae moe biti rastavljeno na:

1.Uzimanje karton uposlenog.

2.Pristupiti podatku o iznosu plae

3.Dodati plau u ukupnu sumu.

4.Uzeti karton od slijedeeg zaposlenog.

Strukturirano programiranje ostaje enormno koristan i efikasan pristup za rjeavanje kompleksnih problema. U kasnim 1980im su se, svejedno, poeli otkrivati nedostaci takvog pristupa i s vremenom su postajali sve oitiji.

Prvo, potpuno je neprirodno razmiljati o naim podacima (npr., popis zaposlenih) i onome to moemo uiniti s njima (sortirati, ureivati, itd.) kao o odvojenim procesima.

Drugo, programeri su se esto nalazili u situaciji da trae rjeenja za stare probleme, ili kako mi volimo to rei, otkrivali su toplu vodu. Rodila se Ponovno upotrijebi (engl. reusability) ideja za stvaranjem komponenti koje imaju poznata svojstva, te o mogunosti da takve komponente jednostavno umeemo u na kod. To je uinjeno po analogiji hardwareskog svijeta. Kad vam se pokvari procesor u raunalu, jednostavno zamijenite procesor, ne morate ga projektirati, niti dobro poznavati njegovu internu arhitekturu kako bi on ipak bio u stanju obavljati svoju funkciju. U softwareskom svijetu se do tada takva analogija nije mogla povui.

Nadalje, staromodni programi su forsirali korisnika da prolazi kroz korak-po-korak seriju ekrana. Moderni dogaajem pokretani (engl. event driven) programi predstavljaju sve izbore odmah i reagiraju na odgovarajuu korisnikovu akciju.

Objektno-orijentirano programiranje pokuava odgovoriti na te potrebe, pruajui tehnike za upravljanje kompleksnim problemima, podravanjem ponovnog koritenja komponenti i grupiranjem podataka i zadacima koji manipuliraju tim podacima.

Sr objektno orijentiranog programiranja je u tretiranju podataka i procedura koje djeluju na podatke kao jednoga objekta, samodostatne jedinke koja ima vlastiti identitet i odreene karakteristike.

Razvojni ciklus

Da je svaki program kojeg ste ukucali ikad radio iz prve, to bi bio potpun razvojni ciklus. Ukucate program, kompajlirate ga, linkate i pokrenete izvrnu datoteku. Na alost, svaki program, ma kako trivijalan on bio, e najvjerovatnije sadravati odreene pogreke, odn. bugove. Neke pogreke e uzrokovati greke prilikom kompajliranja, neke tek prilikom linkanja, dok e se neke pojaviti tek u izvrnoj datoteci. Bilo kada da se to dogodi, bit e potrebno ukloniti pogreku iz koda, te ponovo kreirati izvrnu datoteku i pokrenuti ju. Razvojni ciklus je okvirno prikazan na slijedeoj shemi:

hello.cpp --- na prvi C++ program

1: #include

2:

3:

4: int main();

5: {

6: cout y;

12: cout y)

15: z = x;

16: else

17: z = y;

18:

19: cout itsLen)

100: return itsString[itsLen-1];

101: else

102: return itsString[offset];

103: }

104:

105: // constant offset operator for use

106: // on const objects (see copy constructor!)

107: char String::operator[](unsigned short offset) const

108: {

109: if (offset > itsLen)

110: return itsString[itsLen-1];

111: else

112: return itsString[offset];

113: }

114:

115: // creates a new string by adding current

116: // string to rhs

117: String String::operator+(const String& rhs)

118: {

119: unsigned short totalLen = itsLen + rhs.GetLen();

120: String temp(totalLen);

121: for (unsigned short i = 0; i fileName;

8:

9: ifstream fin(fileName);

10: if (fin) // already exists?

11: {

12: cout y)

x = y;

else // y > x || y == x

y = x;

2. Prouite slijedei program. Zamislite unoenje tri broja, i napiite kakav izlaz oekujete.

1: #include

2: int main()

3: { 4: int a, b, c;

5: cout a;

8: cout > b;

10: cout > c;

12:

13: if (c = (a-b))

14: {cout