著者の一言

本書は、C言語のプログラミング入門書です。決して文法だけを解説したり、辞書のように利用したりするものではありません。最近のプログラミングの流行はPythonだからC言語はもういらないと考えもあるかもしれません。しかし、コンピュータの中身とプログラミングの仕組みをゼロから積上げるにはC 言語プログラミングの学びは非常に有効と考えます。

  • コンピュータやスマートフォンを使っているけれど、自在に使えていない/何が起きているのかよくわからない
  • プログラミングをやってみようとしても、意味がわからず3日であきらめた/先が見えなく学びが続かない
  • プログラミングを習ったけど、何の役に立つのかわからない/どう使っていいのか全然イメージできない
  • 目的はわからないけど、授業で学ぶことになった/研修を受けることになった

といった方を対象と考えました。

書店には多くの入門書が並んでいます。しかし、私はいままで「わかりやすくて⁠⁠、⁠具体的で⁠⁠、⁠のちのち困らない」入門書に出会ったことがありません。⁠プログラムは習うより、慣れろ」という声を耳にすることがあります。ですが、なにごともはじめが大切! きちんと習わないと覚えられるわけがありません。納得できて、将来プログラムを作るときに役に立つように覚えていけば、はるかに簡単にマスターできるはずです。

そこで本書では、⁠基本をしっかりおさえる」ことはもちろん、⁠どう考えればプログラムを作ることができるのか?」「ひとつひとつの基礎をどのように組み合わせてプログラムを作っていくのか?」ということに重点をおいて構成しました。

  • 「この1冊を読めば、プログラムを作るときの考え方がみえてくる」
  • 「コンピュータの倫理的な仕組み・動きが理解できるようになる」

そんなことを目指して執筆しました。

本書は、C言語の命令(関数)などをたくさん取り上げるのではなく、⁠長く使っていくであろう基本的な命令(関数)をちゃんと使いこなしていこう」という考え方で解説を進めています。そのため他の入門書よりも取り上げた命令(関数)は少なくなっていますが、本書の理解で作ることができるプログラムの種類は、決して他の入門書に劣るものではないはずです。コンピュータの大切な考え方を理解すれば、基本的な関数だけでも十分利用価値のあるプログラムを作ることができます。多くを知っていればよいこともありますが、⁠船頭多くて船進まず」とならないように、しっかり基本を覚えていきましょう。

本書の解説は、次のような順番で進めています。

  1. まずはプログラムを動かす
  2. 全体の流れを理解する
  3. 個々の処理を理解する
  4. 要点を確認する
  5. 「なぜ、その処理が必要なのか?」を理解する
  6. 「どんな場面で利用すればよいのか」を理解する
  7. 「ここまでの理解で何ができるか」をはっきりさせる
  8. 具体的な利用につながる例題や練習問題

プログラムは座学だけで動作させないで学んでも楽しくありませんし、身につきません。動作させてどうなるのかを体験し、思った通りに動かないものを修正していく過程が最大の学びの時間であり、達成感をもって学びを続けられます。本書では、ただ動作させるだけでなく、そこから全体の流れや個々の処理について理解を深める解説を心がけています。

次に、多くのプログラミングの書籍ではあまり扱われていない「なぜ、その処理が必要なのか?」ということを解説しています。これは、必要性を感じなければ理解は難しいと考えたためです。⁠プログラミングの技術として必要になるから」というのではなく、⁠ある目的をプログラムで実現するにはこんな処理が必要になるから」という視点で必要性を説き、具体的な利用場面の解説をしています。

次に、各処理の要点を押さえる構成にしています。プログラミングの書き方は、極めて単純かつ明確なルールでできています。ひらがなの完全な習得なしに、文章の書き方の理解はできません。そのため、ひらがなに当たる「書き方の規則」を確認してから全体の流れの理解を深めていきます。

そして次に、プログラミングを勉強していくときにつまらなくなる原因のひとつ「これを覚えて何の役に立つの?」という感覚をなくすため、新しい記述を覚えるごとに「ここまでの理解で何ができるかをはっきりさせる」ような解説を試みました。

そして最後に、具体的な利用につなげていける例題を紹介し、練習問題をあげています。練習問題は、基本問題と応用問題を設け、基本問題については「解答プログラムと解説」を、応用問題については「考え方のヒント」を紹介しています。これは、受身な姿勢でプログラミングを学んでいくのではなく、自分で解かなければ解答がない問題も必要だと考えたためです。

加えて、解答がひとつではないものも多くあります。正しい結果を導き出すいろいろなパターンを考えることが、さまざまな問題への対応力を高めます。ひとつの道筋だけを考えて満足しないで、ぜひ複数選択できる作り方を考えながらプログラムを作っていく習慣を身につけましょう。

コンピュータにとってのプログラミングを理解し、自分でプログラムを作っていくことができるようにと考えて、2部構成で章の構成を行いました。大学等で活用する際には、クォータ制の場合は1部・2部をクォータに分けて進められるように、セメスター制の場合は全14章を順に進められるように構成しています。

第一部は、C言語を題材にしていますが、プログラミング言語共通の考え方を身に着けていくことを優先に構成しています。そのため、他の入門書ではあまりない「C言語にまったくふれないでコンピュータの考え方を理解する」という内容から構成しました。1章の内容は読み飛ばさず、必ずはじめに一度読み、先の章を進めたあとにもう一度読み返してください。プログラムがより深く理解できるようになると思います。

各章では、⁠文法書ではなく、理解のための入門書」となるように命令(関数)の意味解説で終わることのないように構成しました。また、⁠陥りやすい間違い」「どうすればエラーが直せるか?」などを取り上げ、関連知識も得られるような解説を心がけました。

第二部は、C言語特有の性質を活かした考え方を学びます。しかし、歴史の長いC言語では同じことを行う場合でも複数の手段が用意されていることが多くあります。本書では、理解が複雑になり過ぎず、さまざまな目的にあわせて大規模システム構築にもつながる例示を強く意識して構成しています。入門書である本書で学び、さらに応用的な資料や公開されているプログラムで深い学びに繋げてほしいと考えています。

そして、さらなる学びにスムーズに繋げていけるよう、最後の章では、これから先どのようにして中・上級者になるための勉強をしていけばよいのかの指針をあげ、本書だけで完結にせず、将来につなげていけるような構成にしています。

他の入門書にない試みを多く取り入れてみましたが、これらが皆さんにとって良い効果をあげることを信じるとともに、心から祈っています。

西村広光(にしむらひろみつ)

1972年,石川県金沢市生まれ。信州大学卒・同大学院了。工学博士。日本学生相談学会認定,学生支援士。神奈川工科大学情報学部情報メディア学科教授。

大学のCSERT として日々苦悩し戦う毎日。さまざまなコンピュータ,プログラミングを経験してきたが,コンピュータのすべての動作を,頭の中でC言語レベルのコードに置き換えて理解,思考している変人である。「コンピュータはあくまで道具! 道具を好きになる必要はない! 道具として使いこなすことが大切」。そんな思いでコンピュータを使い,教育・研究・業務に活用しています。