Introduction
プログラムを作成する際には「プログラム言語」を使用しますが、その前に手順(アルゴリズム)を図で記し、大まかな流れをつかむことがあります。
そのアルゴリズムを図として表現する際に使用される人気No1がフローチャートです。
※アルゴリズムに関してはこちらから。
「流れ図」とも呼ばれます。
情報処理の試験でも、そのまま出題されることもあるので慣れておきましょう。
その流れ図はプログラムのアルゴリズムを記すために使用されるだけではなく、業務フローや作業フローなど、仕事の流れを記す際にも使用されます。
ここでは、それら物流業務や製造工程の流れではなく、プログラミングでのアルゴリズムの流れを記すフローチャートを例に説明していきます。
「アルゴリズムの流れ」を図にするんだね
フローチャートとは
フローチャートを英語にすると
「flow-chart」
- flow・・・流れる
- chart・・・図表
つまり、「物事の手順を流れるように書く図表」という意味になります。
アルゴリズムを上から下へ流れるように図で表記します。
※物流などの業務でフローチャートを使用する時は左から右へ流れるように書くことも多いです。
フローチャート以外にもアルゴリズムを図で表現するものとしては、アクティビティ図や状態遷移図があります。
フローチャートで使用する記号
フローチャートで使用される記号はJIS(日本産業規格)で決められています。
こちらから閲覧できるのですが、会員登録が必要です。
どのようなものがあるかは兵神装備株式会社様のこちらのページから確認できます。
※PDFファイルです
かなりの数があるのですが、よく使用する記号だけ覚えておけばよいでしょう。
その一覧が下になります。
記号 | 名称 | 内容 |
端子 | 処理の開始と終了を表す | |
データ | データの入出力を表す | |
処理 | 処理を表す | |
判断 | 条件による分岐を表す | |
ループ端 | ループ(繰り返し)の開始と終了を表す | |
流れ線 | データや処理の流れを表す。(矢印を付けることもある) |
全部で5つ。
それぞれの名称を暗記する必要はありません。
「その形が何を意味するか」が大切です。「内容」をしっかり覚えておきましょう。
特に大切なのが「判断」と「ループ端」です。
判断 | 条件による分岐を表す | |
ループ端 | ループ(繰り返し)の開始と終了を表す |
この2つを意識しておけば、あとは何となくでも困らないはずです。
フローチャートの例
では、フローチャートの例を見ながら慣れていきましょう。
レストランでの注文受付の例です。
まずは単純な例から。
机の上にメニューを準備して、注文を聞きに行きます。
注文を聞いて伝票に記入したらそれを厨房に渡して終了。
とりあえず、こんな感じの流れでしょうか。
もう少し細かく手順を考えてみましょう。
お客さんがすぐに注文してくれるとは限りませんね。そこで、聞きに行った時に「もうちょっと待って」と言われた時のことも考えてみると「判断」による条件分岐が必要になります。
赤い場所に注目です。
注文が決まっていないときは「5分待つ」ことにしました。
その後また「注文を聞く」ことになります。
さらに細かく考えてみましょう。
座席数は1つとは限りませんね。複数の座席にも対応できるように工夫してみましょう。
繰り返し(ループ)を利用します。
先ほどと同じく赤い場所に注目です。
メニューを準備した後に赤い「ループ端」の間の処理を繰り返し実行することになります。
座席分だけ注文を繰り返し受け付けることになります。
全ての座席の注文を伝票に記入したら「厨房へ渡す」へ移動します。
「ん?」ちょっとこれは良くないかもしれません。
注文が決まらない座席があったら毎回5分待つ。例えば5席の注文が決まらなかったら25分も待つことに・・・・。
全ての注文を受け付けないと「厨房へ渡す」へ移動できないので、最初に注文した席は相当待たされそうですね。
では、次のように修正してみてはどうでしょうか。
「厨房へ渡す」をループの中に移動してみました。
これで注文ごとに厨房へ渡す事ができます。先ほどより待たせる時間が短くなりました。
このように、少し処理の順番を入れ替えたり矢印の移動先を変えるだけで内容が変わってしまうのが面白いところです。
でも、複数の座席があるならば注文が決まらない時に「5分待つ」よりも「他の座席に聞きに行く」の方が良い気がしますね。
でもそうすると、他の座席の注文がすぐに決まったら、再度注文を聞きに行く時間が短くなりすぎる可能性が出てきます。
お客さんが座っている座席数によって対応を変えた方が良いかもしれません。2人組と6人組の場合は再度聞きに行く時間も変えた方が良さそうだし・・・。
「うーーーん、臨機応変に対応する!」
と言ってしまいたいですね。
でも、コンピュータを相手にするときは曖昧な命令は避けなければなりません。
コンピュータ相手に「なんとなく」は通用しないみたい
そうなると、本気で考えるとこのフローチャートはどんどん複雑になっていきそうですね。
どうでしょう。
フローチャートのイメージはつかめたでしょうか?
今回の説明では、フローチャートの中には言葉を記入しました。
もう少しプログラミング寄りの例にすると、不等号を使用したり変数への代入を使用します。
どの表現でも「分岐」や「繰り返し」の使い方(描き方)は同じです。徐々に慣れていきましょう。
押さえておきたいポイント
学生の方が押さえておくポイントだよ
- 使用する図形と意味
- 分岐(判断)と繰り返し(ループ)に慣れる
- フローチャートでのアルゴリズムの表現に慣れる
練習問題
アルゴリズムを理解するにはフローチャートで慣れるのがお勧めだよ