アルゴリズム、フローチャートはプログラミングの基本概念としてよく耳にするものかと思います。未経験でIT企業に入社して新人研修を受けると、最初の方に勉強するのがこのアルゴリズム、フローチャートです。
プログラミングの前に「アルゴリズムを考えてみよう」「フローチャートを書いてみよう」といったことがよく言われますが、「アルゴリズムとフローチャートって何が違うの?」と疑問を持たれている方もいるかもしれません。
そこでこのページでは、アルゴリズムとフローチャートの違い、それぞれの定義と使い方について解説します。
アルゴリズムは目的のための手順
まずアルゴリズムについてですが、アルゴリズムを一言で表現するなら目標のための手順です。プログラミングに限った話ではなく、日常のすべてにアルゴリズムは潜んでいます。具体例として、簡単なアクションゲームの動きを考えます。
- 基本的に右に進んでいく
- 敵が下から来たらジャンプ
- 敵が上からきたらしゃがむ
実際はもう少しいろいろ動きがあるかと思いますが、上記のような基本動作はよくあるアルゴリズムです。「やられないでゴールする」という目標があり、そのための手順がゲームの操作です。
フローチャートはアルゴリズムを図式化したもの
次にフローチャートはアルゴリズムを図式化したものです。上の例をフローチャートにすると以下のようになります。
当たり判定がなかったり敵がどっちの方向から来たのかを判定しているので実際これだと変なプログラムのゲームですが、このようにアルゴリズムをフローチャート化していきます。またフローチャートは処理ごとに図形の形が決まっています。主な形とその内容を以下にまとめました。
ループの図形は六角形だったり台形だったりするのですが、ループ開始で上の方が細く、ループ終了で下の方が細くなっていれば問題ありません。また処理開始と処理終了の図形も角のないし角形だったり楕円だったりしますが、流れがわかれば問題ありません。
またサブルーチンは上の例では使用しませんでしたが、プログラミングで言えばメソッドを呼び出すようなものです。メソッドはあらかじめ定義しておいて、毎回実装するのではなく使いたいときに呼び出します。
サブルーチンはその考え方で、処理を実装するのではなくあらかじめ用意している処理を呼び出すということです。
プログラミングの基本はアルゴリズムとフローチャート
プログラミングにおいて重要なことは、表面的なソースコードではありません。アルゴリズムを考え、それをフローチャートにすることです。フローチャートにさえできれば、後はプログラミングのルールに則って処理を実装していくだけです。
一番ダメなのは、表面的なソースコードにばかり捉われて、処理全体にまとまりがなくなってしまうことです。これは日本語の文章でも同じですが、たとえば文法にばかりこだわって、何が伝えたいのかわからない文章になってしまったら本末転倒です。
日本語の場合相手は人間なのである程度意味を汲み取ってくれますが、プログラミングの場合相手はコンピューターです。アルゴリズムを決めてその通り正確にプログラムを書いていかないと、バグが発生します。
アルゴリズムを考えそれをフローチャートにするスキルはプログラミング言語が変わってもほとんど同じで、普遍的なスキルです。これができれば言語が変わっても表面的な書き方を調べながら実装していけます。
また毎回フローチャートを書く必要はありませんが、アルゴリズムは日常生活や仕事でも役立つ考え方です。頭の中で処理手順やケースごとの結果を考える習慣が付くので、大げさに言えばアルゴリズムの習得によって人生が変わるかもしれません。
アルゴリズム学習のための書籍は以下の記事で解説しています。