みなさん,こんにちは。この連載では,「C言語で始めるプログラミングの基礎」をテーマにして,「ちょっとプログラミングでも勉強してみようかな」と思っている初心者,入門者のみなさんを対象に,C言語*1によるプログラミングを優しく解説していきます。

 この記事を読み終えるころに,読者のみなさんが到達するゴールは,プログラマが備えるべき基礎知識を知ることと,それを体感してコンピュータに対する正しいセンスを身につけることです。これらはつまり,“正しいプログラミング心”を手に入れていただくことにほかなりません。この記事をずーっと丁寧に読んだからといって,バリバリのプログラマにはなれないかもしれませんが,バリバリのプログラマへの近道を見つけていただくことはできると思います。では,始めましょう。

なんでC言語なの?

 本記事では,「C言語」というプログラミング言語*2を用いていくつかのサンプル・プログラムを作りながら“正しいプログラミング心”を学んでいきます。ここで,「私はJavaで勉強を始めているからいいや」なんて思わないでください。この世の中には,Visual Basic,VBA,Java,Ruby――などなどいろいろなプログラミング言語がありますが,どの言語を使っている方,学習を始めている方でも,この記事を読んでいただきたいと思っています。

 なぜならC言語は,そもそもコンピュータが持つ仕組みや,日ごろプログラムを作成していてもなかなか意識できないコンピュータの奥の方が,とても実感しやすいプログラミング言語だからです。昨今よく利用されているプログラミング言語と異なり,メモリーと,そこにあるデータの存在を強く意識することができます。ここで言うメモリーは,コンピュータがデータやプログラムを,一時的に記憶する部分のことです。プログラミングでは,メモリーをどのように利用しているかをうまくイメージすることが重要になる場合が多くあります。

 このようなメモリーを意識しやすい特徴を持つC言語でプログラミングを学んでみると,例えば,「へぇー,僕の使っているVisual Basicってこんなに色々なことを勝手にやってくれていたんだ」というように,現在使っているプログラミング言語や開発環境が何をしてくれているかを,よりよく,より正確にイメージできるようになるはずです。

 もちろん,プログラミング言語は多種多様なものですから,利用目的や実行環境によって適材適所で使うべきものです。プログラミング言語に優劣を付けることに意味はありませんし,言語ですから好き嫌いがあるのも当然です。でも,とにかくプログラミングを学んでみたいという目的の方,プログラミングを始めて間もない方なら,筆者はC言語での学習をお薦めします。この先どのようなプログラミング言語を使うことになっても,きっと役に立つでしょう。

 今回は,まずプログラミングの基礎知識を簡単に説明してから,本記事で使用するコンパイラをインストールし,プログラムを作成して実行してみます。よろしくおつきあいください。

プログラムは実行したいことを順番に記述したもの

 まずは,はじめてプログラミングについて学ぶ方のために,プログラムとは何かというお話から進めなくてはなりませんね。コンピュータの世界ではなく,一般に「プログラム」というと,まず思い浮かぶのは,運動会のプログラム,演奏会のプログラム――などですね。

 このプログラムには演奏する曲目と,どんな演奏順かがわかりやすく書いてあります。よーく読まないと演奏順がわからないようなプログラムはあまりよいプログラムとはいえません。例えば,「Aという名前のグループはCさんの次に出演する。BさんはCさんの二つ前に登場する…」なんてクイズみたいなプログラムは実用的ではありませんね。同じようにコンピュータのプログラムは,コンピュータにさせたい仕事を順序よく,コンピュータにわかりやすく記述したものです。コンピュータのプログラムを作ることをプログラミングといいます。

 人間同士なら,順序立てて説明しなくても相手が自分の言いたいことをうまく察知してくれたり,周りの状況から判断して,言葉足らずなところを補足して理解してくれます。夫婦や気心のしれた友人だと,「あ」とか「うん」だけでコミュニケーションが成立することもあります。長くつきあっているうちにその人の情報を蓄積したので,簡単なサインだけでその人の言いたいことを理解できてしまうのです。でも,コンピュータに何か仕事をさせたい時は,そうはいきません。コンピュータで実行したいことを論理的に,もれなく順に記述していく必要があります。それがコンピュータのプログラムです。

 そう書くと「コンピュータは融通が利かない」と不満に思うかもしれませんが,コンピュータは機械なのですから,当然のことと思ってあきらめてください。プログラミングした結果以上のことを,コンピュータはけっしてしてくれません。