Programiranje 2 C Tipovi podataka i operatori 11
- Slides: 50
Programiranje 2 – C++ Tipovi podataka i operatori 11. 6. 2021. 12: 41 OOP P 2 1
Teme • • • Identifikatori Specijalni znakovi Ugrađeni tipovi podataka Operatori Konverzija tipova Simboličke konstante 11. 6. 2021. 12: 41 OOP P 2 2
Identifikatori • Identifikator je ime (promjenljive, konstante, klase, . . . ) • Identifikator može da bude sastavljen od slova engleskog alfabeta (A-Z, a-z), brojeva (0 -9) i donje crte (_) • Prvi znak mora da bude slovo ili donja crta • Identifikator ne smije da bude neka ključna riječ 11. 6. 2021. 12: 41 OOP P 2 3
Ključne riječi jezika C++ 11. 6. 2021. 12: 41 OOP P 2 3 OOP P 2 4
Imena (identifikatori) • Izbjegavati nazive koji počinju znakom (_) jer se tako obično označavaju sistemske promjenljive • Nazivi koji počinju velikim slovom po pravilu su rezervisani za klase, a oni koji počinju malim za promjenljive – nije dozvoljena primjena znakova (č, š, ž, ć i sl. ) u identifikatorima – ne postoji ograničenje u broju znakova identifikatora, ali ne treba pretjerivati • Mada main nije ključna reč, ponašati se kao da jeste 11. 6. 2021. 12: 41 OOP P 2 5
Ne postoji ograničenje u dužini identifikatora? ? Identifikatore: • Snjeguljica_i_7_patuljaka • Snjeguljica_i_sedam_patuljaka kompajler će (ukoliko prepoznaje samo prvih 14 znakova) interpretirati kao iste. Ako kompajler prepoznaje samo prvih 14 znakova 1 2 3 4 5 6 7 8 9 10 12 13 14 20 21 22 23 S n j e g u l j i c a _ i _ 7 _ p a t u l j a k a S n j e g u l j i c a _ i _ s e d a m _ p a t u 11. 6. 2021. 12: 41 11 15 16 OOP P 2 17 18 19 24 25 l 26 27 28 j a k a 6 29
Identifikatori • Jezik C++ razlikuje mala i velika slova (engl. case sensitive) – mali. Narodi. Velike. Ideje – Mali. Narodi. Velike. Ideje – mali. Narodi. VELIKEIDEJE • Primjeri loših imena: – 7 Up, Ana-Marija, Ana Marija – Snezana i 7 Patuljaka – Moja. Privatna. Promenljiva – _system 11. 6. 2021. 12: 41 OOP P 2 7
Specijalni znaci 11. 6. 2021. 12: 41 OOP P 2 8
Tipovi podataka • Tip objekta određuje i raspored bitova prema kojem je objekat sačuvan u memoriji • C++ nudi ugrađene tipove podataka koji odgovaraju: - cijelim brojevima, - realnim brojevima u pokretnom zarezu (floatingpoint) - logičkim vrijednostima • C++ omogućava konstruisanje mnogo složenijih tipova: nabrajanja, strukture i klase 11. 6. 2021. 12: 42 OOP P 2 9
Osnovni ugrađeni tipovi Tip char w_char int float double bool void 11. 6. 2021. 12: 42 Značenje Karakter ili znak Široki karakter, više od jednog bajta Cijeli broj Broj sa pomičnom tačkom Decimalni broj u dvostrukoj preciznosti Logička vrijednost Bez vrijednosti OOP P 2 1 0
Osnovni tipovi (2) • C++ dozvoljava proširivanje osnovnih tipova navođenjem modifikatora ispred naziva tipa podataka • Postoje 4 modifikatora tipa: - signed, - unsigned, - long, - short 11. 6. 2021. 12: 42 OOP P 2 11
Osnovni tipovi (3) Osnovni tipovi mogu biti: • char, signed char, unsigned char • int: – short, int, long – signed int, unsigned int • int: • float: – double, long double • void • nabrajanje (engl. enumerated) 11. 6. 2021. 12: 42 OOP P 2 12
Osnovni (ugrađeni) tipovi podataka 11. 6. 2021. 12: 42 OOP P 2 13
Opseg osnovnih tipova (ANSI/ISO standard) OOP P 2 11. 6. 2021. 12: 42 OOP P 2 14
header <cfloat> (float. h) • Karakteristike tipa broja sa pomičnom tačkom (engl. floating-point) • Zaglavlje cfloat opisuje karakteristike tipova sa pomičnom tačkom za određeni sistem i implemetaciju prevodioca. 11. 6. 2021. 12: 42 OOP P 2 15
header <climits> (limits. h) • Veličine osnovnih tipova 11. 6. 2021. 12: 42 OOP P 2 16
#include <iostream> Opseg vrijednosti #include <climits> osnovnih tipova #include <cfloat> int main() { using namespace std; → aktivira se imenik standardnih funkcija Najmanji int cout<<"Najmanji int-2147483648 "<<INT_MIN<<endl; Najveći int cout<<"Najveci int 2147483647 "<<INT_MAX<<endl; cout<<Najmanji "Najmanjilong-2147483648 "<<LONG_MIN<<endl; cout<<Najveci "Najvecilong 2147483647 "<<LONG_MAX<<endl; float 1. 17549 e-038 cout<<Najmanji "Najmanji float "<<FLT_MIN<<endl; cout<<Najveci "Najveciintint 1. 17549 e-038 "<<FLT_MIN<<endl; 2. 22507 e-308 cout<<Najmanji "Najmanjidouble "<<DBL_MIN<<endl; 1. 79769 e+308 cout<<Najveci "Najvećidouble "<<DBL_MAX<<endl; return 0; } 11. 6. 2021. 12: 42 OOP P 2 17
#include <iostream> Tipovi short, int, long int main() { using namespace std; cout << "The size of an int is: " << sizeof(int)<< " bytes. n"; cout << "The size of a short int is: " << sizeof(short)<<" bytes. n"; cout << "The size of a long int is: "<< sizeof(long) <<" bytes. n"; return 0; } The size of an int is: 4 bytes. The size of a short int is: 2 bytes. The size of a long int is: 4 bytes. 11. 6. 2021. 12: 42 OOP P 2 18
Osnovni (ugrađeni) tipovi podataka • Svi podaci i promjenljive u programu moraju biti definisanog tipa (C++ je “strogo tipiziran” jezik) • Svi osnovni tipovi su standardno označeni (signed) • Veličina nekog osnovnog tipa u bajtovima može se saznati primjenom operatora sizeof • Deklaracije promjenljivih se mogu nalaziti bilo gdje u programu ali prije prvog korištenja promjenljive • Promjenljiva se deklariše navođenjem imena i tipa: int vrijeme; 11. 6. 2021. 12: 42 OOP P 2 19
Primjer tipova podataka int i; → deklaracija promjenljive int j=1, k=2; → deklaracija i inicijalizacija promjenljive float f 1=3. 4, f 2=0. 0; double PI=3. 14; char a='a', nul='0'; 11. 6. 2021. 12: 42 OOP P 2 20
Tipovi int, float i double #include <iostream> using namespace std; int main() { cout<<(float)1/3<<endl; cout<<1/3. f<<endl; cout<<1/3<<endl; return 0; } Bez. f broj se interpretira kao int, 1/3 = (int)1/(int)3 => (int)0 umjesto da bude (float) 0. 333333. Ovdje. f kaže prevodiocu da interpretira literal kao float broj. 0. 333333 0 11. 6. 2021. 12: 42 OOP P 2 21
Tip char • Promjenljive tipa char sadrže 8 -bitne ASCII znakove, koji se navode pod apostrofima • Tip char se može koristiti i kao “mali” int opsega od -128 do +127 • Postoji i tip w_char (wide character) koji se koristi za Unikod (engl. Unicode) i internacionalizaciju char a = `a`; cout << a; 11. 6. 2021. 12: 42 OOP P 2 22
Tip string #include <iostream> #include <string> using namespace std; int main () { string mystring; mystring = "Ovo je string"; cout << mystring<<endl; return 0; Ovo je string } 11. 6. 2021. 12: 43 OOP P 2 23
Tip nabrajanja (engl. enumerated type) • Ideja za tip nabrajanja je kreiranje novih tipova podataka koji imaju ograničen broj vrijednosti • Takođe, ove vrijednosti su konstante, a ne brojevi. enum wind_directions_t {NO_WIND, NORTH_WIND, SOUTH_WIND, EAST_WIND, WEST_WIND}; • Imena konstanti trebaju biti dovoljna za poređenje vrijednosti. . . 11. 6. 2021. 12: 43 OOP P 2 24
Tip nabrajanja: Primjer #include <iostream> using namespace std; int main () { enum wind_directions_t {NO_WIND, NORTH_WIND, SOUTH_WIND, EAST_WIND, WEST_WIND}; wind_directions_t wind_direction = WEST_WIND; cout << static_cast<int>( wind_direction )<<endl; system ("pause"); Rezultat return 0; 4 } 11. 6. 2021. 12: 43 OOP P 2 25
Tip bool • C++ definiše dvije konstante, true i false • Bilo koja vrijednost različita od nule tumači se kao true, a vrijednost 0 tumači se kao false; – ovo svojstvo je naročito korisno u logičkim izrazima • Kada se koristi u izrazima koji nisu logički, važi obrnuto: true se konvertuje u 1, a false u 0 11. 6. 2021. 12: 43 OOP P 2 26
Tip bool (2) #include <iostream> int main() { using namespace std; bool b=false; cout<<"b je: " <<b<<endl; b=true; cout<<"b je: "<<b<<endl; return 0; b je: 0 } b je: 1 11. 6. 2021. 12: 43 OOP P 2 27
Komentari • Olakšavaju razumijevanje programa, ali nisu obavezni • Dvije kose crte označavaju jednolinijski komentar, koji se proteže od znaka // do kraja reda • Sve što počinje sa /* i završava sa */ je komentar 11. 6. 2021. 12: 43 OOP P 2 28
Promjenljive (varijable) • Osnovna jedinica za čuvanje podataka u programu • Mjesto u memoriji za zapis neke proste vrijednosti ili pokazivača na objekat • Naziva se promjenljiva zato što tokom izvršavanja programa to mjesto može da sadrži različite vrijednosti (istog tipa) 11. 6. 2021. 12: 43 OOP P 2 29
Promjenljive (2) • Svaka promjenljiva se mora deklarisati prije prve upotrebe, bilo gdje u programu • Deklaracija promjenljive: tip ime; tip ime = početna vrednost; • Promjenljiva sadrži vrijednost ili je pokazivač na objekat. • Ako sadrži vrijednost, ta vrijednost je literal (primitivni tip). • Dodjeljivanje početne vrijednosti zove se inicijalizacija • Definicija promjenljive podrazumjeva rezervisanje prostora za promjenljivu u memoriji 11. 6. 2021. 12: 43 OOP P 2 30
Konstante • Vrijednosti koje predstavljaju same sebe, tj. fiksne vrijednosti bilo kog tipa OOP P 2 11. 6. 2021. 12: 43 OOP P 2 31
Konstante (2) Konstante mogu biti literali i simbolične konstante. • Literalne konstante int b =25, • Simbolične konstante broj. Studenata = broj. Ucionica * 30; 11. 6. 2021. 12: 43 OOP P 2 32
Definisanje konstanti • Korišćenjem “#define” #define broj. Studenata 30; • Korišćenjem “const” const unsigned short broj. Studenata = 30; • Vrijednost konstante mora biti inicijalizovana tokom deklaracije 11. 6. 2021. 12: 43 OOP P 2 33
Konstante (3) • Heksadecimalne konstante počinju sa 0 x • Sve konstante koje počinju sa 0 prevodilac tretira kao oktalne brojeve int broj 1 = 0 x 0 C; //12 decimalno int broj 2= 010; //8 decimalno • Ako tip literala nije zadat, C++ kompajler standardno cijeloj vrijednosti dodjeljuje najmanji cjelobrojni tip u koji ona može da stane, dok su realne konstante standardno tipa double 11. 6. 2021. 12: 43 OOP P 2 34
Izrazi • Izraz je iskaz u programu koji sadrži operande (objekte, funkcije ili literale nekog tipa) i operacije nad tim operandima – generiše rezultat tačno definisanog tipa. – operacije se zadaju pomoću operatora ugrađenih u jezik. 11. 6. 2021. 12: 43 OOP P 2 35
Operatori • • • Operator dodjele Aritmetički operatori Relacioni i logički operatori Operator nabrajanja (razdvajanja) Operator sizeof 11. 6. 2021. 12: 43 OOP P 2 36
Operator dodjele vrijednost = izraz; • Moguća je i lančana dodjela int x, y, z; x=y=z=10, • Izraz tipa vrijednost = vrijednost + izraz može se napisati kao vrijednost += izraz; • Treba zapamtiti suštinsku razliku između jednostrukog znaka jednakosti (=) koji je simbol za dodjelu, i dvostrukog znaka jednakosti (==) koji je simbol za poređenje 11. 6. 2021. 12: 43 OOP P 2 37
Aritmetički operatori • Operator moduo (modulo) (%) može se primjenjivati isključivo na cjelobrojne promjenljive 11. 6. 2021. 12: 43 OOP P 2 38
Operacija dijeljenja • Da bi se izbjegle nedoumice oko tipa rezultata, preoručljivo je pisati floating point konstante sa tačkama, čak i kada nemaju decimalnih mijesta float rezultat = 3 / 4; //rezultat je nula. rezultat =3. / 4. ; //rezultat je 0. 75 11. 6. 2021. 12: 44 OOP P 2 39
Inkrement i dekrement • Ove operatore treba koristiti kad god je moguće (generišu efikasan kod) Primjer int brojac; brojac = 0; //sledeće tri naredbe su identične brojac = brojac +1; brojac++; ++brojac; 11. 6. 2021. 12: 44 OOP P 2 40
Inkrement i dekrement (2) • Razlikujemo prefiksnu (++i) i postfiksnu (i++) notaciju #include <iostream> int main() { using namespace std; int i=100; int j=++i; cout<<"t=0, j ="<<j<<endl; int k=100; j =k++; cout<<"t=1, j ="<<j<<endl; return 0; t=0, j =101 } t=1, j =100 11. 6. 2021. 12: 44 OOP P 2 41
Relacioni i logički operatori 11. 6. 2021. 12: 44 OOP P 2 42
Operator razdvajanja ili nabrajanja (, ) • Vrijednost niza izraza je ona koja je posljednja u nizu. #include <iostream> int main() { using namespace std; long l 1=1, l 2=2, l 3=3, l 4=4; l 4= (l 1=10, l 2=20, l 3=30); cout<<"l 4 = "<<l 4<<endl; return 0; } l 4 = 30 11. 6. 2021. 12: 44 OOP P 2 43
Operator sizeof #include <iostream> int main() • Prikazuje dužinu određenog tipa u bajtovima { using namespace std; cout << "The size of an int is: " << sizeof(int)<< " bytes. n"; cout << "The size of a short int is: " << sizeof(short)<<" bytes. n"; cout << "The size of a long int is: "<< sizeof(long) <<" bytes. n"; return 0; } The size of an int is: 4 bytes. The size of a short int is: 2 bytes. The size of a long int is: 4 bytes. 11. 6. 2021. 12: 44 OOP P 2 44
Prioritet operatora • Redosled izvršavanja operatora je definisan, ali se uvijek može izmjeniti pomoću zagrada • Dobra je navika stavljati zagrade i razmake uvijek kada postoji dilema o hijerarhiji operatora 11. 6. 2021. 12: 44 OOP P 2 45
Konverzija tipova u izrazima i dodjelama • Kada u izrazu dodjele učestvuju operatori različitih tipova, vrijednost desne strane (izraza) biće konvertovana u tip lijeve strane (tip promjenljive) • Kada u izrazu učestvuju operandi različitih tipova, svi se konvertuju u tip najvećeg operanda (tzv. unapređivanje tipa) 11. 6. 2021. 12: 44 OOP P 2 46
Konverzija tipova Prioritet operatora (konverzije) Tipovi operatora long double 11. 6. 2021. 12: 44 ↑ double ↑ float ↑ unsigned long ↑ unsigned int ↑ unsigned short ↑ unsigned char ↑ OOP P 2 char 47
Konverzija tipa: cast (static_cast) static_cast <tip> (izraz) ili (tip)izraz #include <iostream> int main() { using namespace std; float pi=3. 1415926; cout<<"Cijeli dio broja pi "<<static_cast<int>(pi) <<endl; cout<<"Cijeli dio broja pi "<<(int)pi<<endl; return 0; Cijeli dio broja pi 3 } Cijeli dio broja pi 3 11. 6. 2021. 12: 44 OOP P 2 48
Zaključak • • • Identifikator je ime (promjenljive, konstante, klase, . . . ): A-Z, az, 0 -9 i donja crta (_) Prvi znak identifikatora mora da bude slovo ili donja crta i ne smije da bude neka ključna riječ Tipovi podataka: char, w_char, int, float, double, bool, void Promjenljive (varijable) čuvaju mjesto u memoriji za zapis neke proste vrijednosti ili pokazivača na objekat Operatori: operator dodjele, aritmetički operatori, relacioni i logički operatori, operator nabrajanja (razdvajanja), operator sizeof Konverzija tipova: ako se u izrazu nađu operatori različitih tipova 11. 6. 2021. 12: 44 OOP P 2 49
Kraj prezentacije br. 2 HVALA NA PAŽNJI! 11. 6. 2021. 12: 44 OOP P 2 50
- Programiranje baza podataka
- Era dijagram
- Tipovi podataka c++
- Vrste baza podataka
- Tipovi podataka u pythonu
- Osnovni tipovi podataka
- Relacioni operatori
- Operatori logici sql
- Tip podataka koji sadrži slova, brojeve i znakove
- Kiritish va chiqarish operatorlari
- Operatorii aritmetici
- Binarni operatori
- Nel programma ms excel non esistono operatori
- Metodo predicativo java
- Operatori de incrementare si decrementare
- Ternarni operatori
- Strukture i vrste podataka u pythonu
- Relacijski operatori u pythonu
- Logo programiranje
- Borgova skala
- Linearno programiranje
- Algoritmi i programiranje elfak
- Skriptni jezici i web programiranje
- Fanuc roboguide tutorial
- Algoritmi primjeri
- Uart komunikacija
- Rekurzija programiranje
- Algoritmi i programiranje
- Objektno programiranje
- Proceduralno programiranje
- Informatika 6 razred programiranje
- M funkcije cnc
- Webnstudy
- Podjela programskih jezika
- Java objektno orijentisano programiranje
- Planiranje i programiranje nastave
- Dinamicka alokacija memorije
- Vizualno programiranje
- Arduino programiranje
- Klasa programiranje
- Oop programiranje
- Informatika programiranje
- Programiranje i programski jezici
- Logo programiranje
- Zadaci za programiranje
- Program za programiranje
- Kartelj matf
- Internet programiranje
- Paralelno programiranje
- Polimorfizam programiranje
- Programiranje tmf bg ac rs