アルゴリズムとデータ構造
ある程度プログラミングの簡単な問題が解けるようになったら、次はさらにプログラミング能力を身につけるための練習をしましょう。
Java言語であろうと、他の言語であろうと、プログラマーがある程度複雑なプログラムを作成しようと思うのなら、必ず学習しなければならない項目があります。それが、「アルゴリズムとデータ構造」と呼ばれるものです。
ではいったい、これはどのようなものなのでしょう。
ある程度プログラミングの簡単な問題が解けるようになったら、次はさらにプログラミング能力を身につけるための練習をしましょう。
Java言語であろうと、他の言語であろうと、プログラマーがある程度複雑なプログラムを作成しようと思うのなら、必ず学習しなければならない項目があります。それが、「アルゴリズムとデータ構造」と呼ばれるものです。
ではいったい、これはどのようなものなのでしょう。
アルゴリズムとは、コンピューターで何らかの処理を行うための段取りのことです。私たちが何かをしようとするとそのための段取りをするように、コンピュータも何らかの処理をするときは、それなりに段取りをしなくてはなりません。
一口にアルゴリズムといってもたくさんありますが、基本的なものとしては並べ替えのソート、そしてデータの探索に用いるサーチなどがあります。プログラムを行う際には、定石としてある程度こういったアルゴリズムを知っておく必要があります。
それに対し、データ構造とは、文字どおり、「データの構造」であり、コンピュータが何らかの処理を行う際に必要なデータを格納する構造のことです。一番簡単なデータ構造としては、配列がありますが、これに動的配列として用いられるリストや、スタック・キューなどといったものが加わります。
通常、データ構造は、アルゴリズムとセットで用いられ、この組み合わせにより、だれでもある程度複雑な処理を行うことができます。
これらアルゴリズムとデータ構造の基本的なものは、現在主要な言語には必ず標準ライブラリの中の一機能として実装されています。Java言語やC#言語も、言うまでもなく内部に持っています。
したがって、複雑なアルゴリズムをわざわざプログラマーはそれらを自分で実装する必要がなく、道具として利用すればいいのです。
アルゴリズムとデータ構造についてある程度理解が深まったら、今度はオブジェクト指向の勉強をしてみましょう。
オブジェクト指向とは、作成する対象のもの・事柄をすべてモノ(オブジェクト)としてとらえて表現する考え方のことで、現在のプログラミング言語には必ずと言っていいほど用いられている考え方です。
JavaやC#は、オブジェクト指向言語であるのは言うまでもありません。ただ、C言語はオブジェクト指向言語ではないため、かわりにC言語の上位互換言語で、オブジェクト指向の考え方を導入したC++言語を用いる必要があります。
いざ、これらの考え方を学習したら、今度は実際にある程度複雑なプログラムを実際に作ってみましょう。冒頭で説明した、成績管理システムは、このレベルの知識で十分作成可能です。学生の名前を入力し、その生徒のテストの点数を入力すると、その結果の一覧を点数の高い順・低い順などといった並べ替えで表示できたり、あらかじめ登録されているデータを編集してデータを変更したり、削除・追加したりするものです。(図3-2.)
データをファイルとして保存できるようにし、操作はコマンドプロンプトでの入力で行うようにすることができるようになれば、プログラミングの能力はかなりついた、と考えてもよいでしょう。ここまでくれば、あとはこれをいかにしてよりアプリケーションらしくしていくか、ということになります。