C#を業務で回路の制御にC#を利用していました。これに加えC言語/C++を使う必要が出てきましので、基礎文法からアプリケーション開発までを学習することにしました。私と似たような立場の方の役に立てればと思います。
学習計画
・環境構築
・基礎文法
・Atcoderで問題を解く
・オブジェクト指向で開発
・何かアプリを作る
・他者のコードを読む
・その他ソフトウェア開発に必要な知識を学ぶ
環境構築
Windowsで動く2つの環境を用意しました。将来的にはLinuxでの開発をする予定なので、ターミナルでビルドコマンドを手打ちできるVSCode+MinGWをメインに扱っていきます。
・Visual Studio(総合環境)
・VSCode(コードエディタ)+MinGW(コンパイラ、リンカ)
MINGWの準備:
Release Release 12.2.0-rt_v10-rev0 · niXman/mingw-builds-binaries · GitHub
C:\Program Files\mingw64にダウンロードフォルダで解凍されたmingwのフォルダを移行する。これは単純にダウンロードフォルダに解凍したフォルダを置きたくないから。
スタート画面にsysdm.cplコマンドをうち、System環境変数のPathを編集する。Pathの編集ではC:\Program Files\mingw64\bin\を追加
基礎文法
目的:
以下の項目を理解する
標準入出力
ビルド
変数と型
演算
条件分岐
繰り返し処理
配列・二次元配列
関数
手段 :
◇「スッキリわかるC言語入門 第2版」
C言語の基礎文法を理解するために利用
●第Ⅰ部 基本構文
第1章 プログラムの書き方
第2章 変数と型
第3章 式と演算子
第4章 条件分岐と繰り返し
第5章 制御構文のバリエーション
●第Ⅱ部 開発をより便利にする機能たち
第6章 構造体
第7章 配列
第8章 関数
◇「1週間でC++の基礎が学べる本 」
標準入出力、string、名前空間、vectorクラスなどを学習するために利用
→
私の場合はC#の経験があったので比較的早く理解できました。ただし、問題を解いたりなどのアウトプットしないと定着しない。次節で述べる競技プログラミングのAtcoderで問題を解く必要あり。
Atcoder
目的 :
基礎文法のアウトプット
→変数の型、whileとfor文、配列とソート、文字列、2重for文と2次元配列
アルゴリズムの基礎を学ぶ
→全探索、累積和
目標 :
・ABC問題のCまでは解けるようにする。
・レーティングは茶色
*茶色のレベル感は、典型的なアルゴリズムに関する知識を多く持ち、全探索や単純な動的計画法を実装できること。難関大学の理系学部に入学できる程度の数学力や論理的思考力があり、数学的な工夫が必要な問題を正解出来ること。
手段:
◇以下の資料を読む
Atcoderなどの競技プログラミングとは何ぞやかについてのまとめ
https://qiita.com/e869120/items/f1c6f98364d1443148b3
文法の解説と問題
https://atcoder.jp/contests/APG4b
◇AtCoder Beginner Selection
・ABC問題の内A・B問題をそれぞれ50問解く。余裕があればC問題も解く。~2ヶ月
https://atcoder.jp/contests/abs
→
B問題までなら高校数学の範囲で解ける。最初は標準入力さえあやしかったが、問題の形式に慣れ正答率はA問題100%, B問題80%ぐらいになった。基礎文法のアウトプットには適切であった。B問題の一部の数学的問題、もしくはC問題以降は動的計画法などのアルゴリズムの理論を学習する必要あり
◇アルゴリズム的思考力が身につく!プログラミングコンテストAtcoder
ただでたらめに問題を解くのではなく、体系的に学習する必要を感じたので採用。問題が分類されている。
第3章
整数型整数型、while for文、配列とソート、文字列、二重for文、二次元配列
第4章
計算量
オブジェクト指向で開発
目的:
以下の項目を理解する
クラスとインスタンス
継承
手段 :
・参考資料
1週間でC++の基礎が学べる本
3日目 クラスとオブジェクト
4日目 コンストラクタとデストラクタ/静的メンバ
5日目 継承とポリモーフィズム
実施結果: