katedra informatiky FEI VB-TU Ostrava 10. jna 2005 etr aloun (katedra informatiky FEI VB-TU Ostrava) Dal vrazy 10. jna / 25



Podobné dokumenty
C++ Akademie SH. 2. Prom nné, podmínky, cykly, funkce, rekurze, operátory. Michal Kvasni ka. 20. b ezna Za áte níci C++

Úvod do programovacích jazyků (Java)

Jazyk C++, některá rozšíření oproti C

přetížení operátorů (o)

Úvod do programování. Lekce 1

VYSOKÁ ŠKOLA BAŇSKÁ TECHNICKÁ UNIVERZITA KURZ C++ Materiál ze systému Autoři: Jiří Šebesta, Jakub Sztefek

Martin Flusser. Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague. October 17, 2016

5 Přehled operátorů, příkazy, přetypování

přetížení operátorů (o)

Výrazy, operace, příkazy

Datové proudy objektový vstup a výstup v C++

Inovace a zkvalitnění výuky prostřednictvím ICT Základy programování a algoritmizace úloh. Ing. Hodál Jaroslav, Ph.D. VY_32_INOVACE_25 09

- speciální symboly + - * / =., < > <> <= >= a další. Klíčová slova jsou chráněnými útvary, které nelze použít ve významu identifikátorů.

Odvozené a strukturované typy dat

Výrazy, operace, příkazy

Jazyk C# a platforma.net

Data, výrazy, příkazy

Architektura počítačů Logické obvody

Architektura počítačů Logické obvody

Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15

Algoritmizace a programování

Logické operace. Datový typ bool. Relační operátory. Logické operátory. IAJCE Přednáška č. 3. může nabýt hodnot: o true o false

1.1 Struktura programu v Pascalu Vstup a výstup Operátory a některé matematické funkce 5

Rozsáhlé programy = projekty

Operátory, výrazy. Tomáš Pitner, upravil Marek Šabo

Jak v Javě primitivní datové typy a jejich reprezentace. BD6B36PJV 002 Fakulta elektrotechnická České vysoké učení technické

Datové typy pro reálná čísla

