アルゴリズムは、問題を解決するための手順を明確に表したものです。
情報Ⅰでは、このアルゴリズムを正しく理解し、他者に伝えるための「表現方法」を学びます。
特に、制御構造や図による表現は、プログラミングや問題解決の基礎として重要です。
本記事では、アルゴリズムの基本から、代表的な表現方法までを体系的に整理します。
アルゴリズムとは何か
アルゴリズムの意味
アルゴリズムとは、問題を解決するための具体的で明確な手順のことです。
情報Ⅰでは、コンピュータに処理をさせるための手順として扱います。
つまり、「何をどの順番で行うか」を論理的に整理したものがアルゴリズムです。
アルゴリズムを表現する目的
アルゴリズムを表現する目的は、次の通りです。
- 処理の流れを明確にするため
- 他者と共有できるようにするため
- 誤りや抜けを発見しやすくするため
アルゴリズムは、考えるだけでなく「見える形」にすることが重要です。
制御構造とは何か
アルゴリズムは、基本的に3つの制御構造で構成されます。
これは、どのようなプログラムでも共通する基本的な考え方です。
順次構造
順次構造とは、処理を上から順番に実行していく構造です。
- 手順通りに処理が進む
- 分岐や繰り返しは含まれない
例として、次のような処理があります。
- 挨拶を表示する
- 今日の天気を表示する

分岐構造
分岐構造とは、条件によって処理が分かれる構造です。
- 条件が真か偽かで処理が変わる
- 「もし〜ならば」という形で表現される
例としては次の通りです。
- 点数が60点以上なら合格
- それ以外は不合格

反復構造
反復構造とは、同じ処理を繰り返す構造です。
- 条件を満たすまで繰り返す
- 一定回数繰り返す
例としては次の通りです。
- 挨拶を30回表示する

アルゴリズムを図で表す方法
アルゴリズムは、文章だけでなく図で表すことで理解しやすくなります。
ここでは代表的な3つの図を扱います。以下では、フローチャート、アクティビティ図、状態遷移図を挙げますが、アルゴリズムの表現方法は他にも存在します。
フローチャート

フローチャートは、処理の流れを図で表したものです。フローチャートは、上の表のような記号を用いて表します。
特徴は次の通りです。
- 処理の順序が矢印で示される
- 条件分岐や繰り返しを表現できる
- 記号(開始、処理、判断など)を使う
上のフローチャートの例は、電圧が3Vより高い場合には高電圧、電圧が3V以下の場合には低電圧と判定し、この判定結果を表示するアルゴリズムを表現したものです。
フローチャートは、アルゴリズムの基本的な表現方法として広く用いられます。
私が携わっている業務では、最も多く使用されているのがフローチャートです。
フローチャートの記号は、JISで定義されていますが、会社や業界ごとに微妙に形状が異なっていたりします。
アクティビティ図

アクティビティ図は、処理の流れや作業の手順を表す図です。アクティビティ図は、上の表のような記号を用いて表します。
特徴は次の通りです。
- フローチャートに似ている
- 並行処理(同時に進む処理)も表せる
- UMLという統一された表記法に基づく
上のアクティビティ図の例は、人によって入力されたID・パスワードが正しいかどうかを認証し、この認証結果を表示装置に表示することで、認証結果を人に認識させるアルゴリズムを表現したものです。
複雑な処理や業務の流れを表す際に有効です。
状態遷移図

状態遷移図は、状態の変化を中心に表す図です。状態遷移図は、上の表のような記号を用いて表します。
特徴は次の通りです。
- 「状態」と「変化」を表す
- 入力や条件によって状態が変わる
- システムの動作を表現するのに適している
上の状態遷移図の例は、信号機の色の変化のアルゴリズムを表現したものです。
状態遷移図は、信号機や自動販売機などの動作の表現に使われます。
フローチャートやアクティビティ図に比べると、覚える記号が少なくて楽です。
また、複雑な条件分岐などを表現しなくていい場合が多く、比較的簡易にアルゴリズムを表すことができます。
アルゴリズムの表現で注意したい点
条件の書き方を曖昧にしない
条件は必ず明確に書きます。
- 「高い」ではなく「60点以上」など具体的にする
処理の順序を明確にする
順序が曖昧だと、正しく動作しません。
- 実行される順番を意識する
図の目的に合った表現を選ぶ
すべてを同じ図で表す必要はありません。
- 内容に応じて適切な図を選ぶことが重要です
アルゴリズムの表現を学んだときにつまずいたポイント
アルゴリズムの表現を初めて学んだとき、「順次構造・分岐構造・反復構造」の3つについては、それほど難しく感じませんでした。
順番に処理する、条件によって処理を変える、同じ処理を繰り返す、というように、日常生活の動きに置き換えて考えられたからです。
一方で、私が最初に少しわかりにくいと感じたのは、フローチャート・アクティビティ図・状態遷移図の違いでした。
フローチャートとアクティビティ図の違いがわかりにくかった
特に混同しやすかったのが、フローチャートとアクティビティ図です。
どちらも処理の流れを矢印などで表すため、学び始めたころは「何が違うのだろう?」と思いました。
そこで私は、細かな記号の違いだけで覚えるのではなく、
- フローチャート:処理の手順や判断の流れを見る
- アクティビティ図:作業や活動の流れを見る
- 状態遷移図:状態がどのように変化するかを見る
というように、「何に注目している図なのか」で整理しました。
このように目的を分けて考えると、それぞれの違いがかなり理解しやすくなりました。
フローチャートの記号はある程度丸暗記した
フローチャートに使われる記号については、意味を考えるだけでは覚えきれない部分もありました。
そのため、開始・終了、処理、判断などの基本的な記号については、問題を解きながらある程度丸暗記しました。
というように、実際の処理とセットで覚えたほうが記憶に残りやすかったです。
状態遷移図は具体例で考えると理解しやすかった
状態遷移図は、言葉だけを見ると少し難しそうに感じました。
しかし、信号機の「赤→青→黄→赤」のように、今の状態から別の状態へ変化する様子を表す図だと理解すると、一気にわかりやすくなりました。
自動販売機や信号機など、身近なものに置き換えて考えるのがおすすめです。
共通テスト対策では「図を見て判断する」練習も重要
アルゴリズムの学習では、用語の意味だけを覚えて終わりにしないことも大切です。
「これは分岐構造なのか、反復構造なのか」
「この図では何を表しているのか」
というように、実際の処理や図を見て判断する練習をしておくと理解が深まります。
私自身も、最初は用語を一つずつ覚えていましたが、問題を解くうちに、処理の流れを自分で追いかけることのほうが重要だと感じるようになりました。
確認問題
【問題1】アルゴリズムとは何か、最も適切なものを選びなさい。
1. コンピュータの部品の名称
2. 問題を解決するための手順
3. データの保存方法
4. ネットワークの仕組み
【問題2】次のうち、制御構造に含まれないものはどれか。
1. 順次構造
2. 分岐構造
3. 反復構造
4. 並列構造
【問題3】次の処理はどの制御構造に当てはまるか答えなさい。
「テストの点数が60点以上なら合格、そうでなければ不合格と表示する」
答え:【問題1】2 【問題2】4 【問題3】分岐構造
まとめ
アルゴリズムは、問題解決の手順を明確にしたものです。
その基本は、順次構造、分岐構造、反復構造の3つです。
また、フローチャートやアクティビティ図、状態遷移図などを用いることで、処理の内容を分かりやすく表現できます。
目的に応じて適切な表現方法を選び、論理的に整理する力が重要です。
