int i int j0 k3 float f 12

  • Slides: 50
Download presentation

Уграђени типови и декларације int i; int j=0, k=3; float f 1=2. 0, f

Уграђени типови и декларације int i; int j=0, k=3; float f 1=2. 0, f 2=0. 0; double Pi=3. 1415926; char a='a', nul='0'; 9

Показивачи int i=0, j=0; int *pi; pi=&i; *pi=2; j=*pi; pi=&j; // objekti i i

Показивачи int i=0, j=0; int *pi; pi=&i; *pi=2; j=*pi; pi=&j; // objekti i i j tipa int; // objekat pi je tipa "pokazivac na int" (tip: int*); // vrednost pokazivaca pi je adresa objekta i, // pa pi ukazuje na i; // *pi oznacava objekat i; i postaje 2; // j postaje jednak objektu na koji ukazuje pi, // a to je i; // pi sada sadrži adresu j, tj. ukazuje na j; 11

Показивачи osoba otac("Petar Simic", 40); // objekat otac klase osoba; osoba *po; // po

Показивачи osoba otac("Petar Simic", 40); // objekat otac klase osoba; osoba *po; // po je pokazivac na tip osoba; po=&otac; // po ukazuje na objekat otac; (*po). ko_si(); // poziv funkcije ko. Si objekta otac; po->ko_si(); // isto što i (*po). ko. Si(); 13

Показивачи int i=0, j=0; int *pi=&i; int **ppi; ppi=π *pi=1; **ppi=2; *ppi=&j; ppi=&i; //

Показивачи int i=0, j=0; int *pi=&i; int **ppi; ppi=π *pi=1; **ppi=2; *ppi=&j; ppi=&i; // i i j tipa int; // pi je pokazivac na int, ukazuje na i; // ppi je tipa "pokazivac na - int"; // ppi ukazuje na pi; // pi ukazuje na i, pa i postaje 1; // ppi ukazuje na pi, // pa je rezultat operacije *ppi objekat pi; // rezultat još jedne operacije * je objekat na koji ukazuje // pi, a to je i; i postaje 2; // ppi ukazuje na pi, pa pi sada ukazuje na j, // a ppi još uvek na pi; // greška: ppi je pokazivac na int, // a ne pokazivac na int! 17

Показивачи int i=0; int *pi 1=&i, *pi 2; void *pv; pv=pi 1; pi 2=pv;

Показивачи int i=0; int *pi 1=&i, *pi 2; void *pv; pv=pi 1; pi 2=pv; // pi 1 i pi 2 su pokazivaci na int // pv je pokazivac na void // sada i pv ukazuje na i // greska! 20

Низови int m[5][7]; // m je niz od 5 elemenata; // svaki element je

Низови int m[5][7]; // m je niz od 5 elemenata; // svaki element je niz od 7 elemenata tipa // int; m[3][5]=0; // pristupa se cetvrtom elementu niza m; // on je niz elemenata tipa int; // pristupa se zatim njegovom sestom // elementu i on postaje 0; 24

Низови int a[10]; int *p=&a; a[2]=1; p[3]=3; p=p+1; *(p+2)=1; p[-1]=0; // a je niz

Низови int a[10]; int *p=&a; a[2]=1; p[3]=3; p=p+1; *(p+2)=1; p[-1]=0; // a je niz objekata tipa int; // p ukazuje na a[0]; // a[2] je isto što i *(a+2); a se konvertuje u // pokazivac koji ukazuje na a[0]; rezultat // sabiranja je pokazivac koji ukazuje na a[2]; // dereferenciranje tog pokazivaca (*) // predstavlja zapravo a[2]; a[2] postaje 1; // p[3] je isto što i *(p+3), a to je a[3]; // p sada ukazuje na a[1]; // a[3] postaje sada 1; // p[-1] je isto što i *(p-1), a to je a[0]; 25

Изрази • Оператор доделе: a=b; // a je levi a b desni operand operacije

Изрази • Оператор доделе: a=b; // a je levi a b desni operand operacije dodele // oznacene sa = a=b=c; // dodeli c objektu b i vrati tu vrednost; zatim // dodeli tu vrednost u a; prema tome, c je // dodeljen i objektu b i objektu a; • Видимо да оператор доделе има споредни ефекат. 27

