Menu Zamknij

Kurs C++

Cena szkolenia

Cena szkolenia wynosi 120 zł za 60 min. Ilość godzin szkolenia jest zależna od postępów w nauce uczestnika kursu i ilości czasu, w którym realizuje zadania i projekty zlecone w ramach szkolenia.

Opis kursu

Szkolenie przygotowuje do pracy na stanowisku C++ Developer lub podobnym. Po zakończeniu szkolenia uczestnik kursu będzie w stanie tworzyć i rozwijać aplikacje w języku C++ oraz aplikacje wykorzystujące frameworki Qt lub Qt Quick. Dodatkowo uczestnik kursu będzie posiadał umiejętność implementowania kompletnych aplikacji bazodanowych, aplikacji zarządzających danymi w formacie JSON oraz wykorzystujących mechanizmy wielowątkowości. Opanowanie zagadnień pojawiających się w szkoleniu zagwarantuje uczestnikowi kursu możliwość dalszego
rozwijania się w kierunku tworzenia aplikacji do zarządzania systemami wbudowanymi, aplikacji mobilnych lub gier komputerowych. Podczas szkolenia uczestnik kursu pozna dodatkowo wiele innych narzędzi wspomagających pracę z opisanymi wyżej technologiami. Uczestnik kursu wykorzysta języki i technologie w najnowszych wersjach. Kurs cały czas rozwijany jest pod
kątem najbardziej aktualnych rozwiązań wymaganych w branży IT.

W ramach szkolenia uczestnik kursu rozwiąże ogromną ilość zadań teoretycznych i praktycznych, które skutecznie przygotują go do rozmowy kwalifikacyjnej. Wiedza uczestnika kursu będzie systematycznie sprawdzana w trakcie próbnych rozmów kwalifikacyjnych, które odbywają się w języku polskim lub angielskim.

Po zakończeniu szkolenia uczestnik kursu będzie posiadał kilka dużych projektów, które potwierdzą jego praktyczne umiejętności posługiwania się narzędziami i językami programowania, które pojawiły się w kursie. Każdy kolejny etap projektu będzie indywidualnie sprawdzony i oceniony przez mentora. Zagwarantuje to zgodność projektów z przyjętymi założeniami oraz dobrymi praktykami programistycznymi, jak również wymusi systematyczną pracę nad projektami. Dodatkowo uczestnik kursu otrzyma zadania rozwijania lub modyfikowania istniejących już projektów oraz ich analizy pod kątem wyszukiwania błędów.

Szkolenie zawsze odbywać się będzie w formie spotkań indywidualnych, dzięki czemu tempo kursu zostanie dopasowane do konkretnych potrzeb uczestnika kursu.

Potrzebne aplikacje i narzędzia

Komputer / laptop z dowolnym systemem operacyjnym i zainstalowanym zestawem narzędzi do budowania aplikacji pojawiających się w trakcie szkolenia. Potrzebne oprogramowanie zostanie szczegółowo opisane oraz zainstalowane na pierwszym darmowym spotkaniu testowym lub w momencie, kiedy nastąpi konieczność jego wykorzystania w trakcie szkolenia.

Aplikacje potrzebne do nawiązania połączenia: Team Viewer oraz Skype. Na życzenie uczestnika kursu będzie możliwość używania innej aplikacji zdalnego pulpitu lub komunikatora głosowego. Na pierwszym darmowym spotkaniu testowym oceniona zostanie jakość połączenia. Na tej podstawie przeprowadzona będzie konfiguracja, która pozwoli zapewnić najlepszą jakość dźwięku oraz obrazu podczas szkoleń.

Umiejętności potrzebne przed
rozpoczęciem kursu

Kurs przeznaczony jest dla osób o różnym stopniu zaawansowania. W szkoleniu uczestniczyć mogą osoby, które nie miały do tej pory nic wspólnego z programowaniem, ale również osoby, które już posiadają doświadczenie na podobnym stanowisku. Celem szkolenia jest przygotowanie do pracy programisty, jak również podnoszenie kwalifikacji osób już pracujących w branży IT.