for (i = 0, j = 5; i < 10; i++) { // tělo cyklu }

Operátory. Základy programování 1 Martin Kauer (Tomáš Kühr)

Programování C++ Lukáš Tomášek. verze

Programovací jazyk C++ Cvičení 2

Paměť počítače. alg2 1

V dalších letech se pak začaly objevovat první normy pro jazyk C++ (ISO/IEC 14882:1998; ISO/IEC 9899:1999; ISO/IEC 14882:2003; ISO/IEC 14882:2011).

PROGRAMOVÁNÍ V C++ URČENO PRO VZDĚLÁVÁNÍ V AKREDITOVANÝCH STUDIJNÍCH PROGRAMECH ROSTISLAV FOJTÍK

Třídy a struktury v C++

MQL4 COURSE. By Coders guru -4 Operace & Výrazy

Ukazka knihy z internetoveho knihkupectvi

Bitové operátory a bitová pole. Úvod do programování 2 Tomáš Kühr

Operátory. Základy programování 1 Tomáš Kühr

NPRG030 Programování I, 2010/11

Racionální čísla, operátory, výrazy, knihovní funkce

MIKROPROCESORY PRO VÝKONOVÉ SYSTÉMY

NPRG030 Programování I, 2016/17 1 / :58:13

Prostory jmen. při vkládání několika hlavičkových souborů může vzniknout kolize. logika.h const int x=5; typedef struct {...

Abstraktní třídy, polymorfní struktury

Programování v C++ 1, 1. cvičení

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Racionální čísla, operátory, výrazy, knihovní funkce

09. seminář logika (úvod, výroková).notebook. November 30, Logika

Programování v jazyce JavaScript

Přetěžování operátorů

Úvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií

V dalších letech se pak začaly objevovat první normy pro jazyk C++ (ISO/IEC 14882:1998; ISO/IEC 9899:1999; ISO/IEC 14882:2003; ISO/IEC 14882:2011).

Binární logika Osnova kurzu

Datové typy pro reálná čísla

Programovací jazyk C++ Hodina 1

Úvod do jazyka C. Ing. Jan Fikejz (KST, FEI) 28. prosince Fakulta elektrotechniky a informatiky Katedra softwarových technologií

Java reprezentace dat, výrazy. A0B36PR1-Programování 1 Fakulta elektrotechnická České vysoké učení technické

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Seminář z IVT Proměnné a operátory. Slovanské gymnázium Olomouc 11. září 2014 Tomáš Kühr

IUJCE Přednáška č. 1. programování v C na vyšší úrovni základy objektově orientovaného programovaní v (C++, C#)

Programování v C++ 1, 17. cvičení

Základní pojmy. Úvod do programování. Základní pojmy. Zápis algoritmu. Výraz. Základní pojmy

Přednáška 7. Celočíselná aritmetika. Návratový kód. Příkazy pro větvení výpočtu. Cykly. Předčasné ukončení cyklu.

PŘETĚŽOVÁNÍ OPERÁTORŮ

8. Načítání a zápis PDB souboru

PB161 Programování v C++ Proudy pro standardní zařízení Souborové proudy Paměťové proudy Manipulátory

Opakování programování

Booleovská algebra. Booleovské binární a unární funkce. Základní zákony.

Zápis programu v jazyce C#

Jazyk C++ I. Šablony 2

PB161 Programování v jazyce C++ Přednáška 5

LEKCE 6. Operátory. V této lekci najdete:

Jazyk C# (seminář 5)

PB161 Programování v jazyce C++ Přednáška 10

Mělká a hluboká kopie

ZPRO v "C" Ing. Vít Hanousek. verze 0.3

Základy C++ I. Jan Hnilica Počítačové modelování 18

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

Programovací jazyk Pascal

Algoritmizace prostorových úloh

Algoritmizace a programování

Algoritmizace prostorových úloh

Jazyk VHDL zápis čísel, znaků a řetězců. Jazyk VHDL základní datové typy a operátory. Kurz A0B38FPGA Aplikace hradlových polí

for (int i = 0; i < sizeof(hodnoty) / sizeof(int); i++) { cout<<hodonoty[i]<< endl; } cin.get(); return 0; }

Standardní algoritmy vyhledávací.

VÝRAZY výrazy = operandy prokládané operátory, vyhodnocované podle priority operátorů

SYSTÉMOVÉ PROGRAMOVÁNÍ Cvičení č.1

Jazyk C++ I. Šablony

7 Formátovaný výstup, třídy, objekty, pole, chyby v programech

C++ objektově orientovaná nadstavba programovacího jazyka C

Dynamická identifikace typů v C++.

PB161 Programování v jazyce C++ Přednáška 9

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Jazyky C a C++ kompletní průvodce 2., aktualizované vydání. Miroslav Virius

Pokročilé programování v jazyce C pro chemiky (C3220) Úvod do jazyka C++

Základy programování. Úloha: Eratosthenovo síto. Autor: Josef Hrabal Číslo: HRA0031 Datum: Předmět: ZAP

Sada 1 - Základy programování

Transkript:

Vrazy, dokonen Petr aloun katedra informatiky FEI VB-TU Ostrava 10. jna 2005 etr aloun (katedra informatiky FEI VB-TU Ostrava) Dal vrazy 10. jna 2005 1 / 25

vraz sloen z opertor a operand C++: kad opertor petit krom?:, ::,.,., sizeof, typeid, const cast, dynamic cast, reinterpret cast, static cast opertor V funkce V kontext, napklad << Piazujeme vsledek Pythagorova vta c = ヤ a 2 + b 2 c = s q r t ( aa + bb ) ; Petr aloun (katedra informatiky FEI VB-TU Ostrava) Dal vrazy 10. jna 2005 2 / 25

Opertor piazen i n t a, b, c ; a = b = c = 1; rvalue V r-hodnota, hodnotov vraz lvalue V l-hodnota, adresov vraz nejednoznan: cc = cc ++ 2; a [ i ] = i ++; etr aloun (katedra informatiky FEI VB-TU Ostrava) Dal vrazy 10. jna 2005 3 / 25

Aritmetick vrazy +,,, /, % 123 * 456 = 56088 295 / 2 = 147 295 % 2 = 1 nyni pozor: 20000 * 20001 = 400020000 400020000 * 10 = -294767296 etr aloun (katedra informatiky FEI VB-TU Ostrava) Dal vrazy 10. jna 2005 4 / 25

Aritmetick vrazy V vpis 1 #i n c l u d e < iostream > // v s t u p y a v y s t u p y #i n c l u d e <iomanip > // f o r m a t o v a n i vystupu u s i n g namespace s t d ; i n t main ( ) { i n t o1 = 123, o2 = 456, o3 = 295, v1, v2, v3 ; i n t c1 = 20000, c2 = 20001, vc ; v1 = o1 o2 ; v2 = o3 / 2 ; v3 = o3 % 2; cout << o1 < < ィ ィ < < o2 << ィ = ィ << setw (5) < < v1 < cout << o3 < < ィ / 2 = ィ << setw (5) < < v2 << e n d l ; cout << o3 << ィ % 2 = ィ << setw (5) < < v3 << e n d l ; etr aloun (katedra informatiky FEI VB-TU Ostrava) Dal vrazy 10. jna 2005 5 / 25

Aritmetick vrazy V vpis 2 vc = c1 c2 ; cout << e n d l << ィ n y n i pozor : ィ < < e n d l ; cout << setw (10) < < c1 < < ィ ィ < < setw (10) < < c2 << cout << setw (10) < < vc < < ィ ィ < < setw (10) < < 10 < < r e t u r n 0 ; } / / i n t main ( ) etr aloun (katedra informatiky FEI VB-TU Ostrava) Dal vrazy 10. jna 2005 6 / 25

smen aritmetick vrazy i n t main ( ) { i n t i, j ; double r, x ; j = i = 5 ; j = i ; r = j / 3 ; x = j 3 ; cout << ィ i = ィ << i << ィ j = ィ << j << ィ r = ィ << r << ィ x= ィ << x << e n d l ; r e t u r n 0 ; } / / i n t main ( ) i=5 j=25 r=8 x=75 Petr aloun (katedra informatiky FEI VB-TU Ostrava) Dal vrazy 10. jna 2005 7 / 25

Logick hodnoty a opertory C++ bool, true a false C cel sla 1, 0 &&,,! V konjunkce, disjunkce, negace A B!A A && B A B false false true false false false true true false true true false false false true true true false true true Relan opertory <, >, <=, >=, ==,!= men ne, vt ne, men nebo rovno, vt nebo rovno, rovno a nerovno Petr aloun (katedra informatiky FEI VB-TU Ostrava) Dal vrazy 10. jna 2005 8 / 25

Bitov opertory pouze s celoselnmi hodnotami <<, >>, &,,, ニル posun vlevo, posun vpravo, bitov konjunkce, bitov disjunkce, bitov negace, bitov nonekvivalence b1 b2 b1 b1 & b2 b1 b2 b1 ニル b2 0 0 1 0 0 0 0 1 1 0 1 1 1 0 0 0 1 1 1 1 0 1 1 0 Bitov posun, MSB, LSB V unsigned, celoseln dlen (nsoben) dvma, V aritmetick posun, znamnkov bit. Bitov konjunkce &, disjunkce, a nonekvivalence ニル (and, or, xor) provd pslunou binrn operaci s kadm prem odpovdajcch si bit celoselnch operand. Bitov negace je unrn, bitov doplnk. etr aloun (katedra informatiky FEI VB-TU Ostrava) Dal vrazy 10. jna 2005 9 / 25

ve 32bitovm prosted: 1 << 1 = 2 0x2 1 << 7 = 128 0x80-1 >> 1 = -1 0xffffffff 512 >> 8 = 2 0x2 13 & 6 = 4 0x4 13 6 = 15 0xf 13 ^ 6 = 11 0xb 2 & 1 = 0 0 2 1 = 3 0x3 2 ^ 1 = 3 0x3 Petr aloun (katedra informatiky FEI VB-TU Ostrava) Dal vrazy 10. jna 2005 10 / 25

op-bit01.cpp st 1 #i n c l u d e <iomanip > // f o r m a t o v a n i vystupu u s i n g namespace s t d ; i n t main ( ) { i n t v l e v o 1 = 1 < < 1; i n t v l e v o 7 = 1 < < 7; cout. s e t f ( i o s : : showbase ) ; / / ukaze z a k l a d c i s e l n e s o u cout << ィ 1 << 1 = ィ << dec << setw (6) < < v l e v o 1 << cout << ィ 1 << 7 = ィ << dec << setw (6) < < v l e v o 7 << cout << ィ 1 >> 1 = ィ << dec << setw (6) < < vpravo1 << cout << ィ512 >> 8 = ィ << dec << setw (6) < < vpravo8 << i n t vpravo1 = 1 >> 1; i n t vpravo8 = 512 > > 8; etr aloun (katedra informatiky FEI VB-TU Ostrava) Dal vrazy 10. jna 2005 11 / 25

op-bit01.cpp st 2 i n t k = 13 & 6; i n t d = 1 3 6 ; i n t non = 1 3 ニル 6 ; cout < < ィ 13 & 6 = ィ << dec << setw (6) < < k << hex < cout < < ィ 13 6 = ィ < < dec << setw (6) < < d << hex < cout < < ィ 13 ニル 6 = ィ < < dec << setw (6) < < non << hex k = 2 & 1; d = 2 1 ; non = 2 ニル 1 ; cout << ィ 2 & 1 = ィ << dec << setw (6) < < k << hex < cout << ィ 2 1 = ィ < < dec << setw (6) < < d << hex < cout << ィ 2 ニル 1 = ィ < < dec << setw (6) < < non << hex r e t u r n 0 ; etr aloun (katedra informatiky FEI VB-TU Ostrava) Dal vrazy 10. jna 2005 12 / 25

int-size.cpp #i n c l u d e < iostream > // v s t u p y a v y s t u p y u s i n g namespace s t d ; i n t main ( ) { u n s i g n e d i n t u i = 0 ; i n t i = 1 ; w h i l e ( u i >>= 1) i ++; cout << ィ p r e k l a d a c p o u z i v a ィ << i << ィ b i t o v o u r e p r e z e r e t u r n 0 ; } / / i n t main ( ) prekladac pouziva 32bitovou reprezentaci celeho cisla Petr aloun (katedra informatiky FEI VB-TU Ostrava) Dal vrazy 10. jna 2005 13 / 25

Adresov opertor & je unrn promenna i=123 je umistena od adresy: 0012FF7C #i n c l u d e < iostream > u s i n g namespace s t d ; i n t main ( ) { i n t i = 123, p i ; p i = & i ; cout << ィpromenna i = ィ << i << ィ j e umistena od a d r e s y r e t u r n 0 ; } / / i n t main ( ) Petr aloun (katedra informatiky FEI VB-TU Ostrava) Dal vrazy 10. jna 2005 14 / 25

Reference V odkaz synonymum, alias i n t i = 0; // c e l o c i s e l n a promenna i n t & o i = i ; / / o i j e v y t v o r e n o j a k o odkaz na i o i = 2 ; / / u m i s t i 2 do promenne i ( p r e s odkaz o i Opertor rka postupn vyhodnocen, nejni priorita, zleva doprava. etr aloun (katedra informatiky FEI VB-TU Ostrava) Dal vrazy 10. jna 2005 15 / 25

Petypovn vrazu (typ), const cast, static cast, dynamic cast, (typ) vyraz r = j / 3; r = (double) j / 3; reinterpret cast etr aloun (katedra informatiky FEI VB-TU Ostrava) Dal vrazy 10. jna 2005 16 / 25

Zadej cele cislo: 123 Petr aloun abs(123) (katedra informatiky = FEI 123VB-TU Ostrava) Dal vrazy 10. jna 2005 17 / 25 Podmnn opertor, op-cond.cpp ternrn #i n c l u d e < iostream > u s i n g namespace s t d ; i n t main ( ) { i n t i, a b s i ; cout << e n d l << ィ Zadej c e l e c i s l o : ィ ; c i n >> i ; a b s i = ( i < 0)? i : i ; cout << ィ abs ( ィ << i << ィ) = ィ << a b s i << e n d l ; r e t u r n 0 ; } / / i n t main ( )

Sprva pamti, new-del.cpp st 1 C++ new a delete. new alokuje objekt V kostruktor #i n c l u d e < iostream > u s i n g namespace s t d ; i n t main ( ) { i n t p t r = new i n t ( 3 ) ; p t r += 7; cout << ィ p t r = ィ << p t r << e n d l ; d e l e t e p t r ; etr aloun (katedra informatiky FEI VB-TU Ostrava) Dal vrazy 10. jna 2005 18 / 25

Sprva pamti, new-del.cpp st 2 i n t pocet ; cout << ィ K o l i k a p r v k o v e p o l e c h c e s v y t v o r i t? : ィ ; c i n >> pocet ; double p o l e = new double [ pocet ] ; i n t i = 0 ; w h i l e ( i < pocet ) { p o l e [ i ] = i + ( double ) i / 1 0 0 ; cout << p o l e [ i ] << e n d l ; i ++; } / / w h i l e ( i < pocet ) d e l e t e [ ] p o l e ; r e t u r n 0 ; } / / i n t main ( ) etr aloun (katedra informatiky FEI VB-TU Ostrava) Dal vrazy 10. jna 2005 19 / 25