Наредбе { int a, c=0, d=3; a=(c++)+d; int i=a; i++; } // pocetak slozene

Наредбе { int a, c=0, d=3; a=(c++)+d; int i=a; i++; } // pocetak slozene naredbe (bloka); // deklaracija kao naredba; // izraz kao naredba; // kraj slozene naredbe (bloka); 29

Наредбе if (izraz) naredba else naredba if (a++) b=a; // inkrementiraj a; ako je

Наредбе if (izraz) naredba else naredba if (a++) b=a; // inkrementiraj a; ako je a bilo razlicito od // 0, dodeli novu vrednost a objektu b; if (c) a=c; // ako je c razlicito od 0, dodeli ga objektu a, else a=c+1; // inace dodeli c+1 objektu a; 30

Наредбе for (inicijalna_naredba izraz 1; izraz 2) naredba for (int i=0; i<100; i++) {

Наредбе for (inicijalna_naredba izraz 1; izraz 2) naredba for (int i=0; i<100; i++) { //. . . Ova petlja se izvrsava tacno 100 puta } for (; ; ) { //. . . Beskonacna petlja } 31

Функције • Декларација функције specifikacija_tipa ime_fje (lista_argumenata); • Дефиниција функције specifikacija_tipa ime_fje (lista_argumenata) blok

Функције • Декларација функције specifikacija_tipa ime_fje (lista_argumenata); • Дефиниција функције specifikacija_tipa ime_fje (lista_argumenata) blok 34

Функције class brojac { int broj; public: funkcija brojac(); // konstruktor funkcija povecaj(); };

Функције class brojac { int broj; public: funkcija brojac(); // konstruktor funkcija povecaj(); }; funkcija brojac: : brojac() {broj=0; } funkcija brojac: : povecaj() { int privr; privr=broj+1; broj=privr; return privr; } 36

Функције class brojac { int broj; public: funkcija brojac(); // konstruktor int povecaj(); };

Функције class brojac { int broj; public: funkcija brojac(); // konstruktor int povecaj(); }; 37

Функције class brojac { int broj; public: brojac(); // konstruktor ne vraca cak ni

Функције class brojac { int broj; public: brojac(); // konstruktor ne vraca cak ni void int povecaj(); }; 38

Функције brojac: : brojac() {broj=0; } int brojac: : povecaj() { broj++; return broj;

Функције brojac: : brojac() {broj=0; } int brojac: : povecaj() { broj++; return broj; } 39

Функције brojac b; // poziv konstruktora int a=0, c=1; a=c+b. povecaj(); int brojac: :

Функције brojac b; // poziv konstruktora int a=0, c=1; a=c+b. povecaj(); int brojac: : povecaj() { return ++broj; } 40

Функције class brojac { int broj; public: brojac(); // konstruktor ne vraca cak ni

Функције class brojac { int broj; public: brojac(); // konstruktor ne vraca cak ni void int povecaj(int koliko_puta, int za_koliko); }; brojac: : brojac() {broj=0; } int brojac: : povecaj(int puta, int koliko) { return broj+=puta*koliko; } 43

Функције int zbir (brojac a, brojac b) { return a. povecaj(1, 1)+b. povecaj(1, 1);

Функције int zbir (brojac a, brojac b) { return a. povecaj(1, 1)+b. povecaj(1, 1); } 46

Функције int f(int); // f je tipa "funkcija koja prima jedan //argument tipa int

Функције int f(int); // f je tipa "funkcija koja prima jedan //argument tipa int i vracа int"; int (*p)(int); // p je tipa "pokazivac na funkciju // koja prima jedan argument tipa int // i vraca int"; p=&f; // p ukazuje na f; int a; a=(*p)(1); // poziva se funkcija na koju ukazuje p, // a to je funkcija f; 48

Структура програма class brojac { int broj; public: brojac(); // konstruktor ne vraca cak

Структура програма class brojac { int broj; public: brojac(); // konstruktor ne vraca cak ni void int povecaj(int koliko_puta, int za_koliko); }; brojac: : brojac() { broj=0; } int brojac: : povecaj(int puta, int koliko) { return broj+=puta*koliko; } void main () { brojac a, b; int i=0, j=3; i=a. povecaj(0, j)+b. povecaj(2, ++j); } 50