プログラミングが初めての人でもわかる、C++の講座をyoutubeにて公開しました。この記事では、C++を知るところからはじめて、初心者がつまづきやすい「ポインタ」まで説明します。
基本となる知識をしっかり身につけておくと、これからのプログラミングの勉強が楽になります。動画のタイトルに「丁寧に学ぶ~」という言葉をつけている通り、ひとつずつじっくりと理解していくことを目的として、機能別で解説を行っています。はじめはちょっと退屈かもしれませんが、じっくりゆっくり学んでいきましょう。
1.特徴・環境構築
まずは「C++とは何か?」を知りましょう。C++は簡単に言うと「C言語の進化版」です。C言語を使いやすく追加機能をつけたものがC++なので、実はC言語もC++上で動作します。
ここでは詳細は説明しませんが、「オブジェクト指向」であるというのも大きな特徴です。基本的に最近のプログラミング言語はオブジェクト指向ですが、このあたりは深い機能を理解する必要があるので、続きの「C++初級講座」で説明します。興味のある方はそちらの1つ目の動画を見ると、どんなことができるのかイメージが湧きやすいと思います。
「環境構築」というのは、プログラミングができる環境を整えるということです。基本的には、プログラミングを作ったり試したりするためには、IDE(統合開発環境)が必要になります。今回はVisual Studioを使いますが、色々他のものも見てみると楽しいと思います。
2.コードをじっくり見る
プログラミングを勉強するときは、「Hello World」と画面に出すのが一番はじめのステップとされています。たったそれだけのプログラムでも、すごく大事な部分がたくさん含まれています。
通常は、「おまじないみたいなものだから気にせず進める」といったことが行われますが、この講座では基本的に全て説明します。その理由は、多少大変でも疑問をなくして進めたいからです。この動画ではそんな思いから、コードをじっくり観察し、一つ一つの理解を進めていきます。
3.変数・型・演算子
変数とは、簡単に言うと数学でいうxのことです。この変数を使って色々なことができるようになります。例えば、計算やたくさんの情報が入ったリスト、複雑なロジック等を作ることが出来ます。
プログラミングでは、変数に数字以外にも文字も入れられます。このときに、変数に数字や文字等のなんの情報を入れるかを指定するのが「型」です。
そして、変数を使用して計算をするときに使うのが、「演算子」です。
基本的には、算数や数学の知識の延長線ですが、忘れている部分も多いと思うので、振り返りも兼ねて勉強しましょう。
4.代入演算子・インクリメント
特殊な演算子として、代入演算子とインクリメントがあります。この2つは、普通の演算子でできることを省略形で書く機能です。省略形というと、必須スキルではないような気もしますが、なぜ必要なのでしょうか?
プログラムは長くなると、どんどん複雑になります。「いかに見やすいプログラムを書くか」はプログラマーの一生の課題と言っても過言ではありません。それほどまでに、見やすいプログラムというのは価値があります。
省略形はすっきりとした見た目で、ひと目でプログラムを見やすくしてくれます。特に、一つずつ数字を増やす機能である「インクリメント」は多用されるので、しっかり頭に入れておきましょう。
5.if文
if文を使えば、分岐を行うことが出来ます。例えば、ゲームの選択肢なんかはif文で作ることができます。「はい」と言ったら進む、「いいえ」といったら戻る、といったことが出来ます。
これからたくさんの機能を紹介していきますが、一番使うのはif文です。他の機能も共通する考え方は多いので、基本的な考え方を身につけましょう。
6.名前空間・入力
ここでは、名前空間と入力という2つの機能を紹介します。
名前空間とは簡単に言うと、「変数を使える範囲」のことです。例えば、今まではmain関数内でプログラムを書いていますが、ここで宣言した変数は、通常はmain関数の外ではその変数は使えません。
ここで重要なのは「main関数で宣言した変数は、main関数外でその変数は使えない」ということです。逆に言えば、main関数外であれば同じ名前の別の変数を使うことが出来ます。
これは、次のシリーズの「C++初級講座」で紹介する「オブジェクト指向」とすごく相性が良いです。これはつまり、main関数より外であれば、main関数内の変数を気にせず、好きなようにプログラムを書くことができるということなので、大人数でプログラミングをするときに非常に便利です。今はまだルールとして知っておくだけで大丈夫です。勉強を進めるうちに、その重要性に気づくでしょう。
7.for文・配列
if文の次は、for文について学びましょう。for文は「繰り返し」を行う機能です。プログラマの口癖が「効率化」であるように、プログラマは繰り返し作業を嫌います。for文は、繰り返し作業をまとめてくれて、同じプログラムを書く手間を減らしてくれる機能です。
今回は、配列を使ってfor文の説明をします。配列とは、いくつかの変数をひとまとめで管理できる型です。一列の本棚のようなイメージで、一つの棚に一つの変数が入ると考えてください。
for文自体は書き方さえ覚えてしまえば、かなり簡単です。一方で、配列はつまずくポイントになりやすいです。このあたりは飛ばすと後々困るので、じっくり進めていきましょう。
8.関数
とうとうやってきました、関数の回です。関数の基本的な考え方は数学と同じで、変数を与えてやると、計算されて、値を返す、です。
違いとしては、プログラミングでは、計算の部分に色々機能を追加することができるというところです。例えば、画面に文字を出力したりとか、入力待ちをしたりとかです。
このように、関数の使い方は無限大であり、これからも非常に重要な要素になります。誰かが作ったプログラムを使用するときも、基本的に関数の形になっています。例えば、半径を入力してやれば円の面積を求める関数、みたいな感じです。つまり、関数の使い方を覚えるということは、プログラムを全て自分で書く必要がなくなるということです。(いわゆる「車輪の再発明を避ける」というやつです)
関数において大事なのは、「引数(関数に与える値)」「返り値(関数から帰ってくる値)」の2つです。この2つの単語は今後も出てくるので、覚えておきましょう。また、関数は今後出てくる「クラス」の基本要素です。今後、躓かないためにも、基本を固めておきましょう。
9.オーバーロード・テンプレート
前回は関数について学びましたが、今回はその機能の紹介です。関数の能力はこんなものではありません。まだまだ便利になります。
関数は、引数を与えて、処理をして、返り値を返す、という機能でした。しかしここで不便なのが、引数も返り値も型を指定する必要があるということです。int型で作った関数にdouble型の引数は渡せないし、引数の個数が変わると、別の関数を作らないといけません。この困りごとを解決するのが、今回紹介する「オーバーロード」「テンプレート」です。
オーバーロードは、関数の引数の型や数によって、別の作業を与えられるようになります。一方で、テンプレートは、型によらず、同じ処理をする関数を作ることが出来ます。簡単に言うと、柔軟に対応できる関数ができるということです。
例えば、渡された値を全て足して返す関数を作りたいとします。そんな時、オーバーロードが便利です。オーバーロードを使えば、引数の個数が2個でも3個でも対応できる関数を作ることができるようになります。また、渡された引数がint型でもdouble型でも対応する関数も作ることが出来ます。
一方でテンプレートは、「型」に特化しています。例えば、今まで使用していた演算子の + – * / は、int型もdouble型も計算できました。これは、テンプレートで、何の型が来ても計算できるようにしているからです。
テンプレートはつまづきポイントの一つです。一見すると書き方がややこしく感じるかもしれません。しかし、使いこなすと非常に便利ですので、ぜひ一度理解しておくとよいでしょう。
10.ポインタ
今回は、C言語で多くの初心者がつまづきがちな「ポインタ」を解説します。このように言われるので、難しく感じがちですが、図でイメージを持っておくと実は意外と簡単です。
全ての変数は、メモリに記憶されるときに「アドレス」を持ちます。このアドレスを指すのが、「参照」と呼ばれる方法です。そして、そのアドレスが持っている変数を指し示すのが、ポインタです。
例えば、変数だけで使用していると、関数を呼び出すときは引数としてコピーが作成されます。しかし、参照渡しをすると、元の変数を変更できるので、コピーを作る必要がなくなります。
大した差ではないように思うかもしれませんが、これが結構重要です。大きなデータだとこれだけでメモリオーバーになりエラーとなったりします。このように、メモリを最小限に抑える等のメリットがあると理解しておくと、理解が進むでしょう。
難しければ、ポインタは飛ばして、参照渡しだけでも理解しておくと今後の負担が小さくなります。
11.総集編
お疲れさまでした。ここでは、今まで学んだ内容を爆速で振り返ります。まずは、ここまでがんばった達成感を味わいましょう。そして、わからなかったところを振り返って、不安を取り除いてから、次の章に進んでいきましょう。
おわりに
ここまでで入門編は終わりです。基本的なプログラミングの知識は身についているはずです。ここからは、C++等の最近の言語で重要視されている「オブジェクト指向」について学んでいきます。少し難しくなっていきますが、ここまでこれたなら大丈夫です。ゆっくりじっくりと丁寧に学んでいきましょう。
youtubeではITの基礎知識についても紹介しています。「文系だからあまり機械についてよく知らない・・」という方でもわかるように基礎から紹介していますので、良かったらそちらもどうぞ。