bonus (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
|
|
- Adam Malý
- před 6 lety
- Počet zobrazení:
Transkript
1
2 termín: středa :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 rozměrů, nutná podpora move neřešit metody pro zvětšování a zmenšování bonus (max +2 body): správné řešení const kontejneru bonus (max +2 body): indexace přes řádky i sloupce a[x][y] (a.rows()[x][y] a.cols()[x][y]) bonus (max +2 body): bezpečné řešení v debug módu odchytávat všechny nedefinované akce
3 typedef matrix< int> my_matrix; int cnt = 100; void f1( my_matrix::cols_t::value_type::reference x) { x = ++cnt; } void f2( my_matrix::cols_t::reference r) { for_each( r.begin(), r.end(), f1); } void f3( my_matrix::rows_t::value_type::reference x) { cout << x << " "; } void f4( my_matrix::rows_t::reference r) { for_each( r.begin(), r.end(), f3); cout << endl; } int main( int argc, char ** argv) { my_matrix a( 3, 4, 0); for_each( a.cols().begin(), a.cols().end(), f2); for_each( a.rows().begin(), a.rows().end(), f4); } procházení prvků sloupce procházení po sloupcích procházení po řádkách
4 vytvořené třídy musí být kompatibilní s STL kontejnery a algoritmy všechny vyžadující forward iterator - for_each pro pomocné třídy cols/rows vytvořit: typy: iterator, reference, value_type metody: begin(), end(), size(), bonus: op[] iterátory: 5 typů, *, ->, ++, =, == celkem 4 pomocné kvazi-kontejnery: řádky, sloupce, prvky v řádku, prvky v sloupci to celé znásobeno podporou const (bonus)
5 problém: kvazikontejner vrací iterátor, ten má svoji hvězdičkou zpřístupnit něco, co v té matici nemusí být (typicky sloupec) možné řešení: * na iterátoru vrátí hodnotou pomocnou na na místě sestrojenou třídu normálně * vrací T& tady nás k tomu sice nic nenutí musí se to ale chovat podobně pozor: na iterátoru musí být -> (požadavek normy) běžné řešení: vrátí ukazatel na typ s příslušnými metodami není ale na co vrátit * nebo: vrátí jinou třídu s přetíženým operátorem -> jiná třída - proxy na sloupec
6 včasnost za nedodržení termínu body prudce dolů přeložitelnost přeložitelné bez chyb a (pokud možno) warningů kompatibilní s vzorem použití (rozhraní je pevné) multiplatformnost nezávislost na OS, bitovosti, překladači - vyzkoušejte i gcc32/vs64 stabilita rozhodně vyzkoušejte všechna možná přípustná data a typy kultura kódu pravidla, moudra, dobré zvyky, udržovatelnost, estetika, čitelnost odevzdávací formality a konvence názvy a struktura souborů, komentáře
7 indexace přes řádky i sloupce max +2 body a[x][y] (a.rows()[x][y]) a.cols()[x][y] bezpečné řešení v debug módu max +2 body odchytávat všechny nedefinované akce du_assert(e) if( e == 0) chyba v debug verzi du_assert vypíše lokaci a skončí v release verzi (definováno makro DU_NDEBUG) nedělá nic - odletí
8 v du1.zip najdete 4 soubory du1test.cpp kód používající vaše řešení - neměňte - zachovat rozhraní! můžete (velmi doporučeno!) přidat vlastní testy du1debug.hpp definice pro bonus - du_assert du1matrix.cpp, du1matrix.hpp sem doplňte kód a hlavičkový soubor vašeho řešení soubory nepřejmenovávejte na začátek každého souboru vložte komentář typu // DU1matrix.cpp // Karel Vomacka NPRG /2013 vaše řešení vložte do Grupíčku - neposílejte em! správné soubory do správných sloupečků!
9
10 termín: středa :00 (poledne) Cíle: Pokročilé použití šablon Politiky Zadání: Vytvořte objektovou knihovnu pro parsování argumentů předaných programu na příkazové řádce. Knihovna musí umožnit uživateli pomocí politik nastavit její detailní chování.
11 Podpora přepínačů bez parametrů tail --help Podpora přepínačů s typovaným parametrem (řetězce, číslo,...) make f makefile j 20 Podpora typovaných argumentů (řetězce, čísla,...) seq Snadná rozšiřitelnost množiny typů, které knihovna umí naparsovat Bonus formátovaný výpis nápovědy programu
12 Konvence DOS/Windows dir /L /A:D POSIX ls s width=40 T 8 Java java cp. verbose:jni ds Co dělat při neznámém přepínači Vyhodit výjimku Ignorovat Považovat za argument Vypsat chybu a skončit
13 Co dělat s rozpoznanými přepínači Nechat být Odstranit z argv a aktualizovat argc Použití u různých knihoven, viz gtk_init, QApplication,... Co dělat při chybném formátu parametru přepínače nebo argumentu Vyhodit výjimku Vypsat chybu a skončit Co dělat s neočekávanými argumenty Ignorovat Vyhodit výjimku Vypsat chybu a skončit Parser musí umět pracovat s ANSI znaky (char) i s širokými znaky (wchar_t)
14 std::wstring file_name; size_t count = 0; size_t size = 0; bool verbose = false; std::vector<std::wstring> argumenty; parser<posix, wchar_t,...> p; p.add( f nebo --file ulož do file_name); p.add( -c nebo --count ulož do size); p.add( --size ulož do size); p.add(pokud se vyskytne v nebo -verbose ulož do verbose true); p.set_arguments_container(argumenty); p.parse(argc, argv); Příklad je pro konvenci POSIX, pro ostatní konvence by mělo být použití obdobné. Kromě vektorů by mělo být možné vkládat argumenty do listů a množin.
15 enum prefix_type { KILO, MEGA, GIGA }; prefix_type prefix; parser<dos,...> p; p.add( /P ulož do prefix); p.parse(argc, argv); Pozn.: hodnota parametru přepínače /P může být jedno z písmen K (KILO), M (MEGA) nebo G (GIGA). Je tedy nutné zajistit, aby se textová hodnota parametru přepínače převedla na správnou hodnotu výčtu. Funkci, která převede text na hodnotu daného typu musí samozřejmě napsat uživatel knihovny. Knihovna by ale měla poskytovat snadno použitelný mechanismus, jak integrovat uživatelské konvertory.
16 std::string log_file; Parser<Java, char_t, odstraň rozpoznané,...> p; p.add( l ulož do log_file); p.parse(argc, argv); Po spuštění programu s parametry: -f soubor1 l soubor2 soubor3 a spuštění parsování, bude argc a argv stejné, jako kdyby byl program spuštěn s parametry: -f soubor1 soubor3
17 bool show_help; enum attribute_type { HIDDEN, DIRECTORY }; attribute_type attribute; parser<dos,...> p; p.add(pokus se vyskytne /H ulož do show_help true, nápověda k přepínači je Show help ); p.add( /A ulož do attribute, nápověda k přepínači je File attribute. Supported types are:\nh Hidden\nD Directory ); p.show_help(); Výsledek: /H Show help /A:attribute File attribute. Supported types are: H - Hidden D - Directory Použití pro ostatní konvence by mělo být podobné a výstup by měl odpovídat zvolené konvenci.
18 Nezapomenout na možnost částečné nebo parciální specializace šablon, takže lze dosáhnout jiného chování pro různé typy, např. pro typ char a wchar_t. Prozkoumat, co je ve skutečnosti std::string, std::stream atd. a jestli toho nelze využít pro pohodlnou a jednotnou práci s různými typy znaků. Všechny kontejnery v STL umožňují zjistit typ prvků, které uchovávají pomocí členského typu value_type. std::istringstream se může hodit (nejen) pro konverzi řetězce na číslo
19 Kvůli různým typům znaku (char a wchar_t) budou pravděpodobně i samotné politiky šablonami. Pokud je potřeba specifikovat, že parametrem šablony je opět šablona, je třeba postupovat přibližně takhle: template <template <typename> class TPolicy, typename TChar> struct trida{ void do_something() { TPolicy<TChar>::do_something(); } }; template <typename TChar> struct politika { static void do_something() {} }; trida<politika, char> t; t.do_something();
20 Čistá a hezká syntaxe i sémantika Kvalita navrženého rozhraní knihovny Není třeba si lámat hlavu s tím, jak přesně se má knihovna chovat, jaké všechny formáty argumentů akceptovat a kolik mezer vypisovat. Zadání je schválně vágní, takže řešení mohou být značně variabilní. Návrh rozhraní jednotlivých politik Politiky musí skutečně implementovat dílčí kroky algoritmů a nikoliv jenom poskytovat konstanty apod., podle kterých se algoritmus bude řídit Ošetření výjimečných a chybových stavů Bezwarningová zkompilovatelnost (ideálně GCC i MSVC) Včastnost odevzdání Minimalizace duplicitního kódu (např. kód pro práci s řetězci by měl být napsaný pouze jednou tak, aby pracoval jak s char, tak s wchar_t
21 Součástí řešení musí být soubor du2_main.cpp, který ukazuje použití knihovny, zbytek (tj. celou knihovnu) musí tvořit pouze hlavičkové soubory (vzhledem k použití šablon to jinak ani nepůjde). Jeden ze souborů knihovny musí mít jméno du2_parser.h, jehož includováním se zpřístupní všechny potřebné třídy a funkce knihovny. na začátek každého souboru vložte komentář typu // DU2-ARG.cpp // Karel Vomacka NPRG /2011 vaše řešení vložte do Grupíčku - neposílejte em! správné soubory do správných sloupečků!
22 David Bednárek Jakub Yaghob Filip Zavoral
23 Termín: +14 days Zadání: Cieľom zadanie je vytvorenie automatizovaného prekladača, ktorý za pomoci slovníku preloží text náhradou slova za slovo prekladu. Slovník je pravidelne updatovaný v priebehu prekladu novými verziami, ktoré musia byť v preklade zohľadnené, čiže nové preklady musia byť zapracované do už prekladaného textu. Update je realizovaný pri načítaní textového reťazca zo vstupu.update alebo je kontrolovaná prítomnosť súboru s updatami každú sekundu. Koniec prekladu je pri načítaní vstupu.end (čiže program môže dostať update aj po skončení prekladu). Program musí ukazovať v konzolovom okne ako ďaleko je asi s prekladom. Ciele Multithread Korektné použitie synchronizačných primitív Rýchlosť výslednej implementácie Multiplatformovosť
24 Text Slovník Update Slovníka Update Slovníka Update Slovníka TrollTranslator User input User input User input User input Translated Text
25 Zdrojový (Source) text vlastnosti ASCII Slovo - Alfanumerický reťazec oddelený medzerami White spaces medzery, tabulátory, \n Bez exotických znakov Značná dĺžka (napr >> 1GB), vojde sa do RAM Cieľový (Target) text vlastnosti 1:1 preklad zo zdrojového textu Preklad musí byť realizovaný tak, akoby prv prebehli všetky updaty na slovník a až potom sa začalo prekladať Musí byť zachovaný počet White Spaces Treba zachovať upper a lower case XXX sa preloží na YYY XxX sa preloži na YyY
26 Surjektívne zobrazenie z množiny zdrojových slov na cieľové slová Nieje lexikograficky zotriedený Treba ignorovať case u slovníkových párov, dôležitý je case u zdrojových dát Môže obsahovať duplicitné páry Značná veľkost (>> 1GB) vojde sa do RAM Formát update je rovnaký ako formát slovníku Formát Srcword : targetword Napr: 1 : 2 4 : 5 1 : 2 A:2
27 V prípade detekcie zapisovania užívateľského vstupu sa preklad zastaví kým nieje dokončený vstup (text do konzole) stlačením enteru. Typy vstupu.dictionary špecifikuje slovník, ktorý je uvedný za.dictionary Napr:.dictionary preklad.dict V prípade že je toto detekované v priebehu prekladu, prekladový slovník je považvaný za update Default: dictionary.dict.update špecifikuje update slovníka za slovom.update Napr:.update update.dict Default je update.dict.begin začne preklad, vstupný súbor je za slovom update Napr:.begin in.txt Default: špecifikovaný parametrom i alebo input.txt.end ukončí preklad a uloži do súboru špecifikovanom za.end, napr:.end output.txt Default: špecifikovaný parametrom o alebo output.txt
28 Multithreaded dizajn Správne a dostatočné použitie synchronizačných primitiv Overall Dizajn Dokumentácia Funkčnosť Rýchlosť
29 Multiplatformovosť Najrýchlejšie riešenie dostane bonus -95% za singlethread
30 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 // DU3-xxx.cpp // Karel Vomacka NPRG /2013
31 Použite rôzne thready na rôzne činnosti read/write translate Update user input
32 Pravidlo 0 kto má záujem o komentáre k DÚ v elektronickej forme, nech si o ne explicitne napíše na moj (tomas.plch@gmail.com) Pravidlo 1 - keď nerozumiem, zeptám se... y ešte stále fungujú Pravidlo 2 dodržte zadanie Pravidlo 3 komentujte svoj kód Pravidlo 4 nepíšte do kódu veci ako Policy Crap Pravidlo 5 neprekomplikujte svoje riešenie
3. 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.
3. 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
Domá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
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
Domá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
PB161 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
PB161 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]()?
Šablonové metaprogramování v C++ Miroslav Virius KSI FJFI ČVUT
Šablonové metaprogramování v C++ Miroslav Virius KSI FJFI ČVUT Šablonové (generické) metaprogramování Šablona v C++, genericita v jiných jazycích Výpočetní úplnost Problémy Příklad Porovnání s klasickým
Programová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
PROGRAMOVÁ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é
Funkč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í
Pokroč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é
PB161 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
PROGRAMOVÁ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
Odvozené a strukturované typy dat
Odvozené a strukturované typy dat Petr Šaloun katedra informatiky FEI VŠB-TU Ostrava 14. listopadu 2011 Petr Šaloun (katedra informatiky FEI VŠB-TU Ostrava) Odvozené a strukturované typy dat 14. listopadu
Jazyk 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
Zá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
Ú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í
Množ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
Jazyk 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
Standardní 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í
PB 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
map, 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,
Jazyk 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()
Příkazy preprocesoru - Před překladem kódu překladačem mu předpřipraví kód preprocesor - Preprocesor vypouští nadbytečné (prázdné) mezery a řádky -
Příkazy preprocesoru - Před překladem kódu překladačem mu předpřipraví kód preprocesor - Preprocesor vypouští nadbytečné (prázdné) mezery a řádky - Preprocesor je možné ovládat pomocí příkazů - řádky začínající
Š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
Úvod do programování. Lekce 1
Úvod do programování Lekce 1 Základní pojmy vytvoření spustitelného kódu editor - psaní zdrojových souborů preprocesor - zpracování zdrojových souborů (vypuštění komentářů atd.) kompilátor (compiler) -
Martin 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
Jazyk C++ I. Šablony
Jazyk C++ I Šablony AR 2013/2014 Jazyk C++ I Úvod Zatím známe programovací styly: Strukturované programování, Objektově orientované programovaní. AR 2013/2014 Jazyk C++ I 2 Příklady void Print(const int&
Obsah. 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é
Programová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
Jazyk 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
<surface name="pozadi" file="obrazky/pozadi/pozadi.png"/> ****************************************************************************
zdroje/zdroje.xml
Struktury a dynamická paměť
Struktury a dynamická paměť Petyovský, Macho, Richter (bpc2a_cv12), ver. 2017.2 Definujte strukturu TVector pro dynamické pole dat typu double. Definujete strukturu TMatrix, která bude obsahovat dynamické
Programovací jazyk C++ Hodina 1
Programovací jazyk C++ Hodina 1 Používané překladače Bloodshed Dev C++ http://www.bloodshed.net/devcpp.html CodeBlocks http://www.codeblocks.org pokud nemáte již nainstalovaný překladač, stáhněte si instalátor
Třídy a struktury v C++
katedra informatiky FEI VŠB-TU Ostrava 7. prosince 2015 Odvozené a strukturované typy dat v C základní datové typy součást normy jazyka, preprocesor použití netypových maker, raději voĺıme konstanty d
IUJCE 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
Jazyk C# (seminář 6)
Jazyk C# (seminář 6) Pavel Procházka KMI 29. října 2014 Delegát motivace Delegáty a události Jak docílit v C# funkcionální práce s metodami v C je to pomocí pointerů na funkce. Proč to v C# nejde pomocí
Zá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,
Š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
PB161 Programování v C++ Proudy pro standardní zařízení Souborové proudy Paměťové proudy Manipulátory
PB161 Programování v C++ Proudy pro standardní zařízení Souborové proudy Paměťové proudy Manipulátory Výhody objektového řešení Nástroje pro IO operace jsou v C++ součástí knihoven Hierarchie objektových
7 Formátovaný výstup, třídy, objekty, pole, chyby v programech
7 Formátovaný výstup, třídy, objekty, pole, chyby v programech Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost formátovanému výstupu,
Preprocesor. 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
termín: utorok :00 (poledne) Cíle: Zadání:
termín: utorok 20.3. 12: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
1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:
1. lekce 1. Minimální program do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme: #include #include int main() { printf("hello world!\n"); return 0; 2.
Ví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í
Algoritmizace a programování
Algoritmizace a programování Struktura programu Vytvoření nové aplikace Struktura programu Základní syntaktické elementy První aplikace Verze pro akademický rok 2012/2013 1 Nová aplikace NetBeans Ve vývojovém
Vector 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.
Ú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
PB161 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
Obsah přednášky. 12. Dokumentace zdrojového kódu Tvorba elektronické dokumentace UML. Co je diagram tříd. Ing. Ondřej Guth
Evropský sociální fond. 12. Dokumentace zdrojového kódu Tvorba elektronické dokumentace Ing. Ondřej Guth Katedra teoretické informatiky Fakulta informačních technologií České vysoké učení technické v Praze
Konec 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
X36 WWW Šablony Martin Klíma xklima@fel.cvut.cz Čtryřvrstvá architektura Server Klient Prezentační logika Aplikační Logika Databáze 2 Výhody Jednotlivé vrstvy jsou nezávislé Lze je samostatně spravovat
Zápis programu v jazyce C#
Zápis programu v jazyce C# Základní syntaktická pravidla C# = case sensitive jazyk rozlišuje velikost písmen Tzv. bílé znaky (Enter, mezera, tab ) ve ZK překladač ignoruje každý příkaz končí ; oddělovač
Algoritmizace a programování
Algoritmizace a programování Strukturované proměnné Struktura, union Jazyk C České vysoké učení technické Fakulta elektrotechnická A8B14ADP Jazyk C - Strukturované proměnné Ver.1.10 J. Zděnek 20151 Struktura
Hrá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í
Ú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
Množ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
Operační systémy. Cvičení 3: Programování v C pod Unixem
Operační systémy Cvičení 3: Programování v C pod Unixem 1 Obsah cvičení Editace zdrojového kódu Překlad zdrojového kódu Základní datové typy, struktura, ukazatel, pole Načtení vstupních dat Poznámka: uvedené
Semestrální práce KIV/PC Řešení kolizí frekvencí sítě vysílačů Zdeněk Bečvář A14B0466P 10. ledna 2016
Semestrální práce KIV/PC Řešení kolizí frekvencí sítě vysílačů Zdeněk Bečvář A14B0466P 10. ledna 2016 Obsah 1 Zadání 1 2 Analýza úlohy 2 2.1 Uložení dat ze vstupního souboru................ 2 2.2 Graf
Koncepce (větších) programů. Základy programování 2 Tomáš Kühr
Koncepce (větších) programů Základy programování 2 Tomáš Kühr Parametry a návratová hodnota main Již víme, že main je funkce A také tušíme, že je trochu jiná než ostatní funkce v programu Funkce main je
Cvičení č. 2. Komunikace mezi procesy Program Hodiny. 4 body
Cvičení č. 2 Komunikace mezi procesy Program Hodiny 4 body Datum: 6.2.2009 1 Obsah 1. Úvod...2 2. Pokyny pro odevzdání...2 3. Příprava...3 4. Úlohy...3 4.1. Požadavky na program Hodiny...3 4.2. Požadavky
17. Projekt Trojúhelníky
Projekt Trojúhelníky strana 165 17. Projekt Trojúhelníky 17.1. Základní popis, zadání úkolu Pracujeme na projektu Trojúhelníky, který je ke stažení na java.vse.cz. Aplikace je napsána s textovým uživatelským
Strukturu lze funkci předat: (pole[i])+j. switch(výraz) velikost ukazatele
Strukturu lze funkci předat: hodnotou i pomocí ukazatele pouze pomocí ukazatele (reference na strukturu) pouze hodnotou (kopie struktury) (pole[i])+j adresa prvku na souřadnicích i, j adresa i-tého řádku
Programování v jazyce C a C++
Programování v jazyce C a C++ Richter 1 Petyovský 2 1. března 2015 1 Ing. Richter Miloslav, Ph.D., UAMT FEKT VUT Brno 2 Ing. Petyovský Petr, UAMT FEKT VUT Brno C++ Stručná charakteristika Nesdíĺı normu
Jazyk C++ I. Šablony 3
Jazyk C++ I Šablony 3 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()
Martin 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
Michal 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ů
PODOBÁ SE JAZYKU C S NĚKTERÝMI OMEZENÍMI GLOBÁLNÍ PROMĚNNÉ. NSWI162: Sémantika programů 2
PI JE JEDNODUCHÝ IMPERATIVNÍ PROGRAMOVACÍ JAZYK OBSAHUJE PODPORU ANOTACÍ NEOBSAHUJE NĚKTERÉ TYPICKÉ KONSTRUKTY PROGRAMOVACÍCH JAZYKŮ JAKO JSOU REFERENCE, UKAZATELE, GLOBÁLNÍ PROMĚNNÉ PODOBÁ SE JAZYKU C
Úvod do programování - Java. Cvičení č.4
Úvod do programování - Java Cvičení č.4 1 Sekvence (posloupnost) Sekvence je tvořena posloupností jednoho nebo více příkazů, které se provádějí v pevně daném pořadí. Příkaz se začne provádět až po ukončení
Abstraktní 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,
Java Cvičení 01. CHARLES UNIVERSITY IN PRAGUE faculty of mathematics and physics
Java Cvičení 01 http://d3s.mff.cuni.cz CHARLES UNIVERSITY IN PRAGUE faculty of mathematics and physics Příklady - Porovnání Co kód vypíše? package cz.cuni.mff.java.example01.tests; public class Test01
Programovací jazyk Java
1 z 8 Programovací jazyk Java Enumerace (výčty) Složitější definice výčtového typu Konstanty anonymních typů Výčtový typ a datové struktury Java packaging JAR archivy CLASSPATH Apache Ant 10. přednáška
Iterá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
Př. další použití pointerů
Př. další použití pointerů char *p_ch; int *p_i; p_ch = (char *) p_i; // konverze int * na char * 8 int i = 5; int *p_i; p_i = &i; POZOR!!!! scanf("%d", p_i); printf("%d", *p_i); Obecný pointer na cokoliv:
př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í
Š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
Pokroč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
Programovací jazyk C(++) C++ area->vm_mm->locked_vm -= len >> PAGE_SHIFT;
Programovací jazyk C(++) static struct vm_area_struct * unmap_fixup(struct mm_struct *mm, struct vm_area_struct *area, unsigned long addr, size_t len, struct vm_area_struct 1. *extra) Základy { struct
IUJCE 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í
PROGRAMOVACÍ JAZYKY A PŘEKLADAČE LEXIKÁLNÍ ANALÝZA
PROGRAMOVACÍ JAZYKY A PŘEKLADAČE LEXIKÁLNÍ ANALÝZA 2011 Jan Janoušek BI-PJP Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti LEXIKÁLNÍ ANALÝZA Kód ve vstupním jazyku Lexikální analyzátor
PŘETĚŽOVÁNÍ OPERÁTORŮ
PŘETĚŽOVÁNÍ OPERÁTORŮ Jazyk C# podobně jako jazyk C++ umožňuje přetěžovat operátory, tj. rozšířit definice některých standardních operátorů na uživatelem definované typy (třídy a struktury). Stejně jako
Objektově orientované programování
10. října 2011 Pragmatické informace Volitelný předmět, zápočet: zápočtový program(s dokumentací), aktivní účast na cvičení(body v CodExu), praktický test, zkouška: zkoušková písemka na objektový návrh
Základy programování (IZP)
Základy programování (IZP) Pá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 5. týden
8 Třídy, objekty, metody, předávání argumentů metod
8 Třídy, objekty, metody, předávání argumentů metod Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost třídám a objektům, instančním
Dědění, polymorfismus
Programování v jazyce C/C++ Ladislav Vagner úprava Pavel Strnad Dědění. Polymorfismus. Dnešní přednáška Statická a dynamická vazba. Vnitřní reprezentace. VMT tabulka virtuálních metod. Časté chyby. Minulá
PROGRAMOVÁNÍ V C++ URČENO PRO VZDĚLÁVÁNÍ V AKREDITOVANÝCH STUDIJNÍCH PROGRAMECH ROSTISLAV FOJTÍK
PROGRAMOVÁNÍ V C++ URČENO PRO VZDĚLÁVÁNÍ V AKREDITOVANÝCH STUDIJNÍCH PROGRAMECH ROSTISLAV FOJTÍK ČÍSLO OPERAČNÍHO PROGRAMU: CZ.1.07 NÁZEV OPERAČNÍHO PROGRAMU: VZDĚLÁVÁNÍ PRO KONKURENCESCHOPNOST OPATŘENÍ:
Programová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
Konstruktory překladačů
Konstruktory překladačů Miroslav Beneš Dušan Kolář Konstruktor Lex generátor lexikálních analyzátorů M. E. Lesk, 1975 - pro OS Unix flex - Vern Paxson, 1990 - GNU verze určeno pro generování výstupu v
př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
Programová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ýčtový typ strana 67
Výčtový typ strana 67 8. Výčtový typ V této kapitole si ukážeme, jak implementovat v Javě statické seznamy konstant (hodnot). Příkladem mohou být dny v týdnu, měsíce v roce, planety obíhající kolem slunce
- transpozice (odlišuje se od překlopení pro komplexní čísla) - překlopení matice pole podle hlavní diagonály, např.: A.' ans =
'.' - transpozice (odlišuje se od překlopení pro komplexní čísla) - překlopení matice pole podle hlavní diagonály, např.: A.' 1 4 2 5 3-6 {} - uzavírají (obklopují) struktury (složené proměnné) - v případě
Programovanie v jazyku C - pole treba poorat...
CVIČENIE 3/13 (SW2) Programovanie v jazyku C - pole treba poorat... PrednaskaB: Operátory, pravidla vyhodnocování PrednaskaZ: Číselné typy, operátory, typové konstrukce, pole a struktury About zadefinovanie
Programovanie v jazyku C - struktury a polia
CVIČENIE 6/13 (S7) Programovanie v jazyku C - struktury a polia About struktury, rozdiel medzi polom a strukturou, polia struktur, polia smernikov, bublinkove triedenie Basic knowledge pole je homogenny
Programovací jazyk Pascal
Programovací jazyk Pascal Syntaktická pravidla (syntaxe jazyka) přesná pravidla pro zápis příkazů Sémantická pravidla (sémantika jazyka) pravidla, která každému příkazu přiřadí přesný význam Všechny konstrukce
Šifrování/Dešifrování s použitím hesla
Fakulta elektrotechnická Katedra teoretické elektrotechniky Dokumentace k semestrální práci Šifrování/Dešifrování s použitím hesla 2012/13 Petr Zemek Vyučující: Ing. Petr Kropík, Ph.D Předmět: Základy
Preprocesor a koncepce (větších) programů. Úvod do programování 2 Tomáš Kühr
Preprocesor a koncepce (větších) programů Úvod do programování 2 Tomáš Kühr Práce s preprocesorem Preprocesor Zpracovává zdrojový kód ještě před překladačem Provádí pouze záměny textů (např. identifikátor
C++ 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ů,
DSL manuál. Ing. Jan Hranáč. 27. října 2010. V této kapitole je stručný průvodce k tvorbě v systému DrdSim a (v
DSL manuál Ing. Jan Hranáč 27. října 2010 V této kapitole je stručný průvodce k tvorbě v systému DrdSim a (v současné době krátký) seznam vestavěných funkcí systému. 1 Vytvoření nového dobrodružství Nejprve