56 lines
2.8 KiB
Markdown
56 lines
2.8 KiB
Markdown
# 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<T,N>`, `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.
|