C言語・C++言語がまったく初めての人、あるいは、ひと通り文法を勉強したが自分でプログラムを書こうとすると頭が真っ白になってしまう人。そのように人に読んでもらいたい記事です。
本は必要か?
新しくプログラミング言語を学習するとき、教科書として使う本は必要か考えてみたいと思います。まずネット上の無料コンテンツなどを利用してその言語の基本に触れてみましょう。意外と簡単で本は必要ないと感じたら暫くそのままで構いません。初歩的な勉強だけで十分に役に立つ言語もありますし、その言語の好き嫌い(肌に合わない)もあります。本当に本が必要と感じた時に購入を考えても遅くはありません。
本を選ぶ時は図書館を利用したり、書店の店頭で立ち読みしてみると思いますが、購入するかどうかは少し待ってください。一般的なプログラミング言語なら中古本でも十分役に立ちます。C言語、C++言語は数十年の歴史がありますので数年前に出版された本を使っても問題ありません。言語仕様の細かい部分は毎年のように改変されているので、最新版を購入しても数年すれば古くなりますし、そのような内容が初学者に影響することはまずありません。中古本を買うのはAmazonが手っ取り早いです。ヤフオク・メルカリで送料込みワンコインの出品もよく見かけます。
C++言語はC言語を拡張したものです。C++の本はC言語を知っている前提で書かれたものと、前提なしにイチからC++を説明したものがあります。自分にあったものを選んでください。
C言語とC++言語
C言語はハードウエアに近い分野のプログラミングに使用されることが多いようです。例えば Linux のカーネルはC言語で開発されています。C言語は難しいという印象を持っている人が多いかもしれませんが、C言語を通してコンピュータの動作をより明確にイメージできるようになります。最初に勉強するプログラミング言語としても悪くない選択です。
C++言語はC言語を拡張してオブジェクト指向の概念を取り入れたものです。基本的な構文はC言語と共通で、C言語の標準ライブラリもほぼ包含しています。C言語のソースコードはそのままか、少し手直しすればC++言語のソースコードとして流用できることも多いです。C言語の経験者ならばそのままC++言語を使い始めることも可能です。違うところだけ順次勉強してください。
C/C++言語の勉強方法
C/C++言語を始めるにあたって最低限知っておくべき知識はあります。でも、そう多くはありません。
- インクルード文
- 「;」で終わる、というような構文についての知識
- コメント行の書き方
- main()関数とは?
これくらいの知識があれば、あとは実例を見て、実際に動かしてみることを徹底的にくりかえしてください。最初からすべての文法を勉強しようとしたら必ず挫折します。プログラミングは知識ではなく技能です。大量に書いて動かすことでしか身に付けることはできません。
例えば次のようなサンプルプログラムがあるとします。変数 i に値を代入して、その2乗を出力するものです。
1 2 3 4 5 6 7 8 9 |
#include <bits/stdc++.h> using namespace std; int main() { int i = 3; cout << i * i << endl; return 0; } |
これを元に「コメントの書き方」と「ひとつの構文は ; まで」を試してみましょう。実際にプログラムを動かしてみることが重要です。間違ったらエラーが出ますので、エラー内容をよく読んでください。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
#include <bits/stdc++.h> using namespace std; // コメント int main() // コメント { int /* こんなところにコメント書ける */ i = 3; cout // ここで改行しても問題なし << i * i << endl; // ここまでが1つの構文 return 0; } |
どうでしょうか? 実際にコメントを書ける場所、書き方、ひとつの構文がどのような単位なのか、具体的にイメージできましたか?
もうひとつ、別の例です。多くの初心者が挫折するfor文です。
1 2 3 4 5 6 7 8 9 |
#include <bits/stdc++.h> using namespace std; int main() { int N = 3; for (int i=0; i<N; i++) cout << i << endl; return 0; } |
これを実行すると次のような結果になります。
1 2 3 |
0 1 2 |
Nに3を代入したのに出力は2までしか出ないことの理由はわかりましたか? この例を元にして色々なアレンジを試してください。例えば次の例を実際に動作させて、1行ずつ何がどのように動いているか、出力結果と照らし合わせて確認してください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
#include <bits/stdc++.h> using namespace std; int main() { int N = 3; for (int i=0; i<N; i++) cout << i << " "; cout << endl; for (int i=1; i<=N; i++) cout << i << " "; cout << endl; for (int i=N; 1<=i; i--) cout << i << " "; cout << endl; for (int i=1; i<=10; i+=2) cout << i << " "; cout << endl; return 0; } |
上の例では勉強法を説明するためにアレンジしたプログラムを示しましたが、これを実行しただけでは何も身につきません。大事なことは自分で考えて、「ここがこのように動いているのは分かった。では、こうすればどうなるのだろう?」と自分で考えを巡らすことです。そして実際に動かすことが重要です。サンプルを見ただけで分かったような気分になっても、翌日には必ず忘れてしまいます。
最後に、上で試したようなソースコードは、「これは大事だ」と思った部分は適切なファイル名を付けて残しておくことです。例えばfor文について勉強したら、そのプログラムは for.cpp というファイル名で保存しておき、次にfor文が必要になったらそこからコピペして使ってください。こうすることで、言語仕様の細かいことをイチイチ検索して調べるということが段々減ってきます。
コメント