漠然とプログラミング言語を覚えたい。今流行りのプログラミング学習の流れでそう思う人が多いです。 良いことだと思って、「で、何をやりたいの? ゲーム制作、ウェブ、スマホアプリ?」と聞いても、とりあえずプログラミングを覚えたいとなります。
そんな人はC言語
漠然とプログラミング言語を覚えたいのであれば、C言語をおすすめします。理由としては、非常に汎用的に使えるところです。 特定の分野に特化した機能が基本部分には無いため言語の本質を覚えやすいと言う部分もあります。
C言語かC++か?
よくわからないのであれば悩まないで下さい。単にC言語を増築したのがC++です。まずはどちらも同じって考えで取り組んで見て下さい。というか、この手の悩みがある人って、理解できないことを妄想して悩むって人かもです。「遠くの関係ない心配ばかりしていて、足元の穴に躓いて骨折するって人」です。
学生のときにもよくいた「どの参考書が良いのか?」って探しまくっている人です。結局、最初は周りの人が使っている参考書でも手に入れて勉強の習慣を付けることが重要なのですけど。 英会話初心者が「イギリス人から習うのは心配です」みたいな事を言っているようなものです。 そんな方々は一生何かを身につけることは無理なのではと考えます。
だから、よくわからなければC言語を覚えて下さい。
最初に習うことは
C言語というとポインターと言われるが、とりあえずは忘れて下さい。 まずは、普通に変数に値を代入し、IF文で判定、FOR文で繰り返し、標準関数のprintfで文字出力をして色々動かしてみて下さい。
それでもポインターが気になる
- #include<stdio.h>
- main(){
- int *a; //整数型のポインタ(住所を書くことが出来るaというメモ用紙って認識)
- int z=111; //整数型の実体 (zという土地を買ったと言う認識、上モノは111)
- a = &z; //zという土地の住所をメモ帳aに書き込む 実体の変数の先頭に & を付けるとその住所を返す
- z = 240; //zという土地に240という家(上モノ)を建てる。
- printf("%d\n",z); //土地aにどんな家(上モノ)があるか表示する。このコードの場合は240と表示される
- *a = 222; //メモ用紙aに書かれた住所に222という家(上モノ)を建てる。ポインター(メモ)に*を付けると上モノにアクセス出来る
- printf("%d\n",z); //土地aにどんな家(上モノ)があるか表示する。このコードの場合は222と表示される
- }
簡単な例えです。まず、普通の変数は不動産に例えると「土地と上モノ」と考えて下さい
int z = 111;
とした場合、zという土地と111という上モノが手に入ります。次に
z = 240;
とすると、既に持っているzという土地の上モノを240にすると言うことです。まあ、たとえ話なので先程の上モノである111はどこに行った? という心配は忘れて下さい。(適切に廃棄されていますと納得を)
int *a;
上記のようにアスタリスクを付けて定義したものがポインターです。意味としては物件の住所をメモるすことが出来る変数として下さい。不動産のたとえだと単なるメモです。
a = &z;
上記の式では、zの住所をaにメモします。 物件を示す zに&を付けて&z とすると、zの物件の住所がメモ帳であるaに書き写されます。
*a = 222;
とすると aにかかれている土地の上モノを222にするということになります。
ではクイズです。現在 zの変数はいくつでしょうか? 答えを言うと 222です。 わからなければ以下の例えを順番に見て下さい
- zという土地を111という上モノと一緒に取得 int z=111;
- zという土地に240という上モノを建築 z = 240;
- aというメモ帳のページを一枚買う int *a;
- aというメモ帳にzという土地の住所をメモする a = &z;
- aというメモ帳に書かれている土地の住所に222という上モノを建築 *a = 222;
これで大体のポインタの意味が理解できたのではと思います。 ただ、とりあえずはこういう機能があるということだけで、普通の変数を使うことだけを考えて勉強すれば良いと考えます。
とりあえず何かプログラミング言語を覚えてみたいと考えている人は、今が吉日だと考えてC言語を覚えてみましょう。