Sprva pamti, new-del.cpp vstup *ptr = 10 Kolikaprvkove pole chces vytvorit?:5 0 1.01 2.02 3.03 4.04 Petr aloun (katedra informatiky FEI VB-TU Ostrava) Dal vrazy 10. jna 2005 20 / 25

Vrazov pkaz, pkaz vraz ukonen ; Przdn pkaz ; Blok skupina pkaz mezi { a } sloen pkaz lokln deklarace a definice, lokln promnn, pamt ヲov tda auto etr aloun (katedra informatiky FEI VB-TU Ostrava) Dal vrazy 10. jna 2005 21 / 25

Oblast platnosti identifiktoru Na rovni souboru zan platnost deklarace mstem deklarace a kon na konci souboru. Deklarace na rovni argumentu funkce m rozsah od msta deklarace argumentu v rmci definice funkce a do ukonen vnjho bloku definice funkce. Pokud se nejedn o definici funkce, kon rozsah deklarace argumentu s deklarac funkce. V rmci bloku je deklarace platn do konce bloku. etr aloun (katedra informatiky FEI VB-TU Ostrava) Dal vrazy 10. jna 2005 22 / 25

Prostor jmen e problmy s ppadnm konfliktem v oblasti identifiktor. using namespace std; vlastn: namespace identifikator seznam deklaraci opertor tyteka :: prostor jmen::identifikator etr aloun (katedra informatiky FEI VB-TU Ostrava) Dal vrazy 10. jna 2005 23 / 25

scope-jmena.cpp c o n s t char i d = ィ soubor scope jmena. cpp ィ ; // g l o b l n k o n s t a n t a namespace C P P p r o z e l e n a c e { c o n s t char i d = ィ Saloun. C++ pro z e l e n a c e. ィ ; // k o n s t a n t a ve jmennm p r o s t o r u C P P p r o z e l e n a c e } i n t main ( ) { c o n s t char i d = ィ t e l o f u n k c e main ィ ; // l o k l n k o n s t a n t a ve f u n k c i main ( ) s t d : : cout << i d << s t d : : e n d l ; / / l o k l n s t d : : cout < < :: i d << s t d : : e n d l ; / / g l o b l n s t d : : cout << ィDobra k n i h a : ィ < < C P P p r o z e l e n a c e : : i d << s t d : : e n d l ; r e t u r n 0 ; Petr aloun (katedra informatiky FEI VB-TU Ostrava) Dal vrazy 10. jna 2005 24 / 25

scope-jmena.cpp vstup telo funkce main soubor scope_jmena.cpp Dobra kniha: Saloun. C++ pro zelenace. Petr aloun (katedra informatiky FEI VB-TU Ostrava) Dal vrazy 10. jna 2005 25 / 25