Szkolenie: Zaawansowane programowanie w języku C++
Uczestnicy szkolenia Zaawansowane programowanie w języku C++ zapoznają się z metodami wytwarzania oprogramowania z użyciem zaawansowanych mechanizmów języka C++ oraz szablonów STL. Na zajęciach poruszymy zagadnienia związane z koncepcjami algorytmów, iteratorów i zaawansowanych struktur danych. W przykładach wykorzystywane są elementy biblioteki standardowej oraz elementy biblioteki Boost te, które stają się kandydatami do rozwijania następnego standardu.
Czas trwania szkolenia:4 dni (32h)
Kod kursu:CPP/ADV
Zaawansowane programowanie w języku C++
Cele szkolenia
Kształcenie umiejętności rozwijania wiedzy dotyczącej tworzenia zaawansowanych rozwiązań w języku C++
Osadzenie narzędzi i procesów tworzenia oprogramowania w realiach współczesnych wymagań Inżynierii Oprogramowania
Dokonanie konsolidacji wiedzy i uzupełnienie braków w kompetencjach w kontekście standardu C++
Nauka testowania jednostkowego aplikacji w języku C++
Nauka tworzenia aplikacji wielowątkowych z użyciem mechanizmów biblioteki standardowej
Nauka identyfikacji i tworzenia oprogramowania z użyciem wzorców GoF oraz elementów programowania funkcyjnego
Zapoznanie się ze współczesnymi bibliotekami przetwarzającymi dane
Dla kogo?
Programiści programujący w języku C i C++ w środowisku GNU/Linux lub MS Windows
Osoby znające w podstawowym zakresie system szablonów STL
Programiści tworzący oprogramowanie na platformie systemowej GNU/Linux lub MS Windows
Programiści tworzący aplikacje głównego nurtu oraz aplikacje sieciowe
Zalety
Uczestnicy szkolenia Zaawansowane programowanie w języku C++ poznają aspekty programowania uogólnionego oraz wstępnie koncepcje leżące u podstaw metaprogramowania ze szczególnym uwzględnieniem cech typów
Szczególny nacisk w trakcie szkolenia Zaawansowane programowanie w języku C++ kładziemy na zrozumienie aspektów wydajności oraz gospodarowania zasobami z użyciem wskaźników inteligentnych. Zajmiemy się także zarządzaniem czasem życia obiektu w odniesieniu do mechanizmu wyjątków oraz semantyki r-referencji
Na zajęciach posługujemy się technologiami otwartymi z dostępem do kodu źródłowego
Zajęcia prowadzone są przez doświadczonych praktyków, którzy na co dzień stosują technologie związane z językiem C++ w rzeczywistych projektach. W trakcie zajęć używamy technologii i środowisk otwartych
Praktyka przed teorią - wszystkie szkolenia technologiczne prowadzone są w formie warsztatowej. Konieczna teoria jest wyjaśniana na przykładzie praktycznych zadań
Konkretne umiejętności - w ramach każdego szkolenia rozwijamy praktyczne umiejętności związane z daną technologią i tematyką
Nauka z praktykami - wszyscy trenerzy na co dzień pracują w projektach, gwarantuje to dostęp do eksperckiej wiedzy i praktycznego know-how
Wymagania
Posługiwanie się wybranym środowiskiem IDE
Znajomość koncepcji programowania obiektowego, systemowego i aplikacyjnego
Znajomość koncepcji związanych z programowaniem w języku C++ na poziomie podstawowym i średnio zaawansowanym
W cenie otrzymasz:
Materiały szkoleniowe
Certyfikat ukończenia szkolenia
W przypadku szkolenia w trybie stacjonarnym zapewnimy Ci również lunch oraz sprzęt niezbędny do nauki
Program szkolenia
Elementy nowych standardów C++
Inicjalizacja danych
Podstawowe rodzaje inicjalizacji
Przez kopiowanie i wprost
Pole po polu
Zmienne statyczne i globalne
Lista inicjalizacyjna
Semantyka przeniesienia
Kategorie wartości
Referencje na lewe i prawe wartości
Konstruktor i operator przeniesienia
Inteligentne wskaźniki
Własność danych
Jawne określanie własności
Przekazywanie i nieprzekazywanie własności
Zwalnianie pamięci
Współdzielenie własności
Modelowanie bez użycia wskaźników inteligentnych
Programowanie uogólnione
Dedukcja typów
Filozofia używania auto
Algorytmy biblioteki standardowej
Iteratory
Zakresy C++20
Iteracja po zakresie
Definicja zakresu
Algorytmy oparte o zakresy
Odwzorowania
Widoki i adaptery
Składanie widoków
Szablony funkcji i klas
Rodzaje szablonów
Parametry szablonów
Kompilacja szablonów
Specjalizacja
Programowanie czasu kompilacji
Wyrażenia wykonywalne podczas kompilacji
Elementy meta-programowania
Cechy typów