記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。
みなさん、こんにちは。
今回の授業では『アルゴリズムと各種図表』について学びます。
各種図表には、「フローチャート」や「アクティビティ図」、「状態遷移図」などを紹介します。
- アルゴリズムの表し方
- フローチャート
- アクティビティ図
- 状態遷移図と状態遷移表
フローチャートやアクティビティ図の問題が出題されたときには、与えられた図表を正しく読み解く問題として出題されるでしょう。
そういう意味では暗記モノという側面が多いことは事実です。
また、これらを理解しないと続くプログラムの範囲が理解できない、というわけでもありませんが、親密にかかわる範囲ではありますので、それぞれをしっかり理解できるようにしましょう。
それでは早速始めていきますね。
アルゴリズムというのは、ある問題を解決するための手順やルールのことです。
皆さんが毎日行う、例えば朝の準備や学校への道のりにもアルゴリズムがあると言えます。
では、そのアルゴリズムを効果的に伝える方法にはどんなものがあるのでしょうか?
今日は、フローチャートやアクティビティ図、状態遷移図など、視覚的にアルゴリズムを表現する方法を学びます。
まず、アルゴリズムを文章で表現する方法を見てみましょう。
例えば、朝起きてから学校に行くまでの手順をテキストで表現するとどうなるでしょうか?
- 目を覚ます
- ベッドから起きる
- 服を着替える
- 朝食を食べる…
このように書くこともできますが、テキストだけでは分かりにくくなることがあります。
そこで、これをもっとわかりやすく表現するために、フローチャートなどの視覚的な表現方法を使います。
アルゴリズムを視覚的に表現する方法の一つがフローチャートです。
フローチャートは、処理の流れを視覚的に示すための図です。
基本的な要素には、開始・終了を示す楕円形、処理を示す長方形、条件分岐を示すひし形をはじめ、以下のものを覚えましょう。
続いてフローチャートの例を見ていきましょう。
ここで、皆さんがよく知っているイソップ物語の『金の斧銀の斧』を例にフローチャートを描いてみましょう。
この物語は、正直者の木こりが金の斧と銀の斧を持っているかどうかを問われる場面がポイントです。
では、どのようにフローチャートで表現できるか見ていきましょう。
木こりが斧を落とした後、女神が現れて『金の斧があなたの斧ですか?』と尋ねます。
ここで木こりは正直に『いいえ』と答えます。
次に女神が『銀の斧があなたの斧ですか?』と尋ね、また木こりが『いいえ』と答えます。
最終的に、木こりが『自分の鉄の斧を取り戻し、それに加えて金の斧と銀の斧ももらう』という結果になります。
それでは女神が表れて質問する場面からフローチャートに変換してみましょう。
簡単にテキストにすると以下のように表現できるでしょう。
- プログラムを開始
- 落としたのはオノxか?と問う(繰り返しあり)
- オノxが鉄の斧と一致していれば、すべての斧を手に入れる
- プログラムの終了
では、これをフローチャートに描いてみましょう。
この物語をフローチャートにすると、物語の流れが一目で分かるようになります。
このように、フローチャートを使えば、複雑なアルゴリズムも視覚的に分かりやすく表現できるのです。
次にアクティビティ図を見てみましょう。
アクティビティ図は、フローチャートに似ていますが、特にシステムやプロセスのフローを表現する際に使います。
具体的には、ある作業の開始から終了までの機能を、実行される順序どおりに記述します。
例えば、フローチャートは通常、直線的なプロセスの流れを示すのに適しています。各ステップが順番に進行し、分岐点で条件によって次のステップが決まるという形です。
これは、シンプルなアルゴリズムの説明には非常に有効です。
一方、アクティビティ図は、並行して行われるアクションや、プロセスの中での状態の変化など、より複雑なシナリオを表現するのに適しています。
アクティビティ図は、例えば複数の人物が関与するプロセスや、異なるシステムが連携して動作する場合のプロセスを描くときに使われます。
アクティビティ図の記号としては
- プログラムの開始
- プログラムの終了
- 処理
- 条件分岐
- データの流れ
これらを覚えておきましょう。
それでは具体例として、ユーザーがウェブサイトにログインするプロセスを考えてみましょう。
この場合、アクティビティ図では『ユーザーがログイン情報を入力する』『システムが情報を検証する』『認証が成功した場合、ユーザー情報が表示されログインが完了する』といった流れを示すことができます。
次は、状態遷移図と状態遷移表です。
状態遷移図は、システムがどのように状態を変化させるかを視覚的に示すための図です。
そして、状態遷移表は、状態の変化を表形式で示すものです。
これらを使って、システムの動作を整理することができます。
今日は例として、信号機の状態遷移を取り上げてみます。
まず、信号機には3つの主要な状態があります。
『赤』、『緑』、『黄』ですね。
これらの状態は、時間経過によって次の状態に変わっていきます。
- 初期状態は『赤』です。ここで時間が経過すると、信号は『緑』に変わります。
- 次に、『緑』の状態から時間が経過すると、信号は『黄』に変わります。
- 最後に、『黄』の状態からさらに時間が経過すると、信号は再び『赤』に戻ります。
このように、信号機の状態は『赤』→『緑』→『黄』→『赤』という順序で繰り返されます。
これを状態遷移図で表現すると、次のようになります:
- 初期状態: 『赤』
- イベント: 時間経過
- 次の状態: 『緑』
- 状態: 『緑』
- イベント: 時間経過
- 次の状態: 『黄』
- 状態: 『黄』
- イベント: 時間経過
- 次の状態: 『赤』
この状態遷移図は、信号機が時間の経過に従ってどのように状態を変えるかを視覚的に示しています。
さらに、これを状態遷移表で表すこともできます。
状態遷移表は、状態遷移図を表形式で整理したもので、現在の状態とイベントに基づいて次の状態を決定するルールを示しています。
状態遷移図や表では、どのような状態があるかを整理してどのような条件(イベント)が発生すると遷移するのか、そして遷移後、どの状態になるかをまとめられるようにしましょう。
ここまでアルゴリズムと各種図表について、学びました。
それぞれの特徴と記号の意味を覚えておくようにしましょう。
続いてはいよいよプログラミングです。引き続き頑張っていきましょう!
スポンサーリンク