マイコンのためのC++講座
C言語を含めてプログラミング経験がない人が、12週間でESP32などのマイコン上のプログラムをクラスと複数ファイルで設計・実装できるようになることを目指す講座の教材。
対象
本講座は、C言語を含めてプログラミング経験がない人を対象とする。最終的には、ESP32などのマイコン上で動作するプログラムを、C++のクラスや複数ファイルを用いて設計・実装できるようになることを目標とする。
期間
| 項目 | 内容 |
|---|---|
| 全体 | 2〜3か月 |
| 標準 | 12週間 |
| 頻度 | 週1回〜2回 |
| 1回の長さ | 90〜120分程度 |
| 進め方 | 講義だけでなく、毎回必ずコードを書く |
最終到達目標
受講者が以下を自力で使用できることを目標とする。
プログラミング基礎
- 変数
- 型
- 演算子
- 条件分岐
- 繰り返し
- 関数
- 配列
- スコープ
C/C++の基礎
- ポインタ
- 参照
conststructenumenum class- 名前空間
C++の主要機能
- クラス / オブジェクト / コンストラクタ
- メンバ変数 / メンバ関数
public/private/protected/ カプセル化- 継承 / 仮想関数 /
virtual/override - 純粋仮想関数 / 抽象クラス / ポリモーフィズム
- STL(
std::vector/std::array) - スマートポインタ / RAII
プログラム設計
.hpp/.cppへの分割- クラスの責務分離
- インターフェースと実装の分離
- センサ・アクチュエータなどのクラス化
- 状態を
enum classで管理 - 複数クラスを組み合わせたマイコンプログラムの設計
- クラス間の依存の向きを決める / 相互参照を解く
学習の流れ
プログラミングの基礎
↓
C/C++の基本文法
↓
関数
↓
複数ファイル
↓
クラス
↓
カプセル化
↓
enum
↓
継承
↓
virtual / override
↓
クラス設計
↓
マイコン向けシステム設計
↓
STL / std::vector
↓
スマートポインタ
↓
クラス間の相互参照はじめに読む
1章
講座の基本方針
文法の網羅を目的にしない。何を目的に据えるか。
2章
開発環境
VS Code / PlatformIO / ESP32-C5 / Git と教材作成環境。
20・21章
12週間の授業計画
週ごとの内容と、1回あたりの授業の流れ。
23章
教える際の重要ポイント
暗記させない。継承を目的化しない。
各回の教材
第0回
プログラミングとマイコン
プログラム・コンパイル・マイコンの構成
第1回
変数・型・演算子
データを扱う
第2回
条件分岐・繰り返し
if / switch / for / while
第3回
関数
処理を意味のある単位に分ける
第4回
配列・メモリ・ポインタ・参照
アドレスの基本
第5回
C++基礎
const / namespace / オーバーロード
第6回
クラスとオブジェクト
データと処理をまとめる
第7回
ヘッダとcpp
複数ファイルへの分割
第8回
カプセル化
隠すことの意味
第9回
列挙型と状態管理
enum class
第10回
継承
is-aの関係
第11回
virtual / override
親のポインタから子を呼ぶ
第12回
純粋仮想関数と抽象クラス
インターフェース
第13回
ポリモーフィズム
同じ手続きで扱う
第14回
クラス設計
1クラス1責務
第15回
マイコン向け設計演習
道具を組み合わせる
第16回
STLとstd::vector
個数の管理を手放す
第17回
スマートポインタ
誰が解放するかを型で表す
第18回
クラス間の相互参照
前方宣言と依存の向き