Istnieje możliwość rozpoczęcia szkolenia od wybranego punktu w planie szkolenia. Kurs poprzedzony jest wtedy szczegółową rozmową kwalifikacyjną w języku polskim lub angielskim. Na podstawie rozmowy zostanie oceniony poziom uczestnika kursu z zakresu materiału przed wybranym punktem w planie szkolenia.

Plan szkolenia

  • Konfiguracja i uruchomienie środowiska programistycznego
  • Zmienne
  • Zmienne inline
  • Podstawowe oraz złożone typy danych
  • Inicjalizacja zmiennych
  • Słowo kluczowe auto
  • Stałe – specyfikator const oraz constexpr
  • Literały binarne i separatory dziesiętne
  • Literały definiowane przez użytkownika
  • Literały UTF-8 oraz heksadecymalne liczby zmiennoprzecinkowe
  • Stała nullptr
  • Specyfikator volatile
  • Typ void
  • Zakres ważności oraz czas życia zmiennej
  • Przesłanianie nazw zmiennych
  • Tworzenie dodatkowej nazwy typu – using oraz typedef
  • Typ wyliczeniowy enum oraz enum class
  • Określanie typu zadanego wyrażenia – decltype
  • Zastosowanie słowa kluczowego alignas
  • Omówienie pojęć lwartość oraz rwartość
  • Pobieranie oraz prezentacja danych
  • Operatory arytmetyczne, logiczne, bitowe
  • Operatory przypisania
  • Operatory uzyskiwania adresu
  • Inne operatory: sizeof, noexcept, static_assert, alignof
  • Rzutowanie static_cast, const_cast, dynamic_cast
  • Rzutowanie reinterpret_cast
  • Instrukcje sterujące oraz pętle
  • Pętla for dla zakresów
  • Instrukcje if oraz switch z inicjalizacją zmiennych
  • Instrukcja constexpr if
  • Instrukcje break oraz continue
  • Tablice jednowymiarowe i wielowymiarowe
  • Zagadnienia uzupełniające
  • Odwoływanie się do adresu zmiennych
  • Definiowanie wskaźników oraz referencji
  • Praca ze zmiennymi wskaźnikowymi i referencyjnymi
  • Stałe wskaźniki i wskaźniki do stałych
  • Definiowanie wskaźnika z użyciem słowa kluczowego auto
  • Operator rzutowania reinterpret_cast w pracy ze wskaźnikami
  • Wskaźnik void*
  • Rezerwacja obszarów pamięci z wykorzystaniem wskaźników
  • Zagadnienia uzupełniające
  • Definicja funkcji i jej wywołanie
  • Argumenty funkcji oraz wynik zwracany przez funkcję
  • Automatyczne określanie typu zwracanego przez funkcję
  • Stos i sterta
  • Sposoby przesyłania argumentów do funkcji
  • Argumenty domniemane i nienazwane
  • Funkcje inline
  • Funkcje a podział na pliki
  • Rekurencja
  • Omówienie wybranych funkcji bibliotecznych
  • Funkcje constexpr
  • Przeładowanie funkcji
  • Wskaźniki do funkcji
  • Zagadnienia uzupełniające
  • Napisy w stylu C
  • Wprowadzenie do klasy std::string
  • Omówienie zasady działania napisów std::string
  • Standardowe operatory w pracy z napisami
  • Prezentacja funkcji bibliotecznych klasy std::string
  • Konwersje pomiędzy dowolnym typem a obiektem std::string
  • Klasy std::ostringstream oraz std::istringstream
  • Wyrażenia regularne
  • Zagadnienia uzupełniające
  • Algorytmy badające właściwości geometryczne
  • Algorytm badające właściwości matematyczne
  • Konwersje pomiędzy systemami liczbowymi
  • Badanie ciągów danych pod kątem wybranych właściwości
  • Sortowanie ciągów danych
  • Zastosowanie metody dziel i zwyciężaj
  • Wybrane metody numeryczne
  • Programowanie zachłanne
  • Algorytmy na tekstach
  • Wybrane algorytmy kryptograficzne
  • Rekurencja
  • Przegląd wybranych struktur danych
  • Zagadnienia uzupełniające
  • Definiowanie klasy i obiektu
  • Struktury
  • Różnica pomiędzy klasą a strukturą
  • Omówienie założeń enkapsulacji
  • Pola składowe klasy
  • Proste funkcje składowe klasy
  • Funkcje składowe typu const, volatile oraz constexpr
  • Funkcje składowe ze specyfikatorami default oraz delete
  • Słowo kluczowe this
  • Modyfikatory dostępu
  • Klasa a dynamiczny przydział pamięci
  • Konstruktory
  • Słowo kluczowe explicit
  • Lista inicjalizacyjna a lista std::initializer_list
  • Konstruktory constexpr
  • Wyjaśnienie pojęć glwartość, xwartość oraz prwartość
  • Konstruktory kopiujące i przenoszące
  • Destruktory
  • Składniki statyczne w klasie
  • Słowo kluczowe mutable
  • Klasa a podział na pliki
  • Operatory konwersji
  • Deklaracja przyjaźni
  • Przeładowanie operatorów
  • Kompozycja
  • Klasy zagnieżdżone
  • Tablice obiektów
  • Zastosowanie wskaźników do pracy z klasami
  • Klasy POD (Plain Old Data)
  • Zagadnienia uzupełniające
  • Omówienie zasad dziedziczenia
  • Klasa podstawowa i klasa pochodna
  • Dostęp do składników klasy podstawowej
  • Konstruktory w dziedziczeniu
  • Kolejność wywołania konstruktorów w dziedziczeniu
  • Wirtualne funkcje składowe
  • Polimorfizm
  • Wczesne i późne wiązanie
  • Destruktory w dziedziczeniu
  • Słowa kluczowe final oraz override
  • Klasy final
  • Klasy abstrakcyjne
  • Dynamiczna identyfikacja typu
  • Rzutowanie dynamic_cast a polimorfizm
  • Wielodziedziczenie
  • Zagadnienia uzupełniające
  • Sposoby przechwytywania i obsługi sytuacji wyjątkowych
  • Zagnieżdżanie bloków try
  • Specyfikator noexcept oraz operator noexcept
  • Wyjątki std::uncaugth_exceptions
  • Zagadnienia uzupełniające
  • Omówienie założeń programowania uogólnionego
  • Definiowanie szablonu klasy
  • Definiowanie szablonu funkcji
  • Dopuszczalne parametry szablonów
  • Szablony a podział na pliki
  • Funkcje składowe w szablonach klas
  • Składniki statyczne w szablonach klas
  • Implementacja obiektu klasy szablonowej za pomocą new
  • Przeładowanie operatorów w szablonach klas
  • Zagnieżdżanie szablonów
  • Deklaracja przyjaźni w szablonach klas
  • Specjalizacje szablonów klas
  • Szablony zmiennych
  • Atrybut auto jako parametr szablonu
  • Zagadnienia uzupełniające
  • Funktory wbudowane i definiowane przez programistę
  • Wyrażenia lambda i jego różne postaci
  • Lista argumentów
  • Ciało wyrażenia lambda
  • Lista wychwytywania
  • Słowo kluczowe mutable w wyrażeniu lambda
  • Wyjątki w wyrażeniach lambda
  • Wyrażenie lambda zastosowane w funkcji składowej
  • Szablon std::function
  • Wyrażenie lambda jako domniemana wartość argumentu
  • Zagadnienia uzupełniające
  • Klasyfikacja wzorców projektowych
  • Implementacja wzorców kreacyjnych
  • Implementacja wzorców strukturalnych
  • Implementacja wzorców czynnościowych
  • Zagadnienia uzupełniające
  • Wzorzec projektowy iterator
  • Wprowadzenie do kontenerów
  • Klasyfikacja kontenerów
  • Kontenery sekwencyjne (std::vector, std::list, std::deque)
  • Kontenery asocjacyjne (std::set, std::multiset, std::map, std::multimap)
  • Kontenery asocjacyjne z haszowaniem (std::unordered_set, std::unordered_map)
  • Adaptery kontenerów (std::stack, std::queue, std::priority_queue)
  • Typy krotkowe std::tuple
  • Typ std::pair
  • Omówienie algorytmów STL
  • Wskaźniki inteligentne
  • Zastosowanie wskaźników inteligentnych do pracy z kontenerami
  • Zagadnienia uzupełniające
  • Omówienie formatu JSON
  • Przegląd bibliotek do pracy z formatem JSON
  • Konfiguracja aplikacji do pracy z formatem JSON
  • Proste przykłady konwersji danych
  • Wykorzystanie formatu JSON do pracy z komponentami biblioteki STL
  • Zastosowanie formatu JSON w aplikacjach komercyjnych
  • Zagadnienia uzupełniające
  • Wprowadzenie do relacyjnych baz danych
  • Język SQL
  • Omówienie architektury aplikacji bazodanowej
  • Przegląd bibliotek do pracy z relacyjnymi bazami danych
  • Konfiguracja aplikacji do pracy z relacyjnymi bazami danych
  • Implementacja relacji bazodanowych
  • Zarządzanie danymi relacyjnej bazy danych
  • Implementacja kompletnej aplikacji bazodanowej
  • Zagadnienia uzupełniające
  • Omówienie założeń wielowątkowości
  • Różne sposoby tworzenia wątków
  • Dołączanie i odłączanie wątków
  • Przekazywanie argumentów do wątków
  • Omówienie zagadnienia wyścigów
  • Sposoby współdzielenia danych pomiędzy wątkami
  • Rozwiązanie problemu wyścigów z wykorzystaniem std::mutex
  • Wykorzystanie szablonu std::lock_guard
  • Wprowadzenie do zagadnienia przechwytywania zdarzeń w aplikacjach wielowątkowych
  • Zastosowanie condition variables do przechwytywania zdarzeń
  • Przykłady zastosowań typów std::future oraz std::promise
  • Programowanie asynchroniczne z wykorzystaniem std::async()
  • Przykład zastosowania szablonu std::packaged_task
  • Zagadnienia uzupełniające
  • Preprocesor
  • Unie i pola bitowe
  • Operacje wejścia / wyjścia
  • Operacje wejścia / wyjścia na plikach
  • Semantyka przenoszenia
  • Rozszerzony mechanizm generowania liczb losowych
  • Atrybut deprecated
  • Przestrzenie nazw i zagnieżdżone przestrzenie nazw
  • Nowe typy C++17: std::string_view, std::byte, std::optional,
    std::variant, std::any
  • Wykorzystanie debuggera do analizy pracy programu
  • Architektura Qt
  • Wzorzec MVC
  • Przegląd oraz implementacja komponentów graficznych Qt
  • Obsługa zdarzeń
  • Zarządzanie rozkładem
  • Aplikacje o wielu oknach / zakładkach
  • Implementacja nawigacji pomiędzy oknami / zakładkami
  • Parsowanie XML / JSON
  • Wyrażenia regularne z wykorzystaniem bibliotek Qt
  • Walidacja danych
  • Architektura aplikacji bazodanowej
  • Język SQL
  • Implementacja kompletnej aplikacji bazodanowej z wykorzystaniem
    frameworka Qt
  • Zagadnienia uzupełniające
  • Wprowadzenie do aplikacji Qt Quick
  • Język QML
  • Przegląd oraz implementacja kontrolek Qt Quick
  • Mechanizm sygnałów oraz slotów
  • Wykorzystanie JavaScript w pracy z Qt Quick
  • Pozycjonowanie kontrolek Qt Quick
  • Dialogi
  • Modele i delegaty
  • Animacje
  • Transformacje i tranzycje
  • Programowanie sieciowe
  • Komunikacja z REST API
  • Komunikacja z bazą danych
  • Zagadnienia uzupełniające
  • Omówienie architektury GIT
  • Przegląd instrukcji GIT
  • Rozgałęzianie i scalanie w GIT
  • Aplikacje i wtyczki do pracy z GIT
  • Praca ze zdalnym repozytorium
  • GitHub Pages
  • Zagadnienia uzupełniające

Materiały video

Wstecz 1 z 5 Dalej
Wstecz 1 z 5 Dalej
Scroll Up