C++ osnove

Download C++ osnove

Post on 22-Oct-2014

157 views

Category:

Documents

21 download

Embed Size (px)

TRANSCRIPT

<p>Podaci i varijable Program obrauje podatke smjetene u memoriji raunala. Raunalo za svaki podatak predvia i rezervira mjesto u memoriji. Mjesto u memoriji rezervirano za pohranu podatka naziva se varijabla. Svako rezervirano mjesto u memoriji ima svoju jedinstvenu memorijsku adresu. Memorijske adrese su vieznamenkasti binarni brojevi. Korisnicima je oznaavanje varijabli vieznamenkastim binarnim brojevima neprikladno, pa im se zato pridjeljuju simbolika imena. Simboliko ime je ime koje se sastoji od slova, brojaka i znaka podcrtavanja. Svaki put kad program naie na simboliko ime, povezuje ga s pripadajuom varijablom.</p> <p>Simboliko ime Simboliko ime (identifikator) odreuje korisnik potujui ova pravila: Pri oblikovanju imena smiju se rabiti slova engleske abecede, brojevi i znak podcrtavanja (_). Ime mora zapoeti slovom ili znakom podcrtavanja (_). Broj znakova u simbolikom imenu (duina) nije ogranien. Ne smije se rabiti razmak. Ne smiju se rabiti nai dijakritiki znakovi (, , , , ). Ne smiju se rabiti kljune rijei ili oznake operatora programskog jezika. Program razlikuje velika i mala slova, pa su, primjerice, SLOVA i slova dva razliita simbolika imena koja predstavljaju dvije razliite varijable. Ako se oblikuje ime sastavljeno od vie rijei, uobiajeno je rijei odvajati znakom podcrtavanja ili ih pisati spojeno tako da je svako prvo slovo u rijei veliko. Npr.: ime_ od_vise_rijeci ili ImeOdViseRijeci. Primjeri ispravnih simbolikih imena su npr.: Y, promjer_kruga, DatumUpisa, _kon1, Val23m1_X.</p> <p>Primjeri neispravnih simbolikih imena 1Y x[1] Datum Upisa goto broja1</p> <p>Razlog neispravnosti: Zapoinje brojem. Sadri znakove zagrada. Sadri razmak. Simboliko ime je kljuna rije. Sadri nae dijakritike znakove.</p> <p>Tipovi podataka Svakoj se varijabli osim simbolikog imena mora pridijeliti i oznaka tipa podatka koji e u nju biti pohranjen. Po oznaci tipa podatka raunalo "zna" koliko mjesta u memoriji treba predvidjeti, koji su rasponi vrijednosti te kakve su operacije s podatkom te vrste mogue. Razlikuju se osnovni i ostali tipovi podataka. U osnovne tipove podataka ubrajaju se: brojevi (cijeli i realni), znakovi logiki podaci (npr. true/false, da/ne, istina/la, 1/0) konstante.</p> <p>Cijeli brojevi Cijeli broj moe biti prikazan sa ili bez predznaka.</p> <p>Cijeli broj s predznakom Ako je podatak cijeli broj (engl. integer), njegova oznaka tipa je int. Varijabli oznaenoj s int moe se pridruiti samo cijeli broj. Za pohranu cijelog broja u memoriji predviena su 4 bajta (32 bita). Prvi je bit rezerviran za predznak, pa za 31 31 pohranu broja ostaje 31 bit. 31 bit omoguava pohranu brojeva iz raspona: [2 , 2 1] tj. od 2.147.483.648 do 2.147.483.647.</p> <p>Cijeli broj bez predznaka Kod cijelog broja bez predznaka bit predznaka vie nije potreban pa su na raspolaganju 32 bita za prikaz broja. Najvea vrijednost koju je mogue prikazati s 32 bita je dvostruko vea od one s 31 bitom pa se tako mogu 32 prikazati brojevi iz raspona [0, 2 1] tj. od 0 do 4.294.967.295. Ako se eli deklarirati cjelobrojna varijabla bez predznaka, potrebno je ispred oznake tipa podatka staviti kljunu rije unsigned. Primjeri deklaracije cjelobrojnih varijabli int x; int _kon1,d,Val23m1_X; unsigned int x;</p> <p>Realni brojevi</p> <p>Realni brojevi mogu se prikazati: s nepominom decimalnom tokom (engl. fixed point), s pominom decimalnom tokom (engl. floating point). Programski jezik C++ za odjeljivanje cjelobrojnog od decimalnog dijela broja rabi decimalnu toku a ne zarez.</p> <p>Prikaz realnog broja s pominom decimalnom tokom Prikaz realnog broja s pominom decimalnom tokom naziva se i eksponencijalni prikaz. Eksponencijalni prikaz broja je oblika: E M*10 . M oznaava dio broja koji se naziva mantisa, a zapisuje se tako da je prva znamenka razliita od nule lijevo od decimalne toke. E je eksponent kojim treba potencirati bazu 10.</p> <p>U programskom jeziku C++ realni brojevi se upisuju u obliku MeE, npr. 9.11e31. Slovo e moe biti zapisano kao malo ili veliko slovo. Praznine unutar zapisa broja nisu doputene (prazninu prevoditelj prihvaa kao kraj broja). Broj s nepominom decimalnom tokom 6.345 1236.345 0.000765 Broj s pominom decimalnom tokom 6.345e0 1.236345E+3 7.65e-4</p> <p>Podaci tipa float Ako je podatak realni broj, njegova oznaka tipa je float. Varijabli oznaenoj s float moe se pridruiti realni broj. Primjeri deklaracije realnih varijabli float x; float promjer_kruga, _kon1, Val23m1_X; Primjeri pridruivanja realnih brojeva varijablama tipa float x=4.78; y=9.11e-31; Za pohranu realnog broja u memoriji su predviena 4 bajta (32 bita). Omoguena je pohrana brojeva u rasponu: [od 3.4*1038</p> <p>do 1.4*10 ], [od 1.4*10</p> <p>-45</p> <p>-45</p> <p>do 3.4*10 ] i 0.</p> <p>38</p> <p>Kada se govori o tonosti u realnu se varijablu sprema 7 znamenki mantise. Ako se unese vie od sedam znamenki, prilikom prevoenja e biti zanemarene najmanje vrijedne decimalne znamenke (prema potrebi broj se zaokruuje). Tonost realne varijable x=1.23456; y=1.23456739; z=1.23456789; w=12345670.; v=0.00123456789; sprema se 1.23456 sprema se 1.234567 sprema se 1.234568 sprema se 1.234567e+7 0.001234568 Broj s pominom decimalnom tokom. Uneseno vie od 7 znamenki, zanemaruju se. Uneseno vie od 7 znamenki, zaokruenje. Broj se ne moe prikazati sa 7 znamenaka pa se prikazuje u eksponencijalnom prikazu. Prikazuje se 7 znamenki raunajui od prve razliite od 0.</p> <p>Treba uoiti razliku izmeu broja znamenki koje se spremaju i broja znamenki koje se prikazuju na zaslonu. Broj znamenaka prikaza na zaslonu se po potrebi moe podesiti odgovarajuom naredbom. Uobiajeno se realni brojevi prikazuju s najvie 6 znamenaka, raunajui od prve razliite od 0. Realne varijable vee tonosti Ako navedena tonost varijable tipa float ne zadovoljava ili ako se ele rabiti brojevi izvan zadanog raspona vrijednosti float varijable, mogu se upotrijebiti realne varijable vee tonosti. To su varijable tipa: double (eksponent 308, s tonou 15 decimalnih znamenki)</p> <p>long double (eksponent 4932, s tonou 18 decimalnih znamenki).</p> <p>Konstante U programima se esto rabe veliine ije se vrijednosti tijekom izvoenja programa ne smiju mijenjati. Takve se veliine nazivaju konstantama (npr. fizikalne ili matematike konstante). Kada se u kodu rabe brojevne konstante, pohranjuju se u obliku jednog od osnovnih brojevnih tipova podataka. Realne brojevne konstante postaju tipa double, a cjelobrojne tipa int.</p> <p>Brojevne konstante se mogu spremiti u rezervirana mjesta u memoriji. Takva rezervirana mjesta treba zatititi od moguih neeljenih promjena tijekom odvijanja programa. Za zatitu se koristi kljuna rije const koja se dodaje ispred oznake tipa podatka. Primjer deklaracije realne konstante const double pi = 3.14159265359;</p> <p>Ako se u programu pokua promijeniti vrijednost konstante, prilikom prevoenja e program prevoditelj (engl. compiler) javiti pogreku.</p> <p>Znakovi Ako je podatak znak, njegova oznaka tipa je char. Varijabli oznaenoj s char moe se pridruiti: jedan znak unutar jednostrukih navodnika ili ASCII vrijednost tog znaka (dekadska protuvrijednost).</p> <p>Primjer pridruivanja vrijednosti varijablama tipa char char slovo1='A'; char slovo2=65; Pridruen je znak oznaen jednostrukim navodnicima. Pridruen je dekadski ekvivalent ASCII znaka.</p> <p>U gornjem primjeru u varijable slovo1 i slovo2 e se u oba sluaja spremiti ista vrijednost, znak A i to u obliku broja koji predstavlja ASCII vrijednost znaka A. Programer moe birati nain pridruivanja koji mu je pogodniji. Za pohranu znaka u memoriji je predvien 1 bajt (8 bitova). 1 bajt omoguava pohranu jednog od 2 = 256 razliitih znakova.8</p> <p>Logiki podaci Logiki podaci su podaci koji mogu poprimiti samo jednu od dvije mogue vrijednosti. To su na primjer true/false, da/ne, istina/la, 1/0.</p> <p>Varijabla koja je pogodna za pohranu logikog podataka je tipa bool. Takav tip varijable moe poprimiti vrijednosti true (1) ili false (0). Pri ispisu se true pretvara u 1, a false u 0.</p> <p>Znakovni nizovi Za pohranu teksta (niza od jednog ili vie znakova) rabe se znakovni nizovi (engl. character strings). Za sada je dovoljno znati da se sadraj znakovnog niza koji se unosi izravno u programsku naredbu navodi unutar para dvostrukih navodnika. Primjer pohrane teksta "Ovo je znakovni niz" String Za lake baratanje znakovnim nizovima promjenjive duljine u standardnoj je biblioteci jezika C++ definiran tip podataka string. Tip podataka string "brine" o prostoru kojeg za znakovni niz treba predvidjeti u memoriji, te podrava funkcije i operacije vezane uz znakovne nizove. Kada se radi s varijablama tipa string, znakovni se nizovi mogu jednostavno pridruiti operatorom pridruivanja, dopuniti operatorom +, usporeivati operatorima usporeivanja i sl. Tip podataka string je definiran u biblioteci string koju treba ukljuiti pretprocesorskom naredbom #include (#include). Zadatak:</p> <p>Potrebno je unijeti ime, godinu roenja i tekuu godinu. Ne temelju tih podataka treba izraunati godine starosti. Ispis neka bude oblika:</p> <p>Upisi svoje ime: Upisi godinu svog rodjenja: Koja je godina sada? ..... ima .... godina.</p> <p>Rjeenje:</p> <p>#include #include using namespace std; int main() { int god, god1, god2; string ime; coutime; coutgod1; coutgod2; god=god2-god1; cout</p>