Оператори и изрази Аритметички оператори Оператори на нивоу битова

Slides:



Advertisements
Сличне презентације
Računarstvo i informatika
Advertisements

ARITMETIČKO LOGIČKA JEDINICA
Непроменљиве речи обрада
СЦЕНАРИО ЗА ЧАСА Наставна јединица: Сабирање и одузимање до 20.
Програмски језик Parallaxis
Uvod u programiranje - matematika – XII predavanje Moduli. OOP
Показивачи у програмском језику C Дамјан Илић; Е32 Габриела Миленковић
Јазкот C++ Мандал Сениха.
Elektronički logički sklopovi i registri
Primjena programiranja u nastavi matematike
Показивачи.
Увод у организацију и архитектуру рачунара 1
Programiranje - Nizovi -
Слике Слике се не кодирају у HTML документ, већ се наводи путања до слике. За приказивање слика користи се елемент IMG. Елемент IMG има само почетни маркер.
Uvod u funkcije Kolegij: Programski jezik C++ Ak. god. 2018/19
Управљање меморијом Улога меморије у рачунарском систему
Tipovi, operatori i izrazi
Statistika cena.
ОРГАНИЗАЦИЈА ПАРКИРАЛИШТА И ИЗРАЧУНАВАЊЕ ПРИХОДА ОД ПАРКИРАЊА
Programiranje - Naredbe za kontrolu toka programa – 4. dio
Nastavna jedinica: 1.5. Elektronički logički sklopovi i registri
Microsoft Access uvod u baze podataka.
Целобројно и реално дељење
1.4 Elastične deformacije i kompresibilnost fluida
Predstavljanje podataka u računaru
OSNOVNI ELEMENTI PLC KONTROLERA
ЦЕЛОБРОЕН ТИП НА ПОДАТОЦИ
Преклапање оператора Операторске функције Неки посебни оператори
Logička ili Booleova algebra 1.dio
Uvod u programiranje - matematika – VI predavanje Petlje. FOR. WHILE
Nastavna cjelina: 2. Microsoft Excel 2010
ПРОПОРЦИОНАЛНО-ИНТЕГРАЛНИ PI РЕГУЛАТОР
Nastavna jedinica: 1.5. Elektronički logički sklopovi i registry
5 NAREDBE.
Dinamičke strukture podataka
Osnove pseudo jezika operatori, funkcije
VIŠEDIMENZIONI NIZOVI
Сабирање и одузимње преко 1000
Meni Home II dio.
PyGame.
Спецификатори Иницијализација
Uvod u programiranje - matematika – XII predavanje
Podaci.
PROJEKTOVANJE RAZGRANATE ALGORITAMSKE STRUKTURE
Programiranje - Blokovi naredbi i logički tipovi –
JEZIK RAČUNALA: bit i bajt
dr Aleksandra Kostić-Milanović mr Vule Aleksić
KREIRANJE GRAFIKONA U EXCEL-U
Projektovanje namenskih računarskih struktura u obradi signala
Strukture podataka i algoritmi 1
Osnovna Struktura programa
EXC - Funkcije - 2. dio Funkcije – drugi dio
Архитектура и програмирање микропроцесора Intel 8086
Јелена Бошковић, проф. Рачунарства и информатике
Tipkovnica engl. Keyboard.
Relacione baze –primer modelovanja baze
Структура програма у Паскалу
Brojni sistemi Sastoje se od skupova znakova (cifri) i pravila za pisanje cifri. Dijele se na pozicijske i nepozicijske (npr. Rimski) Najvažniji sa stanovišta.
Анализа структуре.
Класификација паралелних система
Logičko projektovanje računarskih sistema 2
Процесорска поља Организација процесорских поља
Funkcije u ekselu.
MOD MOD je aritmetički operator – predstavlja ostatak cjelobrojnog dijeljenja. Ako je MOD = 0, tada je broj djeljiv bez ostatka. Gleda se samo ostatak.
MATLAB.
Principi programiranja
Vježbenica 3: struktura petlje – 2.dio
Синтакса програмских језика и опис синтаксе
Транскрипт презентације:

Оператори и изрази Аритметички оператори Оператори на нивоу битова Логички оператори Релациони оператори Оператори доделе Оператори референцирања и дереференцирања Оператори за рад са динамичком меморијом Остали оператори Изрази

Аритметички оператори Оператор Значење Асоцијативност Лвр. Употреба * множење лево не izraz * izraz / дељење izraz / izraz % остатак izraz % izraz + сабирање izraz + izraz - одузимање izraz – izraz унарни плус десно +izraz унарни минус -izraz ++ префиксни инкремент да ++lvrednost -- префиксни декремент --lvrednost постфиксни инкремент lvrednost++ постфиксни декремент lvrednost--

