# C++ — plan wielosemestralny i stan wdrożenia Źródło zakresu: `/home/user/dev/keys/cxx.md`. Standard kursu: C++20 z wybranymi, jawnie oznaczonymi elementami C++23. Cykl obejmuje 53 lekcje teoretyczne. Projekty, FreeRTOS i praca na urządzeniu pozostają osobnymi zajęciami. | Etap | Lekcje | Oś merytoryczna | Stan | | --- | ---: | --- | --- | | Rok 2, semestr 1 | 10 | fundamenty języka, klasy, czas życia i RAII | **wdrożony** | | Rok 2, semestr 2 | 10 | OOP i C++ w systemach wbudowanych | plan | | Rok 3, semestr 1 | 16 | STL i biblioteka standardowa | plan | | Rok 3, semestr 2 | 17 | współbieżność, korutyny i Boost.Asio | plan | ## Rok 2, semestr 1 — aktywna seria `cpp` Książka prowadząca: Bjarne Stroustrup, *A Tour of C++, 3rd Edition*. *The C++ Programming Language, 4th Edition* jest źródłem uzupełniającym dla nauczyciela. Karty parafrazują pojęcia i zawierają własne eksperymenty; nie kopiują treści książek. ```text C++ · Rok 2 · Semestr 1 ├── CPP01 · Oddzielna kompilacja, deklaracja, definicja, linkage i namespace ├── CPP02 · Typy, inicjalizacja, auto, const, enum class i typ użytkownika ├── CPP03 · Wskaźniki, referencje, tablice, nullptr i argumenty ├── CPP04 · Funkcje, przeciążanie, wartości zwracane, zakres i modułowość ├── CPP05 · Klasa i obiekt: pola, metody, dostęp, interfejs i implementacja ├── CPP06 · Hermetyzacja, niezmienniki i odpowiedzialność klasy ├── CPP07 · Konstruktory, destruktory i inicjalizacja obiektu ├── CPP08 · Zakres i czas życia obiektów automatycznych, statycznych i dynamicznych ├── CPP09 · RAII i powiązanie zasobu z czasem życia obiektu └── CPP10 · Kopiowanie, przenoszenie, Rule of Zero/Five i własność zasobu ``` Każda karta ma trzy niezależne programy, kompilację `-std=c++20 -Wall -Wextra -Wpedantic -Werror`, dokładny kontrakt stdout, testy Node, widok React, PDF A4 i akcje `build/test/run/debug` dla profilu `native-amd64`. Generator źródeł znajduje się w `tools/generate_cpp_y2s1.py` tego repozytorium. ## Granice kolejnych semestrów - Semestr 2 rozpoczyna się od typów wartościowych i operatorów, a kończy teorią wrapperów `Task`, `StaticQueue`, `Mutex` i `LockGuard`. - Rok 3, semestr 1 należy do STL: kontenery, iteratory, algorytmy, ranges, typy pomocnicze, smart pointery i narzędzia biblioteki standardowej. - Rok 3, semestr 2 obejmuje `thread`/`jthread`, synchronizację, atomiki, futures, korutyny i Boost.Asio. - Szczegóły API FreeRTOS, portu, ISR i uruchamiania na płytce pozostają w seriach FreeRTOS C oraz FreeRTOS C++. Kurs OOP/wzorców jest osobną serią odniesienia. Karta C++ linkuje do niej dopiero wtedy, gdy występuje rzeczywisty problem projektowy, a nie tylko pojedynczy mechanizm języka.