1 / 114

Tipovi podataka

Tipovi podataka. *. Elementarni tipovi podataka. *. char (1). byte. Obuhvaća brojeve od - 12 8 do 12 7. *. short int (2). byte. byte. Obuhvaća brojeve od -32768 do 32767. *. int/long int (4). byte. byte. byte. byte. Obuhvaća brojeve od -2147483648 do 2147483647. *.

paley
Télécharger la présentation

Tipovi podataka

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Tipovi podataka *

  2. Elementarni tipovi podataka *

  3. char (1) byte Obuhvaća brojeve od-128 do127 *

  4. short int (2) byte byte Obuhvaća brojeve od-32768 do 32767 *

  5. int/long int (4) byte byte byte byte Obuhvaća brojeve od-2147483648 do 2147483647 *

  6. float (4) byte byte byte byte Obuhvaća brojeve od-3.4*1038 do -3.4*10-38i3.4*10-38do 3.4*1038.Zajamčena točnost: 7 decimala *

  7. double (8) byte byte byte byte byte byte byte byte Obuhvaća brojeve od-1.7 *10308do -1.7 *10-308i1.7 *10-308 do 1.7 *10308Zajamčena točnost: 15 decimala *

  8. long double (12) byte byte byte byte byte byte byte byte byte byte byte byte Obuhvaća brojeve od-1.1*104932 do -3.4*10-4932i3.4*10-4932 do 1.1*104932Zajamčena točnost: 18 decimala *

  9. cout << “Veličina cijelih brojeva: “ << sizeof (int); cout <<“Veličina realnih brojeva: “<< sizeof (float); float a = 2.51;cout << Veličina a: ”<< sizeof(a); Napomena:Duljina i opseg memorijskog prostora koje zauzimaju pojedini tipovi podataka u C++ nisu standardizirani! Podaci za cjelobrojne tipove mogu se naći u datoteci limits, a za realne u cfloat. Veličina pojedinih tipova(sizeof) *

  10. Brojevi bez predznaka(unsigned)

  11. unsigned short int i = 50000; Kako je to moguće, ako se zna da jeSHRT_MAX = 215 - 1 = 32767? Jednostavno! Krajnji lijevi bitu kojem se inače nalazi predznak, koristi se za broj: USHRT_MAX = 216 - 1 = 65535 Ali, broj ne smije biti negativan!!! *

  12. #include <iostream> #include <limits> using namespace std; int main() { cout << "Granicne vrijednosti cjelobrojnih tipova" << "podataka" << endl << endl; cout << "short: " << SHRT_MIN << "-" << SHRT_MAX << endl; cout << "unsigned short: " << 0 << "-" << USHRT_MAX << endl; cout << "long: " << LONG_MIN << "-" << LONG_MAX << endl; Doseg cjelobrojnih tipova *

  13. cout << "unsigned long: " << 0 << "-" << ULONG_MAX << endl; cout << "int: " << INT_MIN << "-" << INT_MAX << endl; cout << "unsigned int: " << 0 << "-" << UINT_MAX << endl; cout << "char: " << SCHAR_MIN << "-" << SCHAR_MAX << endl; cout << "unsigned char: " << 0 << "-" << UCHAR_MAX << endl; return 0; } Doseg cjelobrojnih tipova *

  14. #include <iostream> #include <cfloat> #include <iomanip> using namespace std; int main() { cout << "Granicne vrijednosti decimalnih tipova" << "podataka" << endl << endl; long double a=LDBL_MAX; cout << "float: " << setprecision(FLT_DIG) << -FLT_MAX << "-" << FLT_MAX << " , " << endl << " " << -FLT_MIN << "-" << FLT_MIN << endl << " mantisa: " << FLT_MANT_DIG << " bita" << endl << endl; Doseg decimalnih tipova *

  15. cout << "double: " << setprecision(DBL_DIG) << -DBL_MAX << "-" << DBL_MAX << " , " << endl << " " << -DBL_MIN << "-" << DBL_MIN << endl << " mantisa: " << DBL_MANT_DIG << " bita" << endl; return 0; } Doseg decimalnih tipova *

  16. Pobrojenja *

  17. Pobrojenja(enumerated types) enum dani {ponedjeljak, utorak, srijeda, cetvrtak, petak, subota, nedjelja}; Ovom deklaracijom uvodi se novi tip podataka (dani), te sedam nepromjenjivih identifikatora (ponedjeljak, utorak,...) toga tipa. Vrijednost prvog identifikatora biti će 0, drugog 1, itd.: dani HvalaBoguDanasJe = petak;dani ZakajJaNeVolim = ponedjeljak;cout<<HvalaBoguDanasJe<<endl; // ispisuje 4 *

  18. Operatori, operacije, operandi, izrazi

  19. operand operand operacija c=(a + b) izraz c=(a + b) operator *

  20. Operator je znak ili riječ koja određuje vrstu operacije. Operacija je postupak koji želimo izvršiti. Operand je podatak koji sudjeluje u operaciji. Izraz je sažeta uputa računalu, odnosno prikaz operacije koju želimo izvršiti s pomoću operanada (faktora). Definicije *

  21. Aritmetičkioperatori *

  22. unarni operatori • predznaci +X unarni plus -X unarni minus • inkremencija X++ uvećaj nakon ++X uvećaj prije • dekremencija X-- umanji nakon --X umanji prije Unarni su oni operatori koji se upotrebljavaju u kombinaciji sa samo jednim operandom. *

  23. prefiks operatori ++X uvećaj prije --X umanji prije primjer: int i=1; cout<<(++i)<<endl; // ispisuje 2 int i=1; i=i+1; out<<i<<endl; // ispisuje 2 Daje isti rezultat *

  24. postfiks operatori X ++ uvećaj nakon X -- umanji nakon primjer:int i=1;cout<<(i++)<<endl;// ispisuje 1, pa tek// onda povećava ’i’ int i=1;cout<<i<<endl;// ispisuje 1 i=i+1; Daje isti rezultat *

  25. binarni operatori • zbrajanje X + Y • oduzimanje X - Y • množenje X * Y • dijeljenje X / Y • modulo*X % Y • * Ostatak od cjelobrojnog dijeljenja Binarni su oni operatori koji se upoterbljavaju u kombinaciji s dva operanda. *

  26. operator dodjele tipa Želimo podijeliti dvije cjelobrojne varijable, a da rezultat bude realni broj: Deklaracija i definicija varijabli:int Brojnik = 1; int Nazivnik = 3; Ovo nije u redu:float Krivo = Brojnik / Nazivnik; // ispisuje nulu!!! Ovo je OK:float TocniKvocijent = (float)Brojnik / (float)Nazivnik; I ovo:float TocniKvocijent = float(Brojnik) / float(Nazivnik); *

  27. Konstante *

  28. Kada se u kôdu pojavljuju brojčane konstante, prevoditelj ih pohranjuje u formatu nekog od osnovnih tipova. • S brojevima koji sadrže dec. točku ili slovo e, odnosno E, prevoditelj barata kao s podacima tipa double, dok sve ostale brojeve tretira kao int. Npr:cout<<(short) 10<<endl // short int cout<<(unsigned) 60000<<endl // unsigned int • Češće se za specificiranje konstanti koriste sufiksi - posebni znakovi za eksplicitno određivanje tipa brojčane konstante. *

  29. Djelovanje sufiksa na cjelobrojne konstante Broj ispred Sufiks Rezultirajući Primjersufiksa tip cijeli int 2468 L, llong int 645672L U, u unsigned int 65000U decimalni double 3.14 F, f float 1.234F L, l long double 1.602e-4583L *

  30. Simboličke konstante • umjestofloat Opseg = 2. * r * 3.14159265359; float Povrsina = r * r * 3.14159265359; double Oplosje = 4. * r * r * 3.14159265359; • može se pisaticonst double Pi = 3.14159265359; ili #define Pi = 3.14159265359; i onda float Opseg = 2. * r * Pi; float Povrsina = r * r * Pi; double Oplosje = 4. * r * r * Pi;ž *

  31. int NadmorskaVisinaVarazdina = 0255// odgovara dekadskom 173 Konstante koje započinju s0 (nula) interpretiraju se kaooktalne. Oktalne konstante *

  32. int ProsjGodisnjaTempZaVzd = 0xA// odgovara dekadskom broju 10 Konstante koje započinju s0x interpretiraju se kaoheksadecimalne Heksadecimalne konstante *

  33. Logički i relacijskioperatori *

  34. Logički tipovi podataka • bool ImamLiMnogoNovaca =false;bool JeLiVamDosadno = true; Tip podataka bool je zapravo pobrojenje: enum bool {false,true}; true = 1; false = 0; George Bool (1815-1864), engleski matematičar, utemeljitelj logičke algebre *

  35. Logički operatori ! x negacija (not) x && y konjunkcija (and - logičko ’i’) x || y disjunkcija (or - logičko ‘ili’) *

  36. ‘i’ tablica *

  37. ‘ili’ tablica *

  38. ‘ne’ tablica *

  39. Operatori uspoređivanja • x < y manje od • x <= y manje ili jednako • x > y veće od • x >= y veće ili jednako • x = = y jednako • x != y različito (nejednako) *

  40. Jednostavni logički izrazi a = = b operand 1(subjekt) relacija(odnos) operand 2(objekt) sud(tvrdnja) *

  41. Složeni logički izrazi logički operator 1 logičkioperator 2 (a < b) && (c = = d) || (e > f) jednostavnilog. izraz 2 jednostavnilog. izraz 3 jednostavnilog. izraz 1 sud(tvrdnja) * *

  42. Primjer 1. (a < b) && (c = = d) || (e > f) && 0 1 1 || 0 1 a = b = 1c = d = 2e = 4f = 3 1 *

  43. Primjer 2. (a < b) && ((c = = d) || (e > f)) || 0 1 1 && 0 1 a = b = 1c = d = 2e = 4f = 3 0 *

  44. Prioriteti ispitivanja (1) zagrade (2) jednostavni logički izrazi (3) negacije (4) konjunkcija (5) disjunkcija *

  45. Fakultet nagrađuje najboljeg studenta studijskim putovanjem u SAD. Kandidiraju studenti A i B. Nagrada je samo jedna, a dobiti će je bolji. Kriteriji: bolji je onaj koji ima veću prosječnu ocjenu (Po), ako su im prosječne ocjene jednake, bolji je onaj koji je položio više ispita (Bi), ako imaju iste prosječne ocjene i jednaki broj položenih ispita, bolji je onaj koji je ispite položio u manje pokušaja (Bp). Zadatak: postavite složeni logički izraz čijim će se ispitivanjem doznati tko će dobiti nagradu. Pretpostavka: ne može se dogoditi da svi kriteriji budu jednaki. Zadatak *

  46. if (PoA>PoB) || (PoA = = PoB) && (BiA > BiB) || (PoA = = PoB) && (BiA > BiB) && (BpA<BpB) cout << “A je bolji” << endl; else cout << “B je bolji” << endl; Rješenje Podaci za test (1) PoA=4.82 PoB=4.83 BiA=BiB=28 BpA=30 BpB=29 Podaci za test (2) PoA=PoB=4.83 BiA=28 BiB=27 BpA=30 BpB=29 Podaci za test (3) PoA=PoB=4.83 BiA=BiB=28 BpA=30 BpB=29 B B A *

  47. Bitovni operatori *

  48. Bitovni operatori • i komplement • i & n bitovni ‘i’ • i | n bitovni ‘ili’ • i ^ n isključivi ‘ili’ • i << n pomak u lijevo • i >> n pomak u desno *

  49. Komplement Postavlja 0 (nule) u 1 (jedan), a 1 (jedan) u 0 (nule): Primjer:00100101 = 11011010 00100101

  50. Komplement Postavlja 0 (nule) u 1 (jedan), a 1 (jedan) u 0 (nule): Primjer:00100101 = 11011010 10100101

More Related