
プログラミングを学んでいると、「アルゴリズム」という言葉をよく耳にするようになります。
「アルゴリズム」と聞くと、”アルゴリズム体操”という教育番組は見たことあるという人もいると思います。
「アルゴリズム」をよく調べてみると、誰もが普段から使っていて身近なものだということが理解できます。
・プログラミングとアルゴリズムはどう関係があるの?
という素朴な疑問は常にあると思います。
人によっては、
確かに、プログラミングに必要な文法は一通り学んでも、プログラムが書けるようにはなりません。
なぜなら、文法を学んでも文章の書き方までは学んでいないからです。
たとえば、英語で小説を書きたいとします。
英語の文法や構文は覚えたけれど、ストーリーの展開までは手順を学ばなければ書けない事と同じだからです。
プログラミングも同様に、「アルゴリズム」という問題解決の手段や手順を学ばなければなりません。
今回は、「アルゴリズム」とはなにかを知り、プログラミングとの関係を確認します。
その次に、プログラムを作る上で、いつ「アルゴリズム」が必要になるのかを見ておきます。
そして最後に、問題解決における「アルゴリズム」の手順は、3つの基本構造から成り立っていることを説明します。
この記事を読めば、
プログラミングにはプログラミング言語の文法を学ぶほかに、「アルゴリズム」を学ぶ必要性があることを理解することができます。
目次
アルゴリズムとは?
あなたは、普段から
-
- どうしたらできるだろうか?
-
- どのようにしてやろうか?
というようなことを考えたりしますか?
その考え方やアイデアといった形のないものがアルゴリズムの正体なのです。
問題や課題解決のための手順
突然ですが、あなたはファストフードのハンバーガー店でアルバイトをはじめました。
ハンバーガーを作る仕事を任されたら、どのようにしてハンバーガーを作りますか?
お店ではハンバーガーをはじめて作る従業員向けに手順書もしくはビデオを見てもらいます。
そこではじめてハンバーガーの作り方を知ります。
ハンバーガーを作る手順書は誰が作っても同じハンバーガーができるように作り込まれています。
アルゴリズムとプログラミングの関係
アルゴリズムとは、人間のアイデアや考え方です。
人間のアイデアや考え方は形のないものです。
形のないものを手順としてまとめ、それをコンピューターに伝えて処理を行います。
コンピューターが理解できるプログラミング言語に置き換えられるように手順書をまとめたものがプログラムなのです。
どの段階でアルゴリズムが必要になる?
アルゴリズムが必要になるのは設計段階
まず、上図からプログラムが作られるまでを把握しよう。
プログラムが必要になるのは、
問題になっている課題をプログラムで解決できないか
ということが、ニーズの発端です。
そのときに必要になるのが、機能や仕様などの要件をまとめることです。
要件をまとめることができたら、設計の段階に入ります。
要件を満たすための機能を、プログラムでどのように実現させれば良いかを考えます。
ここで必要となるのがアルゴリズムです。
- どうしたら実現できるだろうか?という手段を練ることになります。
- 練った手段をどんな手順で処理していけばよいのか?
アルゴリズムは設計の段階で詳細に検討することになります。
アルゴリズムの基本構造は3つだけ!
ここからは、アルゴリズムで考えた手順を実現させるための基本構造(文法書では制御構文)を紹介します。
アルゴリズムの手順を小さく分解していくと3つの構造に落ち着きます。
この3つの構造を使ってプログラムを設計する方法論を構造化プログラミングと言います。
①順次構造
順次構造は、流れ作業のように流れてきた情報を順番に処理するだけです。
①バンズ(パン)を用意
②焼きあがったパテ(お肉)をバンズの上にのせる
③バンズをパテの上にのせる
これでハンバーガーの完成です。
出来ている材料を上に重ねるだけでハンバーガーが出来上がります。
もしチキンバーガーの注文が入ればパテの代わりに、チキンをのせる工程へ分岐させます。
-
- Yesならパテをのせる
-
- Noならチキンをのせる
条件を満たす判断をおこない次の工程に進むという場合に使います。
③反復構造
反復構造は、条件を満たす限り繰り返しを行うというものです。
たとえば、パテの材料がなくなるまでハンバーガーを作り続ける条件を設定します。
条件が満たされていれば何個もハンバーガーを作り続けることができます。
繰り返しという規則性の存在に気付き、パターンを見抜く力が必要です。
まとめ
アルゴリズムって何だろう?というところからはじまり、アルゴリズムの基礎を解説してきました。
以下3つにまとめておきます。
-
- アルゴリズムとは、考え方やアイデアといった形のないものを問題解決の手順としてまとめたもの
-
- アルゴリズムは、プログラムの設計段階で必要になる
-
- アルゴリズムを考える上で必要なプログラミングの基本構造は3つのみ