1 / 104

C++

C++. Operatori 6. dio. Operatori. Operatori su simboli koji predstavljaju (zamjenjuju) određene funkcije . U C++ je definirano nekoliko skupina operatora . Npr.: aritmetički operatori, logički operatori, operatori uspoređivanja , ostali operatori. Aritmetički operatori.

Télécharger la présentation

C++

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. C++ Operatori 6. dio (c) S.Šutalo i D.Grundler, 2007.

  2. Operatori • Operatori su simboli koji predstavljaju (zamjenjuju) određene funkcije. • U C++ je definirano nekoliko skupina operatora. Npr.: • aritmetički operatori, • logički operatori, • operatori uspoređivanja, • ostali operatori. (c) S.Šutalo i D.Grundler, 2007.

  3. Aritmetički operatori • Aritmetički operatori mogu biti: • binarni (djeluju na dvije varijable), • unarni (djeluju na samo jednu varijablu). (c) S.Šutalo i D.Grundler, 2007.

  4. Binarni aritmetički operatori • U tablici su prikazani binarni operatori za izvođenje osnovnih aritmetičkih funkcija. (c) S.Šutalo i D.Grundler, 2007.

  5. Unarni aritmetički operatori • Unarni operatori djelujusamo na jednu varijablu. • Postoje ovi unarni operatori: • za promjenu predznaka, • za uvećavanje (inkrementiranje), • za umanjivanje (dekrementiranje). (c) S.Šutalo i D.Grundler, 2007.

  6. Unarni aritmetički operatori (c) S.Šutalo i D.Grundler, 2007.

  7. Unarni aritmetički operatori • Pri uporabi unarnih operatora važno je paziti na položaj operatora (da li se nalazi prije ili poslije varijable) jer se njegovo djelovanje u jednom i drugom slučaju razlikuje. (c) S.Šutalo i D.Grundler, 2007.

  8. Unarni operatori prije varijable • Ako je operator ispred varijable (npr. ++a) tada se u izrazu računa s uvećanom/umanjenom vrijednošću varijable. U primjeru a=1; b=++a +5; po izvršenju naredbi, sadržaj varijable b=7. (Prvo se povećavrijednost varijable aza 1 a zatim se računa vrijednost izraza.) (c) S.Šutalo i D.Grundler, 2007.

  9. Unarni operatori nakon varijable • Ako je operator iza varijable (npr. a++) tada se vrijednost varijable uveća/umanji tek nakon izračunavanja izraza. U primjeru a=1; b=a++ +5; po izvršenju naredbi, sadržaj varijable b=6. (Prvo se računa vrijednost izraza, a nakon toga se povećavavrijednost varijable a za 1.) (c) S.Šutalo i D.Grundler, 2007.

  10. Slijedi nekoliko primjera uporabe aritmetičkih operatora (binarnih i unarnih). (c) S.Šutalo i D.Grundler, 2007.

  11. Primjer 11 • Zadatak (binarni aritmetički operatori): • Treba izračunati zbroj, razliku, umnožak i kvocijent dvaju realnih brojeva. • Ispis neka bude oblika: • Unesi prvi broj: • unesi drugi broj: • .... + .... = .... • .... - .... = .... • .... * .... = .... • .... / .... = .... (c) S.Šutalo i D.Grundler, 2007.

  12. Primjer 11 • Napomene: • Na početku deklarirati dvije realne varijable. • Aritmetički operatori i znak = mogu se unijeti kao znakovni nizovi. (c) S.Šutalo i D.Grundler, 2007.

  13. Primjer 11 (c) S.Šutalo i D.Grundler, 2007.

  14. Primjer 11 #include<iostream> using namespace std; int main() { float a,b; cout<<"Unesi prvi broj:"<<endl; cin>>a; cout<<"unesi drugi broj:"<<endl; cin>>b; cout<<a<<"+"<<b<<"="<<a+b<<endl; cout<<a<<"-"<<b<<"="<<a-b<<endl; cout<<a<<"*"<<b<<"="<<a*b<<endl; cout<<a<<"/"<<b<<"="<<a/b<<endl; return 0; } (c) S.Šutalo i D.Grundler, 2007.

  15. Primjer 11 • Upozorenje: • Ako se aritmetički izraz zapiše unutar navodnika, postaje znakovni niz! • Rezultat tada neće biti vrijednost aritmetičkog izraza! ! (c) S.Šutalo i D.Grundler, 2007.

  16. Primjer 11 • Provjera programa s podacima za koje je unaprijed poznat krajnji rezultat. (c) S.Šutalo i D.Grundler, 2007.

  17. Primjer 12 • Zadatak (aritmetički operator modulo): • Potrebno je izračunati cjelobrojni kvocijent i ostatak dijeljenja dvaju cijelih brojeva. • Ispis neka bude oblika: Upisi djeljenik: Upisi djelitelj: ... : ... = ...cijelih, a ostatak je ... (c) S.Šutalo i D.Grundler, 2007.

  18. Primjer 12 • Napomene: • Deklarirati četiri cjelobrojne varijable (dvije za ulazne veličine, a dvije za pohranu rezultata). (c) S.Šutalo i D.Grundler, 2007.

  19. Primjer 12 (c) S.Šutalo i D.Grundler, 2007.

  20. Primjer 12 #include<iostream> using namespace std; int main() { int a,b,ostatak,kvoc; cout<<"Upisi djeljenik:"; cin>>a; cout<<"Upisi djelitelj:"; cin>>b; kvoc=a/b; ostatak=a%b; cout<<a<<":"<<b<<"="<<kvoc <<" cijelih, a ostatak je "<<ostatak<<endl; return 0; } (c) S.Šutalo i D.Grundler, 2007.

  21. Primjer 12 • Upozorenje: • Ako se varijable zapohranuulaznih podataka deklariraju kao realne, javit će se pogreška! • Ako se varijable za izlazne podatke deklariraju kao realne, javit će se upozorenje. (c) S.Šutalo i D.Grundler, 2007.

  22. Primjer 12 • Provjera programa s podacima za koje je unaprijed poznat krajnji rezultat. (c) S.Šutalo i D.Grundler, 2007.

  23. Primjer 13 • Zadatak (redoslijed izvršavanja operatora): • Potrebno je izračunati srednju vrijednost po volji izabrana četiri realna broja. • Ispis neka bude oblika: Unesi cetiri realna broja, odvoji ih prazninama: Srednja vrijednost brojeva ...., ...., .... i .... je ..... (c) S.Šutalo i D.Grundler, 2007.

  24. Primjer 13 • Napomene: • Na početku deklarirati pet realnih varijabli (četiri za pohranu podataka koje odabire korisnik i jednu za pohranu rezultata). • Obratiti pozornost na redoslijed izvršavanja operatora (osnovnih matematičkih operacija). (c) S.Šutalo i D.Grundler, 2007.

  25. Primjer 13 (c) S.Šutalo i D.Grundler, 2007.

  26. Primjer 13 #include<iostream> using namespace std; int main() { float a,b,c,d,srvr; cout<<"Unesi cetiri realna broja,"<<endl; cout<<"odvoji ih prazninama."<<endl; cin>>a>>b>>c>>d; srvr=(a+b+c+d)/4; cout<<endl<<"Srednja vrijednost brojeva: "<<endl; cout<<a<<", "<<b<<", "<<c<<" i "<<d<<" je "<<srvr<<endl; return 0; } (c) S.Šutalo i D.Grundler, 2007.

  27. Primjer 13 • Upozorenje: • Ako se srednja vrijednost računa prema ovoj formuli, rezultat nije dobar: srvr=a+b+c+d/4; Rezultat je neispravan zbog redoslijeda izvršavanja operatora. Računa se: a+b+c+(d/4) (c) S.Šutalo i D.Grundler, 2007.

  28. Primjer 13 • Upozorenje: • Akoispis nije pregledan, između riječi i brojevatreba staviti razmake(potrebno ih je predvidjeti unutar znakova navodnika). (c) S.Šutalo i D.Grundler, 2007.

  29. Primjer 13 • Provjera programa. • Ispravno je rješenje dobiveno uporabom zagrada. srvr=(a+b+c+d)/4 (c) S.Šutalo i D.Grundler, 2007.

  30. Unarni operatori • U primjerima se unosi cijeli broj, a zatim se prikazuje djelovanje unarnih operatora na njega. • Treba uočiti razlikuizmeđuoperatora zapisanog ispred varijable i operatora zapisanog iza varijable (zadaci 15 i 16). (c) S.Šutalo i D.Grundler, 2007.

  31. Primjer 14 • Zadatak (unarni operator za promjenu predznaka): • Potrebno je unijeti cijeli broj, a zatim mu unarnim operatorom promijeniti predznak. • Ispis neka bude oblika: Unesi broj: Kada se broju .... promijeni predznak, on postaje .... (c) S.Šutalo i D.Grundler, 2007.

  32. Primjer 14 (c) S.Šutalo i D.Grundler, 2007.

  33. Primjer 14 #include<iostream> using namespace std; int main() { int a; cout<<"Unesi broj:"; cin>>a; cout<<endl<<"Kada se broju "<<a <<" promijeni predznak, on postaje "<<-a<<endl; return 0; } (c) S.Šutalo i D.Grundler, 2007.

  34. Primjer 14 • Provjera programa s podacima za koje je unaprijed poznat krajnji rezultat. (c) S.Šutalo i D.Grundler, 2007.

  35. Primjer 15a • Zadatak (unarni operator za uvećavanje nakon dobave iz memorije): • Potrebno je unijeti cijeli broj i pohraniti ga u varijablu A, a zatim na taj broj primijeniti unarni operator za uvećavanje nakon dobave iz memorije (A++). • Ispis neka bude oblika: Unesi broj za operaciju A++: Kad operacija zavrsi X= ... Kad operacija zavrsi A= ... (c) S.Šutalo i D.Grundler, 2007.

  36. Primjer 15a Podatak se dobavi iz memorije, pa se pridruži varijabli X, a nakon toga se uveća za 1 u memoriji. (c) S.Šutalo i D.Grundler, 2007.

  37. Primjer 15a #include <iostream> using namespace std; int main() { int X,A; cout<<"Unesi broj za operaciju A++: "; cin>>A; X=A++; cout<<"Kad operacija zavrsi X= "<<X<<endl; cout<<"Kad operacija zavrsi A= "<<A<<endl; return 0; } (c) S.Šutalo i D.Grundler, 2007.

  38. Primjer 15a • Provjera programa: • Unesen je broj i pohranjen u varijablu A. Zbogunarnog operatora za uvećavanje nakon dobave iz memorije, podatak je prvo dobavljen iz memorije, pa je pridružen varijabli X, a nakon toga je uvećan za 1. (c) S.Šutalo i D.Grundler, 2007.

  39. Primjer 15b • Zadatak (unarni operator za uvećavanje prije dobave iz memorije): • Potrebno je unijeti cijeli broj i pohraniti ga u varijablu A, a zatim na taj broj primijeniti unarni operator za uvećavanje prije dobave iz memorije (++A). • Ispis neka bude oblika: Unesi broj za operaciju ++A: Kad operacija zavrsi X= ... Kad operacija zavrsi A= ... (c) S.Šutalo i D.Grundler, 2007.

  40. Primjer 15b Najprije se podatak uveća za 1 u memoriji pa se dobavi iz memorije i pridruži varijabli X. (c) S.Šutalo i D.Grundler, 2007.

  41. Primjer 15b #include <iostream> using namespace std; int main() { int X,A; cout<<"Unesi broj za operaciju ++A: "; cin>>A; X=++A; cout<<"Kad operacija zavrsi X= "<<X<<endl; cout<<"Kad operacija zavrsi A= "<<A<<endl; return 0; } (c) S.Šutalo i D.Grundler, 2007.

  42. Primjer 15b • Provjera programa: • Unesen je broj i pohranjen u varijablu A. Zbogunarnog operatora za uvećavanje prije dobave iz memorije, podatak je prvo uvećan za 1 u memoriji pa je dobavljen iz memorije i pridružen varijabli X. (c) S.Šutalo i D.Grundler, 2007.

  43. Tip podatka operanada i rezultata • Tip rezultata aritmetičkog izraza ovisi o tipovima operanada iz izraza. (Ako su operandi u izrazu tipa float i rezultat aritmetičkog izraza je također tog tipa.) (c) S.Šutalo i D.Grundler, 2007.

  44. Tip podatka operanada i rezultata • Kada se u izrazu nađe više različitih tipova operanada, tip rezultata aritmetičkog izraza ovisi o definiranim pravilima pretvorbe. • Podaci se prvo svode na zajednički tip,prije zadane operacije. • Pravila pretvorbe različitih tipova podataka usmjerena su prema višem tipu podataka. (c) S.Šutalo i D.Grundler, 2007.

  45. Tip podatka operanada i rezultata int a; float b = 3.5; float c = 5.0; int d = 2; a = b * c / d; • Primjer pokazuje moguću grešku: • Podaci se prvo svode nazajednički tip i to viši, float.Rezultat izraza je 8.75 • Pošto se rezultat pohranjuje u varijablu a koja je određena kao cjelobrojna (int) bit će pohranjena samo vrijednost 8. (c) S.Šutalo i D.Grundler, 2007.

  46. Tip podatka operanada i rezultata • Da bi se izbjegla moguća greška i neočekivani rezultati treba nastojati ne miješati varijable različitih tipova. (c) S.Šutalo i D.Grundler, 2007.

  47. Primjer 16a • Zadatak (svođenje rezultata na zajednički tip s operandima): • Treba izračunati kvocijent dvaju cijelih brojeva i spremiti ga u realnu varijablu. • Ispis neka bude oblika: • Unesi prvi broj: • unesi drugi broj: • kvocijent iznosi: .... (c) S.Šutalo i D.Grundler, 2007.

  48. Primjer 16a • Napomene: • Varijable a i b deklarirati kao cjelobrojne (int). • Deklarirati varijablu kvocijent (tip float) za pohranu rezultatadijeljenja. (c) S.Šutalo i D.Grundler, 2007.

  49. Primjer 16a varijable a i b su cjelobrojne varijabla kvocijent je realna ispis vrijednosti varijable kvocijent Varijabli kvocijent se pridružuje vrijednost kvocijenta. (c) S.Šutalo i D.Grundler, 2007.

  50. Primjer 16a #include<iostream> using namespace std; int main() { int a,b; float kvocijent; cout<<"Unesi prvi broj:"; cin>>a; cout<<"unesi drugi broj:"; cin>>b; kvocijent=a/b; cout<<"kvocijent iznosi:"<<kvocijent<<endl; return 0; } (c) S.Šutalo i D.Grundler, 2007.

More Related