termín: utorok :00 (poledne) Cíle: Zadání:
|
|
- Anna Vlčková
- před 6 lety
- Počet zobrazení:
Transkript
1
2 termín: utorok :00 (poledne) Cíle: Multiplatformnost Linux/Windows 32/64bit Návrh rozhraní Korektné zastrešenie sieťového rozhrania Použitie policies Bez užití externích knihoven (napr boost) Pozor na prevody endianity Zadání: Vytvorte triedy umožňujúce prístup k TCP/UDP Socketom ako k streamom. Implementácia by mala zastrešovať všetky funkcionality network stacku
3 TCP Spojovaná, spoľahlivá služba Server socket, client socket Nutné naviazanie spojenia charakterizované 4icou UDP Nespojovaná, nespoľahlivá služba Len socket Nieje nutné naviazanie spojenia
4 TCP UDP
5 int main(int argc, char **argv) { struct hostent *host; /* host information */ struct in_addr h_addr; /* internet address */ if ((host = gethostbyname(argv[1])) == NULL) { fprintf(stderr, failed ); exit(1); } h_addr.s_addr = *((unsigned long *) host->h_addr_list[0]); fprintf(stdout, "%s\n", inet_ntoa(h_addr)); exit(0); } /* Create the TCP socket */ if ((sock = socket(pf_inet, SOCK_STREAM, IPPROTO_TCP)) < 0) {fprintf(stdout("failed to create socket"); } memset(&echoserver, 0, sizeof(echoserver)); /* Clear struct */ echoserver.sin_family = AF_INET; /* Internet/IP */ echoserver.sin_addr.s_addr = inet_addr(argv[1]); /* IP address */ echoserver.sin_port = htons(atoi(argv[3])); /* server port */ if (connect(sock, (struct sockaddr *) &echoserver, sizeof(echoserver)) < 0){ fprintf(stdout,"failed to connect with server"); }
6 char str[] = "Test sentence"; int val = 65; char ch = 'A'; cout << str << endl; // Insert string cout << ch << endl; // Insert single character cout.width (10); cout << right; // Insert manipulator cout << val << endl; // Insert integer return 0;
7 Kompletné zamaskovanie funkcionality socketov Využite Funkcie i Manipulátory (viz IOstream) TCP/UDP sockety Vytváranie socketov socket, bind, accept, listen, close, shutdown Posielanie dát send/recv Možnost nastaviť či bude blokujúci alebo neblokujúci call nastavovanie príznakov Možnost namapovat fail, disconnect callback Použitie pomocou operátorov << a >> Možnosť prúdového i transakčného posielania dát Prúdové data poskytnuté steamu sú hneď odoslané Transakčné data poskytnuté streamu sú odoslané až po commite Rozpoznávanie a korektné chovanie s endianitou Možnosť nastavovania sémantických značiek Length vyplní sa automaticky pri commite
8 Vytváranie socketov StreamSocket<Net::TCP::Server> s( , 20); StreamSocket<Net::TCP> sc(); sc.connect( aaaa.net,8080); s.listen(20); s << StreamSocket::listen(10); s >> s2; StreamSocket<Net::UDP > s2( localhost,10); Posielanie dát s2.recv( buff, 20 ); std::vector< char > b; b.resize(20); std::vector< int > b2; b2.resize(20); s2 << Net::BlockingCalls; s2 << Net::CharBuff(20) >> s2 >> buff; s2 >> b; s2 >> b2;
9 Možnosť prúdového i transakčného posielania dát Prúdové sc << Net::StreamDataFlow; sc << 4 << std::string aaaaaa << Net::CharBuff(5) << bbbb ; Transakčné data poskytnuté streamu sú odoslané až po commite sc << Net::TransactionDataFlow; sc << 4 << std::string aaaaaa << Net::CharBuff(5) << bbbb ; if ( sc << Net::TransactionCommit ) { } //success Možnosť nastavovania sémantických značiek Length vyplní sa pri commite (napr 4B int) sc << PACKET_DATA << Net::Mark::Length<int> << 4 << 5 << a ; if ( sc << Net::TransactionCommit ) { } //success
10 Jednotné OO rozhraní nevázané na konkrétní platformu Čistá a hezká syntaxe i sémantika Typy parametrů a návratových hodnot Ošetření výjimečných a chybových stavů Korektní stavové chování Bezwarningová zkompilovatelnost Včastnost odevzdání
11 Thead safe Inteligent dizajn based on policies
12 Pouze přes Grupík Vše v jednom.zip souboru do sloupečku DU1 za poslání nevhodného obsahu budou strhnuty body na začátek každého souboru vložte komentář typu // DU1-SS.cpp // Karel Vomacka NPRG /2012
13 termín: úterý :00 (poledne) Cíle: Vlastní kontejnery C++0x rvalue reference, move sémantika Multiplatformnost Zadání: Vytvořte kontejner, který minimalizuje zbytečné kopírování pomocí C++0x rvalue referencí a strukturu, která tohle pole bude obsahovat a bude mít v něm uloženy prvky.
14 vložení, smazání prvku, smazání všech prvků, základní iterátor konstruktory (default, iterator begin/end, size/init value, ) jednoduchý alokátor operator [] operator= swap poskytovat typy ( value_type, iterator, pointer, difference_type, const*) nepoužívat cizí datové struktury parametrizace minim. typem prvku a alokátorem (s default hodnotou)
15 konstruktor (default, iterator begin/end, size/init value, ) operator+ matematicky, jednoduchý sčítaní dvou vektorů různe velikosti doplnit 0 prvek bude podporovat operator+ operator= operator<< výpis poskytovat typ container_type parametrizace min. typem prvku
16 jednoduše přepínat mezi efektivní/neefektivní implementací makra, politika,... porovnat rychlost s std::vector
17 // e.g., #define WITH_RVALUES... int main( int argc, char* argv[] ) { tester::test_adder< uloha2::adder >(); return 0; } namespace tester {... test_adder() { typedef int elem_type; typedef adder<elem_type> adder_type; // start timer { // adder_type fun... } } } // namespace
18 // fun with adder adder_type ret; for ( size_t i = 0; i < CYCLE_COUNT; ++i ) ret = ret + adder_type<int>( first, last );
19 Čistá a hezká syntaxe i sémantika Typy parametrů a návratových hodnot Ošetření výjimečných a chybových stavů Bezwarningová zkompilovatelnost Včastnost odevzdání Stl-like
20 Optimální použití r-values a swapů Vícero implementací kopírování Analýza proč je váš kontejner pomalejší/rychlejší jako stl
21 Pouze přes Grupík Vše v jednom.zip souboru do sloupečku DU2 Názvy zdrojáků (povinně): du2_adder.h du2_tester.h du2_main.cpp Posílejte pouze zdrojové soubory a neposílejte žádné makefile,.prj,.sln,.obj,.exe,.pdb a jakékoliv další vedlejší soubory za poslání nevhodného obsahu budou strhnuty body na začátek každého souboru vložte komentář typu // DU2-ADDER // Karel Vomacka NPRG /2012
22 termín: úterý :00 Cíle: šablony, specializace, politiky práce s kontejnery a iterátory eliminace copy-and-paste Zadání: vytvořte šablonu cache pro základní knihovní kontejnery vector, deque, list, set, map, multiset, multimap operace: add, remove, search, clear
23 myšlenka eliminace časově náročných operací u velmi velkých kontejnerů velikost cache pevný počet záznamů (nepovinný) parametr šablony s defaultní hodnotou (20) hledání při nalezení hodnoty v cache se již kontejner neprohledává při nalezení hodnoty v kontejneru se hodnota přidá do cache zaplněná cache při přidávání do zaplněné cache vyhodit vhodnou položku defaultně nejdéle nepřistupovanou položku funktor definující chování jako (nepovinný) parametr šablony další poznámky při mazání nezapomenout na cache pozor na validnost iterátorů nepředpokládá se jiný přístup do kontejneru než přes cache
24 cache< vector< string> > vs; vs.add( "kzr"); vs.add( "pzr"); vector< string>::const_iterator s = vs.search( "kzr"); typedef map< int, int> mii_t; template <????> class fcch???; cache< mii_t, 20, fcch > mi; mi.add( make_pair( 10, 3)); mi.add( make_pair( 5, 2)); mi.add( make_pair( 7, 4)); mi.remove( 2); mii_t::const_iterator i = mi.search( 3); funktor (nebo něco podobného) co dělá cache při přeplnění návrh rozhraní ponechán na řešiteli
25 korektní funkčnost pro všechny požadované kontejnery vector, deque, list, set, map, multiset, multimap čistá a hezká syntaxe i sémantika elegantnost rozhraní modifikačního funktoru absence copy-and-paste bezwarningová zkompilovatelnost komentáře, zejména k rozhraní včasnost odevzdání
26 pouze přes Grupík vše v jednom.zip souboru do sloupečku DU3 pouze zdrojáky (*.cpp. *.h) separátně knihovna a použití demo různých funktorů za poslání nevhodného obsahu budou strhnuty body *.dbg, *.obj,... na začátek každého souboru vložte komentář typu // DU3-Cache.cpp // Karel Vomacka NPRG /2012 při pozdějším odevzdání upozornit mailem cvičitele bodová penalizace
27 termín: úterý :00 Cíle: vlákna, synchronizace některé nové vlastnosti C++ šablony, specializace, politiky Zadání: Napište knihovnu, která umožní asynchronně spouštět kód funktorů
28 Příklad použití knihovny: scheduler<politika> sched; auto task = sched.run([](){ return 1+1; }); std::cout << task->get_result() << std::endl; Třída scheduler má pouze jednu veřejnou metodu run, která pustí vyvolá zadaný funktor v pracovním vláknu task má pouze jednu veřejnou metodu get_result, která má stejný návratový typ, jako operátor() volaného funktoru Metoda počká, dokud nedoběhne výpočet funktoru a poté vrátí jeho výsledek Typ proměnné task může být libovolný (musí mít zmíněnou metodu), ale měl by být jednoduchý a dobře definovaný, aby jej bylo možné používat např. v kontejnerech apod. Destruktor třídy scheduler musí být korektně implementovaný, tj. počká se, dokud se nevyhodnotí všechny funktory a teprve pak se uvolní veškeré zdroje
29 Třída scheduler spravuje množinu pracovních vláken a předává jim funktory k vykonání Vytváření a rušení vláken je řízeno následujícími politikami: thread_pool<int N> Je vytvořeno N pracovních vláken pro vyhodnocování funktorů, pokud není žádné pracovní vlákno volné, vyhodocení počká, dokud se některé vlákno neuvolní. one_thread_per_task<int N> Pro každý funktor je vytvořeno jedno vlákno, které zanikne po vyhodnocení funktoru, maximální počet zároveň běžících je omezen číslem N. one_thread_per_task_with_delay<int N, int milliseconds> Pro každý funktor je vytvořeno jedno vlákno, které zanikne až milliseconds milisekund po vyhodnocení funktoru. Pokud během této doby přijde nový požadavek na vyhodnocení funktoru, použije se toto vlákno
30 Pro práci s vlákny a jejich vzájemnou synchronizaci je nutné použít přímo volání operačního systému Windows, POSIX Veškeré alokované zdroje je nutné korektně uklidit Korektní synchronizace Každý funktor musí být vykonaný právě jednou, apod.
31 Musí být knihovna multiplatformní? Pro zisk 10 bodů stačí, pokud bude podporovat jednu platformu (Windows/POSIX). Za multiplatformnost je možné získat 3 bonusové body. Je nutné dodržet rozhraní a názvy metod/politik? Ano, je to nutné. Představte si, že se jedná o vývoj na zakázku. Nedodržení bude stát 4 body. Skrývají se v zadání nějaká úskalí? Ano, minimálně jedno Funktory vracející typ void. Za cenu 2 bodů je ale knihovna nemusí podporovat. Můžeme si implementaci nějak usnadnit? Můžete předpokládat, že vytvoření vlákna/synchronizačního primitiva se vždy podaří. Funktor nikdy neskončí výjimkou a standardní kontejnery mají dostatek paměti. Vlákna jsou vzájemně nerozlišitelná.
32 korektní funkčnost pro všechny požadované politiky čistá a hezká syntaxe i sémantika elegantnost rozhraní pro třídy implementující politiky absence copy-and-paste bezwarningová zkompilovatelnost komentáře, zejména k rozhraní včasnost odevzdání
33 pouze přes Grupík vše v jednom.zip souboru do sloupečku DU4 pouze zdrojáky (*.cpp. *.h) v souboru main.cpp bude ukázka použití knihovny za poslání nevhodného obsahu budou strhnuty body *.dbg, *.obj,... na začátek každého souboru vložte komentář typu // DU4-Scheduler.cpp // Karel Vomacka NPRG /2012 při pozdějším odevzdání upozornit mailem cvičitele bodová penalizace
Cvičení z programování v C++ ZS 2016/2017 Přemysl Čech
Cvičení z programování v C++ ZS 2016/2017 Přemysl Čech cíl: vytvořit třídu inf_system pro ukládání informací o studentech a zaměstnancích působících na fakultě příklad použití: int main() { inf_system
VíceŠablony, kontejnery a iterátory
7. října 2010, Brno Připravil: David Procházka Šablony, kontejnery a iterátory Programovací jazyk C++ Šablony Strana 2 / 21 Šablona funkce/metody Šablona je obecný popis (třídy, funkce) bez toho, že by
Vícemap, multimap - Asociativní pole v C++.
map, multimap - Asociativní pole v C++. Jedná se o asociativní pole. V asociativním poli jsou uloženy hodnoty ve tvaru (klíč,hodnota), kde klíč je vlastně "index" prvku. Klíčem může být libovolný objekt,
VíceŠablony, kontejnery a iterátory
11. března 2015, Brno Připravil: David Procházka Šablony, kontejnery a iterátory Programovací jazyk C++ Šablony Strana 2 / 31 Obsah přednášky 1 Šablony 2 Abstraktní datové struktury 3 Iterátory 4 Array
VíceMnožina v C++ (set, multiset).
Množina v C++ (set, multiset). Množina je datová struktura, ve které jsou uloženy nějaké prvky. V množině nesmí být dva stejné prvky. Naopak multimnožina může obsahovat i stejné prvky. Nad množinou lze
VíceDomácí úkoly 2013/14
Domácí úkoly 2013/14 SIMD kontejner kontejner odpovídající poli s podporou SIMD operací Single Instruction Multiple Data simd_vector< T, S> T = logický prvek kontejneru pouze jednoduchý datový typ (bez
Více<surface name="pozadi" file="obrazky/pozadi/pozadi.png"/> ****************************************************************************
zdroje/zdroje.xml
VíceŠablony funkcí a tříd (Templates) Genericita
Šablony funkcí a tříd (Templates) Genericita Šablony funkcí Motivace přetížíme funkci pro výpočet minima ze dvou hodnot: int minimum(int a, int b) { return (a
VícePROGRAMOVÁNÍ V C++ CVIČENÍ
PROGRAMOVÁNÍ V C++ CVIČENÍ INFORMACE Michal Brabec http://www.ksi.mff.cuni.cz/ http://www.ksi.mff.cuni.cz/~brabec/ brabec@ksi.mff.cuni.cz gmichal.brabec@gmail.com PODMÍNKY ZÁPOČTU Základní podmínky společné
VícePB161 Programování v jazyce C++ Přednáška 10
PB161 Programování v jazyce C++ Přednáška 10 Šablony Nikola Beneš 27. listopadu 2017 PB161 přednáška 10: šablony 27. listopadu 2017 1 / 33 Šablony PB161 přednáška 10: šablony 27. listopadu 2017 2 / 33
VícePROGRAMOVÁNÍ V C++ CVIČENÍ. Michal Brabec
PROGRAMOVÁNÍ V C++ CVIČENÍ Michal Brabec ARCHITECTURE Input 2 / 15 TASK Vytvořte základní data pro filesystem (zatím v main) Jednu autorizační autoritu Jeden registr souborů Cyklus který zpracovává vstup
Více3. týden Kontejner. 5. týden Exception safe policy. 7. týden 7.4. SAX C opendir. 9. týden Multithreaded network
3. týden 10.3. - Kontejner Zadání DÚ 1 5. týden 24.3. Exception safe policy Termín DÚ 1, Zadání DÚ 2 7. týden 7.4. SAX C opendir Termín DÚ 2, Řešení DÚ 1, Zadání DÚ 3 9. týden 21.4. Multithreaded network
VíceJazyk C++ II. STL knihovna kontejnery část 1
Jazyk C++ II STL knihovna kontejnery část 1 AR 2013/2014 Jazyk C++ II STL kontejnery Kontejnery jsou třídy, jejichž instance slouží k uskladňování dat. Každý druh kontejneru má své výhody a nevýhody. Kontejnery
VíceVector datový kontejner v C++.
Vector datový kontejner v C++. Jedná se o datový kontejner z knihovny STL jazyka C++. Vektor je šablona jednorozměrného pole. Na rozdíl od "klasického" pole má vector, mnoho užitečných vlastností a služeb.
VícePB161 Programování v jazyce C++ Přednáška 3
PB161 Programování v jazyce C++ Přednáška 3 Kontejnery Iterátory Algoritmy Nikola Beneš 4. října 2016 PB161 přednáška 3: kontejnery, iterátory, algoritmy 4. října 2016 1 / 25 Standardní knihovna C++ Už
VíceHrátky s funkcemi. PV173 Programování v C++11. Vladimír Štill, Jiří Weiser. Fakulta Informatiky, Masarykova Univerzita. 29.
Hrátky s funkcemi PV173 Programování v C++11 Vladimír Štill, Jiří Weiser Fakulta Informatiky, Masarykova Univerzita 29. září 2014 Hrátky s funkcemi PV173 29. září 2014 1 / 23 Úvod Na co se podíváme? předávání
VícePB161 Programování v jazyce C++ Přednáška 10
.. PB161 Programování v jazyce C++ Přednáška 10 Šablony Nikola Beneš 23. listopadu 2015 PB161 přednáška 10: šablony 23. listopadu 2015 1 / 29 K zamyšlení Jaký je rozdíl mezi new int[10] a new int[10]()?
VícePB161 Programování v jazyce C++ Přednáška 8
.. PB161 Programování v jazyce C++ Přednáška 8 Výjimky Správa prostředků (RAII) Nikola Beneš 9. listopadu 2015 PB161 přednáška 8: výjimky, RAII 9. listopadu 2015 1 / 24 . PB161 přednáška 8: výjimky, RAII
VícePB161 Programování v jazyce C++ Přednáška 4
PB161 Programování v jazyce C++ Přednáška 4 Přetěžování funkcí Konstruktory a destruktory Nikola Beneš 9. října 2017 PB161 přednáška 4: přetěžování funkcí, konstruktory, destruktory 9. října 2017 1 / 20
VíceZáklady programování (IZP)
Základy programování (IZP) Jedenácté počítačové cvičení Brno University of Technology, Faculty of Information Technology Božetěchova 1/2, 612 66 Brno - Královo Pole Gabriela Nečasová, inecasova@fit.vutbr.cz
VíceKonec a tak. PB173 Programování v C++11. Vladimír Štill, Jiří Weiser. Fakulta Informatiky, Masarykova Univerzita. 15.
Konec a tak PB173 Programování v C++11 Vladimír Štill, Jiří Weiser Fakulta Informatiky, Masarykova Univerzita 15. prosince 2014 Konec a tak PB173 15. prosince 2014 1 / 15 Náplň Perf constexpr initializer
VíceSíťové programování. Berkeley sockets Zdroje. Wikipedia Google Jan Kubr
Síťové programování Berkeley sockets Zdroje Wikipedia Google Jan Kubr Co víte o souborech a operacích s nimi Deskriptor (fd) popisovač, číslo Zápis (write, fwrite, ) - deskriptor, data Čtení (read, fread,
VíceJazyk C++ I. Šablony 2
Jazyk C++ I Šablony 2 AR 2013/2014 Jazyk C++ I Třídy template class TVektor { T *a; int n; static int PocInstanci; public: TVektor(int _n = 0) : n(_n) { a = new T[n]; PocInstanci++; } ~TVektor()
VíceFunkční objekty v C++.
Funkční objekty v C++. Funkční objekt je instance třídy, která má jako svou veřejnou metodu operátor (), tedy operátor pro volání funkce. V dnešním článku si ukážeme jak zobecnit funkci, jak používat funkční
VícePokročilé programování v jazyce C pro chemiky (C3220) Statické proměnné a metody, šablony v C++
Pokročilé programování v jazyce C pro chemiky (C3220) Statické proměnné a metody, šablony v C++ Globální konstantní proměnné Konstantní proměnné specifikujeme s klíčovým slovem const, tyto konstantní proměné
VíceHornerovo schéma. je algoritmus výpočtu hodnoty polynomu P(x) v bodě x 0. eliminuje výpočet i-té mocniny převodem na postupné násobení.
Hornerovo schéma je algoritmus výpočtu hodnoty polynomu P(x) v bodě x 0 n + n 1 + L + + n n 1 1 P( x) = a x a x a x a eliminuje výpočet i-té mocniny převodem na postupné násobení 0 Vstup: Algoritmus výpočtu
VíceStandardní algoritmy vyhledávací.
Standardní algoritmy vyhledávací. Vyhledávací algoritmy v C++ nám umožňují vyhledávat prvky v datových kontejnerech podle různých kritérií. Také se podíváme na vyhledávání metodou půlením intervalu (binární
VíceÚvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií
1 Fakulta elektrotechniky a informatiky Katedra softwarových technologií 12. října 2009 Organizace výuky Přednášky Teoretické základy dle normy jazyka C Cvičení Praktické úlohy odpřednášené látky Prostřední
VícePB161 Programování v jazyce C++ Přednáška 3
PB161 Programování v jazyce C++ Přednáška 3 Kontejnery Iterátory Algoritmy Nikola Beneš 2. října 2018 PB161 přednáška 3: kontejnery, iterátory, algoritmy 2. října 2018 1 / 27 Automatická dedukce typů (od
Vícepřetížení operátorů (o)
přetížení operátorů (o) - pro vlastní typy je možné přetížit i operátory (tj. definovat vlastní) - pro definici slouží klíčové slovo operator následované typem/znakem operátoru - deklarace pomocí funkčního
VíceMartin Flusser. Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague. October 17, 2016
ZPRO cvičení 2 Martin Flusser Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague October 17, 2016 Outline I 1 Outline 2 Proměnné 3 Proměnné - cvičení 4 Funkce 5 Funkce
VíceProgramování v jazyce C a C++
Programování v jazyce C a C++ Příklad na tvorbu třídy Richter 1 4. prosince 2017 1 Ing. Richter Miloslav, Ph.D., UAMT FEKT VUT Brno Dvourozměrné pole pomocí tříd Zadání Navrhněte a napište třídu pro realizace
VíceZákladní datové struktury
Základní datové struktury Martin Trnečka Katedra informatiky, Přírodovědecká fakulta Univerzita Palackého v Olomouci 4. listopadu 2013 Martin Trnečka (UPOL) Algoritmická matematika 1 4. listopadu 2013
VíceProgramování v C++ 3, 3. cvičení
Programování v C++ 3, 3. cvičení úvod do objektově orientovaného programování 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled Dokončení spojového
Více2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus pro vyhledání položky v binárním stromu.
Informatika 10. 9. 2013 Jméno a příjmení Rodné číslo 1) Napište algoritmus pro rychlé třídění (quicksort). 2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus
VíceProgramování v C++ 1, 5. cvičení
Programování v C++ 1, 5. cvičení konstruktory, nevirtuální dědění 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled 1 2 3 Shrnutí minule procvičené
VíceProgramování v C++ 2, 4. cvičení
Programování v C++ 2, 4. cvičení statické atributy a metody, konstruktory 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled Přístupová práva
Vícefor (i = 0, j = 5; i < 10; i++) { // tělo cyklu }
5. Operátor čárka, - slouží k jistému určení pořadí vykonání dvou příkazů - oddělím-li čárkou dva příkazy, je jisté, že ten první bude vykonán dříve než příkaz druhý. Např.: i = 5; j = 8; - po překladu
VícePB161 6. přednáška (26. října 2015)
PB161 6. přednáška (26. října 2015) Standardní knihovna C++ obsahuje řadu částí, některé už jsme viděli (strings, I/O streams) mimo jiné obsahuje i knihovní funkce ze standardní knihovny jazyka C jiné
VícePB přednáška (23. listopadu 2015)
PB161 10. přednáška (23. listopadu 2015) Šablony Motivace snaha o co nejmenší duplikaci kódu co když máme kód, který chceme použít pro různé typy? generická funkce (maximum, minimum, swap, ) kontejnery
VíceJazyk C++ II. STL knihovna kontejnery část 2
Jazyk C++ II STL knihovna kontejnery část 2 AR 2013/2014 Jazyk C++ II Asociativní kontejnery Slovníky u kterých pořadí dat nemá smysl. Kontejner si sám určuje, kam který údaj uloží. Údaje mají tvar klíč/hodnota.
VíceMnožina čísel int stl-set-int.cpp
Řetězce, pole a STL V C++ je výhodné pro práci s řetězci použít třídu string, funkce C jsou stále k dispozici cstring, ukazatele a pole lze stále používat stejně, jako v C, použití iterátorů a dalších
VíceStandardní algoritmy v C++.
Standardní algoritmy v C++. Standardní algoritmy jsou součástí STL. Jedná se o spoustu užitečných šablon funkcí, které za nás naprogramoval někdo jiný. Na nás je jen, abychom je používali. Také si ukážeme
VíceZáklady programování (IZP)
Základy programování (IZP) Deváté počítačové cvičení Brno University of Technology, Faculty of Information Technology Božetěchova 1/2, 612 66 Brno - Královo Pole Petr Veigend, iveigend@fit.vutbr.cz 27.11.2017,
VíceSingleton obsah. Motivace Základní myšlenka Implementace Problémy. Dědičnost Obecná implementace Shrnutí. destrukce vícevláknovost
Singleton Singleton obsah Motivace Základní myšlenka Implementace Problémy destrukce vícevláknovost Dědičnost Obecná implementace Shrnutí Singleton motivace Co mají následující příklady společného? DatabaseConnectionPool
VíceJazyk C++, některá rozšíření oproti C
Karel Müller, Josef Vogel (ČVUT FIT) Jazyk C++, některá rozšíření oproti C BI-PA2, 2011, Přednáška 1 1/22 Jazyk C++, některá rozšíření oproti C Ing. Josef Vogel, CSc Katedra softwarového inženýrství Katedra
VíceŘetězce. Karel Richta a kol. katedra počítačů FEL ČVUT v Praze. Karel Richta, Martin Hořeňovský, Aleš Hrabalík, 2016
Řetězce Karel Richta a kol. katedra počítačů FEL ČVUT v Praze Karel Richta, Martin Hořeňovský, Aleš Hrabalík, 2016 Programování v C++, A7B36PJC 4/2016, Lekce 9c https://cw.fel.cvut.cz/wiki/courses/a7b36pjc/start
VíceÚvod do programovacích jazyků (Java)
Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2007/2008 c 2006 2008 Michal Krátký Úvod do programovacích
VíceJazyk C++ II. Šablony a implementace
Jazyk C++ II Šablony a implementace AR 2013/2014 Jazyk C++ II Úvod Dědičnost a kompozice nejsou vždy tou správnou odpovědí na požadavky znovupoužitelnosti kódu. Proto máme možnost definování určité třídy
VíceAbstraktní třídy, polymorfní struktury
Karel Müller, Josef Vogel (ČVUT FIT) Abstraktní třídy, polymorfní struktury BI-PA2, 2011, Přednáška 9 1/32 Abstraktní třídy, polymorfní struktury Ing. Josef Vogel, CSc Katedra softwarového inženýrství
Vícepřetížení operátorů (o)
přetížení operátorů (o) - pro vlastní typy je možné přetížit i operátory (tj. definovat vlastní) - pro definici slouží klíčové slovo operator následované typem/znakem operátoru - operátor je speciální
VícePokročilé programování v jazyce C pro chemiky (C3220) Operátory new a delete, virtuální metody
Pokročilé programování v jazyce C pro chemiky (C3220) Operátory new a delete, virtuální metody Dynamická alokace paměti Jazyky C a C++ poskytují programu možnost vyžádat si část volné operační paměti pro
VíceC++ objektově orientovaná nadstavba programovacího jazyka C
C++ objektově orientovaná nadstavba programovacího jazyka C (1. část) Josef Dobeš Katedra radioelektroniky (13137), blok B2, místnost 722 dobes@fel.cvut.cz 5. května 2014 České vysoké učení technické v
VícePreprocesor. Karel Richta a kol. katedra počítačů FEL ČVUT v Praze. Karel Richta, Martin Hořeňovský, Aleš Hrabalík, 2016
Preprocesor Karel Richta a kol. katedra počítačů FEL ČVUT v Praze Karel Richta, Martin Hořeňovský, Aleš Hrabalík, 2016 Programování v C++, A7B36PJC 4/2016, Lekce 9b https://cw.fel.cvut.cz/wiki/courses/a7b36pjc/start
VíceIUJCE Přednáška č. 11. další prvky globální proměnné, řízení viditelnosti proměnných, funkcí
Velké projekty v C velký = 100ky a více řádek udržovatelnost, bezpečnost, přehlednost kódu rozdělení programu do více souborů další prvky globální proměnné, řízení viditelnosti proměnných, funkcí Globální
VíceKonstruktory a destruktory
Konstruktory a destruktory Nedostatek atributy po vytvoření objektu nejsou automaticky inicializovány hodnota atributů je náhodná vytvoření metody pro inicializaci, kterou musí programátor explicitně zavolat,
VíceMartin Flusser. Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague. December 7, 2016
ZPRO cvičení 8 Martin Flusser Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague December 7, 2016 Outline I 1 Outline 2 Dynamické alokování paměti 3 Dynamická alokace
VíceC++ přetěžování funkcí a operátorů. Jan Hnilica Počítačové modelování 19
C++ přetěžování funkcí a operátorů 1 Přetěžování funkcí jazyk C++ umožňuje napsat více funkcí se stejným názvem, těmto funkcím říkáme přetížené přetížené funkce se musí odlišovat typem nebo počtem parametrů,
VíceVlákna a přístup ke sdílené paměti. B4B36PDV Paralelní a distribuované výpočty
Vlákna a přístup ke sdílené paměti B4B36PDV Paralelní a distribuované výpočty Minulé cvičení: Paralelizace nám může pomoct... 1 Minulé cvičení: Paralelizace nám může pomoct... B4B36PDV: Ale ne všechny
VíceSingleton obsah. n Motivace. n Základní myšlenka. n Implementace. n Problémy. n Dědičnost. n Obecná implementace. n Shrnutí.
Singleton Singleton obsah n Motivace n Základní myšlenka n Implementace n Problémy q destrukce q vícevláknovost n Dědičnost n Obecná implementace n Shrnutí Singleton motivace n Co mají následující příklady
Vícebonus (max +2 body): bezpečné řešení v debug módu a[x][y] (a.rows()[x][y] a.cols()[x][y]) odchytávat všechny nedefinované akce
termín: středa 13.3. 12:00 (poledne) vytvořit kontejner dvourozměrná matice dopředné (forward) iterátory přes sloupce i řádky velikost fixní, určená parametry konstruktoru kopie kontejneru včetně změny
VícePB161 Programování v jazyce C++ Přednáška 1
PB161 Programování v jazyce C++ Přednáška 1 Organizace Úvod do C++ Nikola Beneš 18. září 2018 PB161 přednáška 1: organizace, úvod do C++ 18. září 2018 1 / 36 Cíle předmětu 1. ukázat možnosti jazyka C++
VícePB161 Programování v jazyce C++ Přednáška 9
PB161 Programování v jazyce C++ Přednáška 9 Jmenné prostory Výjimky podrobně Nikola Beneš 20. listopadu 2018 PB161 přednáška 9: jmenné prostory, výjimky 20. listopadu 2018 1 / 32 Jmenné prostory PB161
VícePB161 Programování v jazyce C++ Přednáška 9
PB161 Programování v jazyce C++ Přednáška 9 Právo friend Přetěžování operátorů Nikola Beneš 16. listopadu 2015 PB161 přednáška 9: friend, přetěžování operátorů 16. listopadu 2015 1 / 30 Reklama PB173 Tematicky
VíceVÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu
VÝUKOVÝ MATERIÁL Identifikační údaje školy Vyšší odborná škola a Střední škola, Varnsdorf, příspěvková organizace Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632
VíceC++ 0x aka C++11. Základním kamenem je třída std::thread
C++ 0x aka C++11 Jako jiné jazyky, např. Free/Object Pascal, se C++ ve standardu ++0x dočkal podpory vláken Výhodou je, že standardní knihovna je platformě nezávislá na úrovni zdrojového kódu Základním
VíceObsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15
Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15 KAPITOLA 1 Úvod do programo vání v jazyce C++ 17 Základní pojmy 17 Proměnné a konstanty 18 Typy příkazů 18 IDE integrované vývojové
VícePB161 Programování v jazyce C++ Přednáška 9
PB161 Programování v jazyce C++ Přednáška 9 Jmenné prostory Výjimky podrobně Nikola Beneš 20. listopadu 2018 PB161 přednáška 9: jmenné prostory, výjimky 20. listopadu 2018 1 / 32 Jmenné prostory PB161
VícePB161 Programování v jazyce C++ Přednáška 1
PB161 Programování v jazyce C++ Přednáška 1 Organizace Úvod do C++ Nikola Beneš 18. září 2018 PB161 přednáška 1: organizace, úvod do C++ 18. září 2018 1 / 36 Cíle předmětu 1. ukázat možnosti jazyka C++
VíceDomácí úkoly Pokročilé programování v C++ LS 2015/2016. NPRG051 Pokročilé programování v C / DÚ
Domácí úkoly Pokročilé programování v C++ LS 2015/2016 1 DÚ 1 continuation termín: pondělí 14.3. 23:59 2 DÚ 1 - continuation continuation f(int argc, char * * argv) { if (!argc) return done(); std::cout
VíceMichal Krátký. Úvod do programovacích jazyků (Java), 2006/2007
Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků
VíceSít ová komunikace v C++
5. prosince 2016, Brno Připravil: David Procházka Sít ová komunikace v C++ Programovací jazyk C++ Protokoly Strana 2 / 28 Obsah přednášky 1 Protokoly 2 Typy aplikací 3 CGI 4 Samostatná TCP aplikace 5 Vyšší
VíceVíce o konstruktorech a destruktorech
Více o konstruktorech a destruktorech Více o konstruktorech a o přiřazení... inicializovat objekt lze i pomocí jiného objektu lze provést přiřazení mezi objekty v původním C nebylo možné provést přiřazení
VíceDědičnost. Časová náročnost lekce: 3 hodiny Datum ukončení a splnění lekce: 23.března
Dědičnost Cíle lekce Cílem lekce je naučit se pracovat a využívat dědičnosti při návrhu a tvorbě programů. Lekce je zaměřena hlavně na jednoduchou dědičnost. Bude rovněž vysvětlen rozdíl mezi dědičností
Více3. týden týden týden týden týden týden Termín DÚ: vždy úterý 9:00. Zadání DÚ 1
3. týden 6.3. Zadání DÚ 1 5. týden 20.3. Termín DÚ 1, Zadání DÚ 2 7. týden 3.4. Termín DÚ 2, Řešení DÚ 1, Zadání DÚ 3 9. týden 17.4. Termín DÚ 3, Řešení DÚ 2, Zadání DÚ 4 11. týden 1.5. Termín DÚ 4 13.
VíceProgramování v C++ 1, 1. cvičení
Programování v C++ 1, 1. cvičení opakování látky ze základů programování 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled 1 2 Shrnutí procvičených
VíceEmbedded SQL v C/C++ úvod. Administrace Oracle Kateřina Opočenská
Embedded SQL v C/C++ úvod Administrace Oracle Kateřina Opočenská Motivace potřeba začlenit komunikaci s databází do aplikace v nějakém vyšším programovacím jazyce řešení (na Oracle): a) OCI (Oracle Call
VíceProgramování v C++ 2, 8. cvičení
Programování v C++ 2, 8. cvičení návrhový vzor iterátor 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled 1 2 Shrnutí minule procvičené látky
VícePokročilé programování v jazyce C pro chemiky (C3220) Třídy v C++
Pokročilé programování v jazyce C pro chemiky (C3220) Třídy v C++ Třídy v C++ Třídy jsou uživatelsky definované typy podobné strukturám v C, kromě datových položek (proměnných) však mohou obsahovat i funkce
VíceZáklady C++ I. Jan Hnilica Počítačové modelování 18
Základy C++ I 1 Přechod z C na C++ jazyk C++ je nadmnožinou jazyka C z hlediska syntaxe se jedná o velmi podobné jazyky, spolu s dalšími jazyky "céčkovské" rodiny, jako je např. C# každý platný program
VíceDavid Bednárek Jakub Yaghob Filip Zavoral. http://data.ksi.ms.mff.cuni.cz/svn/nprg051pub/html/nprg051.html
David Bednárek Jakub Yaghob Filip Zavoral http://data.ksi.ms.mff.cuni.cz/svn/nprg051pub/html/nprg051.html Interoperabilita C++ a C, dll, C++ a.net, C++/CLI Nové normy a knihovny C++11/14/17, lambda výrazy,
VíceC++ objektově orientovaná nadstavba programovacího jazyka C
C++ objektově orientovaná nadstavba programovacího jazyka C (2. část) Josef Dobeš Katedra radioelektroniky (13137), blok B2, místnost 722 dobes@fel.cvut.cz 18. května 2015 České vysoké učení technické
VíceNPRG051 Pokročilé programování v C /17 Úkol 2
NPRG051 Pokročilé programování v C++ 2016/17 Úkol 2 Téma Async I/O B-Tree server Motivace Typická databáze: stromové indexy výkon odvozený od rychlosti disku rychlosti synchronizace při paralelním přístupu
VíceRozhraní Sockets Java a C (BSD)
Rozhraní Sockets Java a C (BSD) Počítačové sítě 3. cvičení Seznámení s Virtlabem Aktivní úlohy odkazy na konzoly rezervovaných zařízení Pozor na kvóty Používat záznam, zálohovat si konfiguraci před ukončením
VíceIterátory v C++. int pole[20]; for (int *temp = pole, temp!= &pole[20]; temp++) { *temp = 0;
Iterátory v C++. Iterátor v C++ je vlastně taková obdoba ukazatelů pro kontejnery. Dříve, než se dostaneme k bližšímu vysvětlení pojmu iterátor, ukážeme si jednoduchý příklad, jak pracovat s obyčejným
VíceZpracoval: houzvjir@fel.cvut.cz
Zpracoval: houzvjir@fel.cvut.cz 10. Objektově orientované programování v C++. Přetěţování operátorů, generické funkce a třídy, výjimky, knihovny. (A7B36PJC) Obsah OOP v C++... 2 Pro připomenutí - Základní
VíceVýrazy, operace, příkazy
Výrazy, operace, příkazy Karel Richta a kol. katedra počítačů FEL ČVUT v Praze Přednášky byly připraveny s pomocí materiálů, které vyrobili Ladislav Vágner, Pavel Strnad Karel Richta, Martin Hořeňovský,
VíceIUJCE 07/08 Přednáška č. 1
Úvod do předmětu Literatura Záznamy přednášek a vaše poznámky Harbison, S. P., Steele, G. L.: Referenční příručka jazyka C Herout, P.: Učebnice jazyka C Kernighan, B. W., Ritchie, D. M.: The C Programming
VíceProstory jmen. při vkládání několika hlavičkových souborů může vzniknout kolize. logika.h const int x=5; typedef struct {...
Proudy v C++ Jmenné prostory Prostory jmen při vkládání několika hlavičkových souborů může vzniknout kolize zeleznice.h const int x=10; typedef struct {... } Hradlo; logika.h const int x=5; typedef struct
Více14.4.2010. Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.
Základy programování (IZAPR) Přednáška 7 Ing. Michael Bažant, Ph.D. Katedra softwarových technologií Kancelář č. 229, Náměstí Čs. legií Michael.Bazant@upce.cz Obsah přednášky 7 Parametry metod, předávání
VíceMichal Krátký. Úvod do programovacích jazyků (Java), 2006/2007
Úvod do programovacích jazyků (Java) Michal Krátký 1 Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků
VíceMartin Flusser. December 15, 2016
ZPRO cvičení 9 Martin Flusser Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague December 15, 2016 Outline I 1 Outline 2 Struktura 3 Struktury cv 4 Lineární spojový
VíceMichal Krátký. Úvod do programovacích jazyků (Java), 2006/2007
Úvod do programovacích jazyků (Java) Michal Krátký 1 Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků
VíceAbstraktní datové typy
Karel Müller, Josef Vogel (ČVUT FIT) Abstraktní datové typy BI-PA2, 2011, Přednáška 10 1/27 Abstraktní datové typy Ing. Josef Vogel, CSc Katedra softwarového inženýrství Katedra teoretické informatiky,
VíceZPRO v "C" Ing. Vít Hanousek. verze 0.3
verze 0.3 Hello World Nejjednoduší program ukazující vypsání textu. #include using namespace std; int main(void) { cout
VíceUkazatele, dynamická alokace
Ukazatele, dynamická alokace Karel Richta a kol. katedra počítačů FEL ČVUT v Praze Přednášky byly připraveny s pomocí materiálů, které vyrobili Ladislav Vágner, Pavel Strnad, Martin Mazanec Karel Richta,
VíceGenerické programování
Generické programování Od C# verze 2.0 = vytváření kódu s obecným datovým typem Příklad generická metoda, zamění dva parametry: static void Swap(ref T p1, ref T p2) T temp; temp = p1; p1 = p2; p2 =
VícePráce s knihovnami. Karel Richta a kol. katedra počítačů FEL ČVUT v Praze. Karel Richta, Martin Hořeňovský, Aleš Hrabalík, 2016
Práce s knihovnami Karel Richta a kol. katedra počítačů FEL ČVUT v Praze Karel Richta, Martin Hořeňovský, Aleš Hrabalík, 2016 Programování v C++, A7B36PJC 04/2016, Lekce 7 https://cw.fel.cvut.cz/wiki/courses/a7b36pjc/start
VíceMělká a hluboká kopie
Karel Müller, Josef Vogel (ČVUT FIT) Mělká a hluboká kopie BI-PA2, 2011, Přednáška 5 1/28 Mělká a hluboká kopie Ing. Josef Vogel, CSc Katedra softwarového inženýrství Katedra teoretické informatiky, Fakulta
VíceBitové operátory a bitová pole. Úvod do programování 2 Tomáš Kühr
Bitové operátory a bitová pole Úvod do programování 2 Tomáš Kühr Bitové operátory Provádějí danou operaci s jednotlivými bity svých operandů Operandy bitových operátorů mohou být pouze celočíselné Vyhodnocení
Více