Аритметички оператори int x=0; int y=++x; // x postaje 1, kao i y ++x=--y; // ++x je lvrednost; x postaje 0 kao i y

Аритметички оператори for ( ; *q++ = *p++;); // kopira niz znakova na koji // ukazuje p u niz lokacija u // memoriji na koje ukazuje q

Оператори на нивоу битова Значење Асоцијативност Лвр. Употреба << Померање улево лево не izraz<<izraz >> Померање удесно izraz>>izraz & логичко I по битовима izraz & izraz | логичко ILI по битовима izraz | izraz ~ логичко NE по битовима десно ~izraz ^ логичко искључиво ILI по битовима izraz^izraz

Оператори на нивоу битова if (status & 0x80) // da li je bit 7 objekta // status jednak 1 extern unsigned flag; const unsigned mask = ~3U; // komplement od 3 kao // neoznacen broj flag=flag & mask; // brise dva bita // najmanje tezine // promenljive flag

Логички оператори Оператор Значење Асоцијативност Лвр. Употреба && логичко I лево не izraz&&izraz || логичко ILI izraz||izraz ! логичко NE десно ! izraz

Логички оператори if (1 || f()) // funkcija f se nikada ne poziva for (int i=0; *p++ && *q++; i++) // petlja koja // prolazi kroz // stringove dok // se na naidje na // kraj jednog od // njh

Релациони оператори Оператор Значење Асоцијативност Лвр. Употреба < мање лево не izraz<izraz > веће izraz>izraz <= мање или једнако izraz<=izraz >= веће или једнако izraz>=izraz == једнако izraz==izraz != различито izraz!=izraz

Оператори доделе Оператор Значење Асоцијативност Лвр. Употреба = Проста додела десно да lvrednost=izraz *= Множење и додела lvrednost*=izraz /= Дељење и додела lvrednost/=izraz %= Остатак и додела lvrednost%=izraz += Сабирање и додела lvrednost+=izraz -= Одузимање и додела lvrednost-=izraz >>= Померање удесно и додела lvrednost>>=izraz <<= Померање улево и додела lvrednost<<=izraz &= I и додела lvrednost&=izraz ^= Искључиво ILI и додела lvrednost^=izraz |= ILI и додела lvrednost|=izraz

E1 се израчунава само једном Оператори доделе E1 op= E2  E1 = E1 op E2 E1 се израчунава само једном

Оператори доделе flag &= (mask<<2); // ovde se mask ne menja mask <<=2; // ovde se mask menja a=b=c; // isto kao a=(b=c), i a i b dobijaju // vrednost c (a=b)=c; // a dobije vrednost b a onda // vrednost c; b se ne menja

Оператори доделе Код просте доделе, када су операнди аритметичког типа, десни операнд се конвертује у тип левог операнда. Ако је леви операнд типа набрајања, и десни мора да буде истог типа. Ако је леви операнд типа показивача, и десни операнд мора да буде типа показивача или константни израз једнак 0.

Оператори референцирања и дереференцирања Значење Асоцијативност Лвр. Употреба * Дереференцирање показивача десно да *izraz . Непосредни приступ члану лево да/не izraz.ime -> Посредни приступ члану izraz->ime & Узимање адресе не &lvrednost

