プログラムを作成する場合、まずアルゴリズムを考えましょう、と前回の記事で説明しました。アルゴリズムはプログラムを作るうえで、非常に重要なものになります。ベテランのプログラマの場合、自分の頭の中でアルゴリズムをイメージできるので、すぐにプログラムを入力することが可能です。しかし、初心者の場合、考えたアルゴリズムをそのままプログラムで表現することは大変な作業となります。そこで、考えたアルゴリズムは、きちんと図式などで表現しておかなければなりません。
アルゴリズムを図式化する場合、様々な手法がありますが、今回は一般的な「フローチャート」について説明します。基本情報技術者試験の午後問題でも、フローチャートに関する問題が毎回出題されています。それほど、プログラマにとって必要なスキルといえます。
フローチャートをしっかり記述しようとすると、たくさん用意されている記号を使い分けなければなりません。これは、初心者にとっては、かなり大変な作業となります。そこで、今回は最低限使用する記号だけを取り上げ、気軽にフローチャートを書く方法について説明します。
アルゴリズムの書き方はわかったのですが、実際フローチャートはどのようにして書けば良いのでしょうか?
今回はフローチャートの簡単な書き方を説明します。初心者はあまりたくさんのことを覚えようとせず、基本的なものだけ、まずは覚えましょう!!
以下の記事もおすすめです
フローチャートの利点
フローチャートとは、さまざまな記号を使って、アルゴリズムを図式化したものです。アルゴリズムを図式化することで、以下の利点が得られます。
- 複数のプログラマでプログラムに関する情報共有が簡単におこなえる
- 入力されたプログラムが仕様にしたがっているか、フローチャートと比べることでチェックできる(入力漏れや記述ミスなどを見つけることができる)
複数のプログラマでプログラムに関する情報共有が簡単におこなえる
ソフトウェア(システム)は、一人のプログラマだけで作ることは、あまりありません。通常、複数のメンバで共同開発していきます。システムの部分的な機能をそれぞれのプログラマが開発し、最終的に寄せ集めて(結合して)システムを完成させます。プログラマは基本的に自分が担当する部分だけを意識して開発するため、システムの全体像を把握しきれない時があります。そのようなときにフローチャートを見れば、自分が担当している機能が、システムのどの部分なのか理解、確認することができます。
入力されたプログラムが仕様にしたがっているか、フローチャートと比べることでチェックできる(入力漏れや記述ミスなどを見つけることができる)
プログラムは人間が作成するため、気を付けていても入力漏れや入力ミスが発生します。単純な記述ミスであれば、コンパイルエラーが発生し、修正することは簡単にできます。しかし、コンパイルエラーが発生しない入力ミスは、なかなか見つけることができません。例えば「0以下」という条件を書く場合、本来「=<」と記述しなければならないところを、「<」と書き間違えてもコンパイルエラーにはなりません。このプログラムは「以下」と書くべきところを「未満」という条件で記述しています。いわゆる、「潜在的なエラー」と言われる、実行してみないと発生しないエラーです。このようなエラーはフローチャートとプログラムを見比べると、見つけやすくなります。フローチャートにはきちんと「以下」という形で記述されていますので、その部分が「未満」と書かれていれば、エラーであることが誰が見ても、一目りょう然で判断できます。
フローチャートで利用する主な記号
では、実際にフローチャートを書く場合、どのような記号を使えばよいのでしょうか? 経済産業省が策定した「JISX0121 情報処理用流れ図・プログラム網図・システム資源図記号」というものが公開されています。また、派生形として、「NOMA式」「日能式」「産能大式」などがあります。どの記号を利用するかは、利用する会社ごとに異なる場合があります。ここでは、細かいそれぞれの方式の記号ではなく、最低限使えればよいと言われる基本的な記号だけについて説明します。
アルゴリズムの解説をした記事の中で、「逐次処理」「分岐処理」「繰り返し処理」について説明しました。今回は、それらの処理に関連する記号のみ説明します。実際に利用する記号は以下の通りです。
開始/終了
フローチャートを書く場合、必ずこの記号が必要となります。「どこから始まるのか」「どこで終わるのか」を明確にしなければなりません。記号の中には、開始の場合、「開始」「はじめ」「スタート」などの言葉を記述します。終了の場合は、「終了」「おわり」「エンド」などの言葉を記述します。
処理(逐次処理)
実際に行う処理を記述する場合、この四角形を利用します。基本的に、1つの記号には1つの処理のみを記述するようにしましょう。記号の中には、行う処理を日本語で記述しても、実際のプログラムのコード(式)で記述しても構いません。
条件(分岐処理)
分岐処理を記述する場合、条件式をひし形の記号の中に記述します。通常、条件式が成り立つ(真の)場合、処理はひし形の下方向に進みます。一方、条件式が成り立たない(偽の)場合、処理はひし形の右方向へ進みます。それぞれの線(方向)には、条件式が成り立った時に進むのか、成り立たない時に進むのかを示すキーワードを記述したほうが良いでしょう。一般的に、成り立つ場合は「真」「true」「yes」などの用語を使い、成り立たない時は「偽」「false」「no」などの用語を使います。条件式を判断し、条件式が成り立たない時に何も処理しない場合は、右方向への流れの中に処理は記述しません(線のみ記述します)。
反復(繰り返し処理)
繰り返し処理を記述する場合、繰り返し行う処理(1行でも複数行でも構わない)を、2つの台形の記号で囲みます。この台形の記号で囲まれた部分が何度も実行されるようになります。繰り返し処理を行う場合、その回数を指定しなければなりません。その回数は、1つ目の台形の中に記述します。
フローチャートの書き方
フローチャートを記述する場合、次のルールに従う必要があります。
各記号は「線」でつなぐ
処理の流れは「上から下」、「左から右」が基本。
この基本ルールに従わない場合、明示的に矢印を付ける
では、実際にフローチャートのサンプルを処理ごとに見てみましょう!!
逐次処理
サンプルとして、「カレーを作る」処理のフローチャートを記述してみます。ただし、この例では詳細な処理内容は記述していません。
- 開始/終了の記号を必ず記述する
- 行う処理を上から順番に記述する
- 処理の流れは、すべて「上から下」に向かっているので矢印は使わず、単純に線で結ぶ
分岐処理
サンプルとして、「降水確率を調べて、もし50%以上だっ、傘を持参し、それ以外だったら何もしない」という分岐処理のフローチャートを記述してみます。
- 開始/終了の記号を必ず記述する
- 分岐の条件式をひし形の中に記述する。今回は「降水確率が50%以上か?」
- 条件が成り立つ(50%以上の)場合、「yes」(下)方向へ進む
- 条件式が成り立たない(50%未満の)場合、「no」(右)方向へ進む
- 今回は50%未満の場合、何もしないので処理を記述せず、線だけ結ぶ
- 線は、左に向かっているので「左から右」のルールに反するため、矢印を付ける
- 「上から下」に向かっている処理をつなぐ場合、矢印は使わず、単純に線で結ぶ
繰り返し(反復)処理
サンプルとして、「3人分の乗車券を購入する」処理のフローチャートを記述してみます。なお、比較するために、繰り返し処理を使わず、逐次処理のみで記述したフローチャートも併せて記述しています。
- 開始/終了の記号を必ず記述する
- 繰り返し処理の部分を、台形の記号で囲む
- 上の台形の中には、繰り返す回数を記述する
- 処理の流れは、すべて「上から下」に向かっているので矢印は使わず、単純に線で結ぶ
反復処理を使わず逐次処理だけで行うと、右図のように同じ処理部分を回数分記述しなければならなりません。今回のように3人分程度であれば、我慢して記述することはできるでしょうが、もし100人分だったら、あなたはどうしますか? このように反復処理を利用すると、プログラムの記述が効率的になります。
まとめ
今回は、フローチャートの書き方について説明してきました。
- フローチャートは情報共有、記述チェックのために有効
- 基本的な記号だけで記述してもよい
- 記述する場合は、各種ルールに従う
- 処理によって使用できる記号の種類が決まっている
- 処理の流れは「上から下」「左から右」が基本
今まではフローチャート用の記号を全部覚えないといけない、と思っていたので、なかなか書く勇気がありませんでした。でも、これだけの記号で良いなら、これからは書きやすくなりそうです!!
フローチャートも、とにかく書いて慣れるしかありません。いずれは、きちんと記号を使い分ける必要があります。でも、まずは気軽に書くことが大切です。どんどんチャレンジしてみましょう!!
コメント