Informace, termíny:
Hodnocení uzavřeno 2024-06-18
const, constexpr, consteval, constinit
Pozor na klasifikovaný zápočet (==přepočet bodů z projektu na známku)
Pozor: budou průběžně reorganizovány slajdy (+doplňky, C++23, příklady).
TODO: kategorie hodnot a decltype
== Malé Qt příklady: PP-small-qt-examples.tar.gz
Dokumentace: Třídy Qt5Zajímavé: cppinsights.io , cpp.libhunt.com , C++Quiz
C++20 feature testing
diff C++17 C++20
Projekt -- zadání viz dále
***** Projekt: vše řešte s kolegou Janouškem - bude to hodnotit.
Pro zájemce jsou k dispozici příklady - viz dále
Toto je seminář běžící paralelně s předmětem IPP = "Principy programovacích jazyků a OOP". Předpokládá se základní znalost jazyka ISO C. Přednáška/seminář: viz rozvrh.
Pro dotazy existuje fórum v IS. Doporučuji nahlédnutí do C FAQ a C++ FAQ (viz Texty)Test základních znalostí C++ (bývalo součástí zkoušky) - zkuste si doplnit ještě kopírovací konstruktor a také C++11 "move" operace. (Nenechte se v podobných příkladech překvapit povinným "copy elision" v některých situacích.) [TODO: doplnit odkaz]
Pro informaci: Bjarne Stroustrup: výslovnost
Tip1: Výpis VMT:g++ -fdump-class-hierarchy
Tip2: Styl:g++ -Weffc++
Tip3: Pomalý vstup/výstup? Zkustestd::ios::sync_with_stdio(false);
Tip4: Ladění:g++ -fsanitize=address
Tip5: Předdefinovaná makra:echo | g++ -x c++ -E -dM -
...
Benchmark: test-2012-04-gcc-4.4.5.pdf - test-2023-10-gcc-12.2.pdf - efektivita práce s kontejnery
Místní GIT/SVN repozitář viz FIT-Linux-FAQ-15
Plán výuky:
- přehled látky a základní informace
- cílové znalosti -- čtěte co máte umět
Přednášky:
- ***** Pozor - bude průběžně inovováno/opravováno
P1-P13/PDF(600KiB)
přílohy,- * Příklady programů
Týmový projekt:
- Typicky zadán 3. týden semestru, pro GUI typicky používá toolkit Qt.
- Řeší se ve dvojici
- Zadání a pokyny
Qt5 je nainstalováno na serveru merlin (Qt verzi vypisuje "qmake --version")
Nepoužívejte žádné extra vlastnosti novějších verzí - není to potřeba.
kniha(včetně kódu příkladů)
Další informace:
- Norma: ISO C++ (ISO/IEC 14882:2024) C++23 (draft_N4950) [ připravuje se C++26: aktuální Draft (LaTeX) ] ( předchozí verze: C++20 , C++17 , C++14 , C++11 )
Přehled: cppreference.com- Doporučené překladače:
- GNU C++ (je standardně v Linuxu)
- clang/LLVM
- MinGW, Cygwin = GCC pro Windows (Cygwin vytvoří i POSIX/Unixové prostředí)
-- Stav implementace C++: Přehled a kompatibilita překladačů - GCC C++ ( libstdc++ ) - LLVM/clang- Integrovaná prostředí, editory, atd:
- Editory ( vim /1 /2, emacs, kate, ... ) umí téměř totéž co integrovaná prostředí. Pro začátečníky a malé projekty doporučuji používat obyčejný editor, protože neodvádí od podstaty problému: psaní zdrojového textu.
- IDE: Code::Blocks, NetBeans, Eclipse+plugin, CodeLite, Kdevelop (KDE), ...
- Ladicí nástroje:
- valgrind (Linux)
- Debugger: KDbg (Linux/KDE) - DDD (Linux, UNIX) - Insight (Linux, UNIX, Win*) - přehled vlastností GDB (Linux, UNIX, Win*)
- Informace o projektu GNU - idea Free Software (od "free speech" nikoli od "free beer"), GPL = GNU licence
Texty:
- *** C++CoreGuidelines, More C++ Idioms, FAQ, C++ Style FAQ, C++, terminologie, Software-for-infrastructure.pdf - téměř povinná četba
- Styl: Styl psaní programů v C++ , CERT C++ Coding Standard , Google , Kernighan , GNU , GNOME , ...
Nástroje: clang-format , astyle , GNU indent- Programování v UNIXu: Unix programming FAQ
- Numerické výpočty: What Every Computer Scientist Should Know About Floating-Point Arithmetic
- Doplňky: kompatibilita C a C++ , aplikace napsané v C, C++ , C++ Annotations
Odkazy:
etc:Knihovny: BOOST (x), ref, uBLAS (x), regexp example: grep lambda, BGL-example, , example: asio-test-echo.cc
JTC1/SC22/WG21, TR1 - info2,Design Patterns: Definice(Wikip), Přehled a kritika,
Příklad: Singleton,
DP Library, patterns-intro.pdf, patterns-examples.pdf, Pattern Language, ,
Introduction to Design Patterns in C++ with Qt,Smart pointer: shared_ptr, weak_ptr, unique_ptr,
Template Metaprogramming, Blitz++, , +doplněk: template-1.cc
* Rvalue References Explained
* Universal References in C++11,(zastaralé ale zajímavé: TODO)
Událostmi řízené programy, Událostmi řízené programování, ... - jen princip (cca 15min)
** GotW,
Výjimky (exceptions): GotW#102 a příklad
FAQ: výjimky
iostreams a výjimky: http://en.cppreference.com/w/cpp/io/ios_base/failure
Pravidla 3/5,UNICODE: The Absolute Minimum..., utf8everywhere.org,
info: Perfect forwarding and universal references,
Historie: C++17 ISO standard publikován 2017-12
C++20 final-draft schválen 2020-02 (+-1), publikován 2020-12
Stroustrup: C++ evoluce 2006-2020
přehled rozdílů, 2,
Příklad C++17: icp-fold-expr.ccKonference: CppCon,