Оператори референцирања и дереференцирања E1 -> E2  (*E1).E2 void swap(int *x, int *y) { int temp=*x; *x=*y; *y=temp; } void main () { int a=1, b=2; swap (&a, &b); // …

Оператори за рад са динамичком меморијом Динамички објекти имају животни век који није одређен облашћу важења већ је под контролом програмера. Смештају се у посебну меморијску област (динамичку меморију) одакле им се додељује простор приликом креирања који се ослобађа код укидања.

Оператори за рад са динамичком меморијом Креирање објеката врши се оператором new а укидање оператором delete. Операција new подразумева: Одвајање простора у динамичкој меморији потребног за смештање објекта; Иницијализацију тог објекта (по потреби се позива конструктор); Враћање показивача на наведени тип објекта.

Оператори за рад са динамичком меморијом int *p=new int; // kreira se dinamicki objekat tipa int // a na njega ukazuje p *p=3; // objekat dobija vrednost 3 (*p)++; // objekat je sada 4 int i=*p; // promenljiva i postaje 4

Оператори за рад са динамичком меморијом int *pi=new int(3);// kreira se dinamicki objekat tipa int // i inicijalizuje na 3 osoba *po=new osoba(“Petar Petrovic”,40); int i=*new int(3); // dinamicki objekat je izgubljen int j=new int(4); // greska: new vraca pokazivac

Оператори за рад са динамичком меморијом Тип иза оператора new мора да буде тип објекта али не и функције, мада је дозвољено да буде показивач на функцију. Aко се креира динамички објекат изведеног типа, осим показивача и низова, назив типа се наводи унутар заграда.

Оператори за рад са динамичком меморијом int i=0; int **ppi=new int* (&i); // dinamicki objekat je // tipa int* i moze ovo extern int f(); int (*ppf) () =new (int (*) ()) (&f); // dinamicki objekat je // tipa int(*)() pa tip // mora u zagrade

Оператори за рад са динамичком меморијом Оператором delete укида се динамички објекат претходно креиран помоћу оператора new, а аргумент јој је показивач на тај објекат.

Оператори за рад са динамичком меморијом int *pi=new int(3); osoba *po=new osoba(“Petar Petrovic”,40); // … delete pi; delete po;

Оператори за рад са динамичком меморијом Динамички низови се креирају помоћу оператора new наводећи тип низа и димензије. Оператор new враћа показивач на први елемент низа.

Оператори за рад са динамичком меморијом int *pi = new int[10]; // new int […] vraca int* for (int i=0; i<10; i++) pi[i]=i; // i+1-vi element se // inicijalizuje na i

Оператори за рад са динамичком меморијом Оператор delete враћа резултат типа void. Објекат укинут на овај начин престаје да живи а бивши показивач на њега је недефинисан. Динамички низови укидају се помоћу исказа delete [] izraz

Оператори за рад са динамичком меморијом Показивач на константни објекат не сме да буде аргумент операције delete.

Оператори за рад са динамичком меморијом void g(const int *p) { // obecali smo da se *p // nece menjati delete p; // pa je ovo greska! } void f() { int *p=new int(3); g(p); if (*p !=3) // sta ce biti?!? // …

Остали оператори Оператор индексирања [] је бинарни оператор. Један од операнда је показивач на тип Т а други је целобројан. Враћа се резултат типа Т. Израз E1[E2] еквивалентан је изразу *((E1)+(E2)) као и изразу E2[E1].

Остали оператори char *s=“Zdravo!”; s+=6; char c=s[-4]; // c je sada *(s-4), tj. ‘r’ // celobrojni operand moze biti i // negativan ukoliko rezultujuci // pokazivac ukazuje na element niza

Остали оператори Оператор позива функције () захтева да испред заграда буде операнд једног од следећих типова: функција која враћа тип Т; показивач на функцију која враћа тип Т; референца на функцију која враћа тип Т; Резултат је типа Т који је лвредност само ако функција враћа референцу.

Остали оператори Између заграда се наводи листа израза раздвојених зарезом који представљају стварне аргументе. Листа може бити и празна.

Остали оператори Оператор услова ? Користи се у изразу облика Е1?Е2:Е3 који има вредност Е2 ако је Е1!=0, односно Е3 ако није.

Остали оператори int fact (int n) { if (1<n) return n*fact(n-1); else return 1; return (1<n)?(n*fact(n-1)):1;

Остали оператори Оператор секвенце , се користи када желимо да извршимо неколико операција тамо где се по синтакси очекује једна. Израз Е1, Е2 има вредност Е2 али се пре њега израчунава Е1.

Остали оператори Посматрајмо следећу петљу: for (; *p && *q;) { // … }

Остали оператори Сажетије је могло и: for (; *p && *q; p++,q++) { // … }

Остали оператори Оператор величине sizeof представља величину објекта неког типа изражену у бајтовима. Тачније, sizeof(char) је увек 1, што се поклапа са једним бајтом тамо где се знакови представљају једним бајтом. int a[10]; const int i=sizeof(a); // i=10*sizeof(int)

Остали оператори Оператор експлицитне конверзије () може се користити у облику T(E) или (T)E са значењем да се израз Е конвертује у тип Е. extern double poeni; int ocena=(int(poeni+0.5)+5)/10;

Остали оператори Оператор разрешења области важења :: може се употребити на два начина: ::ime ime_klase::ime. Први случај се користи када се жели приступ глобалном имену које је сакривено неким другим.

Остали оператори int x=0; void f() { ::x++; // pristup globalnom x }

Остали оператори Други случај представља обраћање имену које има области важења класе, а сам приступ је ван те области. void osoba::ko_si(){ // pristupa se u oblasti fajla //… a ime ko_si ima oblast klase // osoba }

Изрази Израз је исказ који се састоји од оператора и операнада и дефинише неку обраду. Израз може да има неку вредност али и не мора (тип void). Израз може да има и споредне ефекте.