PR/BLOG

広報・ブログ

アルゴリズムとフローチャート

yamazaki

こんにちは、技術開発推進部の山崎です。
基本情報技術者試験やITパスポートなどにも出てくる「アルゴリズム」について、フローチャート(流れ図)をもとに説明いたします。

アルゴリズムとは?

アルゴリズムとは、「問題を解決するための手順や計算方法」のことです。もっと簡単に言うと「やり方」です。ここで重要なのは、この「やり方」はたくさんありますが、最終的に同じ結果になるということです。
例えばキャベツの千切りを行う際、キャベツの葉を1枚ずつ千切りにするのと、何枚かまとめて千切りにするのを比べた際、結果は同じですが切った回数やかかる時間などは全然違います。
このように、たくさんある中でより効率の良いアルゴリズムが「良いアルゴリズム」といえます。

フローチャート

アルゴリズムを利用してプログラムする際、構造を分かりやすくするための手法として「フローチャート」があります。フローチャートとは、アルゴリズムの動作を、記号を利用して図にしたものです。また、流れ図とも呼ばれます。
プログラムの構造を整理することにより処理スピードや可読性が大幅に向上し、結果的に効率や品質の向上にもつながります。
先述した通り、フローチャートには記号が用いられます。今回は基本的によく使われる記号を紹介します。

端子

フローチャートの開始と終了を表します。記号内に「開始」「終了」を入れます。

 

処理

処理内容を表します。記号の中に処理内容を入れます。

 

制御の流れを表します。流れの向きを明示する必要があるときは矢印で示します。

 

判断

条件分岐を表します。
記号の中に条件を入れ、分岐を矢印で入れます。「真」「偽」やcase1,2,3…などの分岐に利用できます。

 

ループ

ループの始まりと終わりを表します。開始記号と終了記号の間に処理内容を記入します。

 

フローチャートの基本の型

フローチャートは、基本となる型がいくつか存在します。

1.順次処理
処理の1つ1つを上から下に順番に行います。記号を並べて矢印でつなぎます。

2.分岐処理
条件によって処理が分かれます。

3.反復処理(ループ)
条件を満たす間、もしくは条件を満たすまで処理を繰り返します。分岐記号、ループ記号のどちらでも表すことが可能です。

 

フローチャートを用いる

フローチャートを実際に利用してみましょう。
例題を2つ考えましたので、こちらをフローチャートで表します。
例題1:160円のお茶を4本買う時の税込金額を求めましょう。(税率は10%)

 

それぞれの値を「税率」「単価」「数量」に代入します。
単価(160)×数量(4)=金額(640)となり、
金額(640)×税率(0.1)=消費税(64)になります。
最後に金額(640)+消費税(64)で税込額(704)が求められます。

2つ目の例題です。

例題2:1から15までの数字を表示します。表示する数字が3の倍数なら「Fizz」、5の倍数なら「Buzz」、3と5の公倍数なら「FizzBuzz」と表示させます。
こちらをフローチャートで表すとこのようになります。

カウンタである「i」に最初の数値である1を代入します。「i」が15になるまで分岐処理をループします。

分岐処理ではそれぞれの条件に分岐します。また、3の倍数,5の倍数の分岐処理の前に3と5の分岐処理を入れる必要があります。(先に3の倍数,5の倍数の分岐処理があった場合、公倍数の処理に遷移することができなくなるため)いずれにも該当しない場合は「i」の値を出力します。そして次のループの前に「i」の値を+1します。

このようにフローチャートを利用することで処理や流れを整理することができます。

おわりに

今回はアルゴリズムをわかりやすくする手法の1つとしてフローチャートを紹介しました。皆さんの理解の助けになればと思います。
フローチャートはアルゴリズムのほか、複雑化しやすいプロセスや計画を示すときなど幅広く使われます。
また、基本情報技術者試験の午前問題にもフローチャートの穴埋め問題、午後にはアルゴリズムの問題(必須)がよく出題されるため、知識・技術の向上には欠かせないツールです。

アルゴリズムの問題が苦手な方はフローチャートを利用して学習を進めてみてください!

一覧に戻る
ゆりちゃん

技術開発推進部ゆりちゃんからのお願い顔マークを押して、技術ブログの
感想をお聞かせください^^