コンテンツにスキップ

アルゴリズムの表現方法

アルゴリズムを思いついたら、それを他の人やコンピュータに正確に伝える必要があります。頭の中にあるだけでは、チームで共有することも、プログラムとして実装することもできません。ここでは、アルゴリズムを「目に見える形」にするための代表的な表現方法を学びます。

流れ図(フローチャート)は、処理の流れを図形と矢印で表現する方法です。視覚的にアルゴリズムの全体像を把握できるため、ITパスポート試験でもよく登場します。

流れ図で使う基本的な図形は次の4種類です。

図形名前意味使用例
楕円(角丸の長方形)端子処理の「開始」や「終了」「開始」「終了」
長方形処理計算や代入などの操作「合計 ← 合計 + 点数」
ひし形(菱形)判断条件によって分岐する「点数 ≧ 60?」
平行四辺形入出力データの読み込みや表示「点数を入力」「結果を表示」

これらの図形を矢印(→)でつなぐことで、処理が進む順番を表します。

試験で出るポイント

流れ図の問題では、各図形の意味を正確に覚えておくことが前提になります。とくに「ひし形=判断(条件分岐)」「平行四辺形=入出力」を混同しないようにしましょう。

アルゴリズムの三つの基本構造

Section titled “アルゴリズムの三つの基本構造”

流れ図でも擬似言語でも、アルゴリズムは次の3つの基本構造の組み合わせで表現されます。

順次とは、処理を上から下へ1つずつ順番に実行する構造です。最もシンプルな流れで、特別な制御は行いません。

処理A → 処理B → 処理C

選択とは、条件によって実行する処理を切り替える構造です。日常生活でいえば「もし雨が降っていたら傘を持つ、そうでなければ持たない」という判断にあたります。

プログラムでは if(もし〜ならば)や if-else(もし〜ならば〜、そうでなければ〜)として表現します。

もし 点数 ≧ 60 ならば
「合格」と表示
そうでなければ
「不合格」と表示

繰返しとは、一定の条件が満たされている間、同じ処理を何度も実行する構造です。

代表的な繰返しには2種類あります。

種類特徴使い分け
for(回数指定の繰返し)繰り返す回数があらかじめ決まっている「1から10まで順に処理する」
while(条件指定の繰返し)条件が成り立つ間ずっと繰り返す「入力が0になるまで処理する」

この3つの基本構造(順次・選択・繰返し)だけで、あらゆるアルゴリズムを表現できることが理論的に証明されています。

試験で出るポイント

「順次・選択・繰返し」の3つはアルゴリズムの基本構造として頻出です。流れ図を見て「この部分はどの構造か」を見分けられるようにしておきましょう。

擬似言語は、プログラミング言語に似た書き方でアルゴリズムを記述する方法です。流れ図が「図」で表現するのに対し、擬似言語は「文字」で表現します。ITパスポート試験では、擬似言語で書かれたプログラムを読み取る問題が毎年出題されます。

とは、値や変数を演算子で組み合わせたもので、計算の内容を表します。

合計 + 点数 ← 算術演算の式
点数 ≧ 60 ← 条件式

演算子には主に次の種類があります。

種類演算子の例意味
算術演算子+-×÷mod(余り)数値の計算
比較演算子大小や等しさの比較
論理演算子andornot条件の組み合わせ

値同士を比較して「正しい(真)」か「正しくない(偽)」かを判定する式を条件式と呼びます。選択や繰返しの判断条件として使われます。

代入とは、変数に値を格納する操作です。擬似言語では矢印()を使って表します。

合計 ← 0 … 変数「合計」に 0 を入れる
合計 ← 合計 + 点数 … 合計に点数を足した結果を、改めて合計に入れる

代入では、右辺を先に計算し、その結果を左辺の変数に格納します。数学の「=」とは意味が異なる点に注意してください。

試験で出るポイント

擬似言語の問題で最も多いミスは、代入の左辺と右辺を逆に読んでしまうことです。「← の右側が計算、左側が格納先」と覚えましょう。

注釈(コメント)は、プログラムの動作には影響しない補足説明のことです。「この処理は何をしているのか」「なぜこの計算が必要なのか」といったメモを残すために使います。擬似言語では /**/ で囲んで記述します。

/* ここで合計を初期化する */
合計 ← 0

注釈はアルゴリズムの意図を伝えるために書かれるもので、コンピュータはこの部分を無視します。チーム開発や後から見返すときに、プログラムの意図を理解しやすくする重要な役割があります。

入出力とは、外部からデータを受け取ったり(入力)、結果を外部に出したり(出力)する操作です。たとえば、キーボードから数値を読み込む操作が「入力」、計算結果を画面に表示する操作が「出力」にあたります。流れ図では平行四辺形の記号で表します。

点数を入力する … キーボードなどからデータを受け取る
合計を表示する … 画面などに結果を出す

擬似言語では、選択と繰返しを次のように記述します。

選択(if-else)の例:

もし 点数 ≧ 60 ならば
結果 ← "合格"
そうでなければ
結果 ← "不合格"

繰返し(for)の例:

i を 1 から 5 まで 1 ずつ増やす
合計 ← 合計 + i

この例では、i が 1, 2, 3, 4, 5 と変化しながら、合計に i を足す処理を5回繰り返します。

繰返し(while)の例:

合計 < 100 の間
合計 ← 合計 + 10

この例では、合計が100未満である限り、10を足し続けます。

試験で出るポイント

while の終了条件を誤読するミスが頻出です。「〜の間繰り返す」は「条件がの間は続ける」という意味です。条件が偽になったときにループを抜けます。

手続(プロシージャ)とは、一連の処理をひとまとめにして名前を付けたものです。何度も使う処理を手続として定義しておけば、必要なときに呼び出すだけで同じ処理を実行できます。

関数は手続と同様に処理をまとめたものですが、処理の結果として値を返す点が異なります。この返される値を戻り値と呼びます。

引数(ひきすう)とは、手続や関数を呼び出すときに渡す入力データのことです。戻り値とは、関数が処理の結果として返すデータのことです。

具体例で見てみましょう。「1 から指定した数までの合計を求める関数」を考えます。

○整数型: sigma(整数型: max)
整数型: 合計 ← 0
i を 1 から max まで 1 ずつ増やす
合計 ← 合計 + i
return 合計

この関数 sigma では次のようになっています。

要素この例での内容
関数名sigma
引数max(合計を求める範囲の上限)
戻り値合計(1 から max までの総和)

たとえば sigma(5) と呼び出すと、引数 max に 5 が入り、1+2+3+4+5 = 15 が戻り値として返されます。

手続と関数の違いは、関数は戻り値を持つのに対し、手続は戻り値を持たない(処理を実行するだけ)という点です。

試験で出るポイント

「引数=関数に渡す値」「戻り値=関数から返ってくる値」の区別は正確に押さえましょう。試験では擬似言語のコードを読み、引数にどの値が入るかを追いかける問題が出ます。

変数に格納できるデータの種類をデータ型と呼びます。擬似言語では、変数を使うときにデータ型を指定します。

データ型格納できるデータ具体例
整数型小数点のない数値1、-5、100
実数型小数点を含む数値3.14、-0.5、2.0
論理型真(true)か偽(false)true、false
文字型文字や文字列”合格”、“A”

データ型を正しく使い分けることで、プログラムが意図しない動作をすることを防げます。たとえば、試験の点数は小数を使わないので整数型、円周率のような値には実数型、合否の判定には論理型が適しています。

複数のデータをまとめて扱いたいとき、配列を使います。配列は、同じデータ型の値を一列に並べて管理する仕組みです。

配列の各データには要素番号(添字、インデックス)が割り振られており、番号を指定して個々のデータにアクセスします。

点数[1] ← 80
点数[2] ← 65
点数[3] ← 90

この例では、配列「点数」の1番目に80、2番目に65、3番目に90を格納しています。

試験で出るポイント

擬似言語の問題では、配列の要素番号が「1から始まる」のか「0から始まる」のかに注意が必要です。問題文の定義をよく確認しましょう。番号の読み違いは計算結果のずれにつながります。

アルゴリズムのトレース(逐次実行)とは、アルゴリズムを1ステップずつ手動で追いかけ、各変数の値がどのように変化するかを確認する作業です。試験では、流れ図や擬似言語を見てトレースし、最終的な変数の値や出力結果を答える問題が出題されます。

トレースの手順は次のとおりです。

  1. 変数の初期値を書き出す
  2. 処理を上から順に1行ずつ実行し、変数の値を更新する
  3. 条件分岐では、条件式を評価して進む方向を決める
  4. 繰返しでは、ループ変数の変化に注目しながら、ループを抜ける条件を確認する
  5. 最終的な変数の値や出力を確認する

実際にトレースの練習をしてみましょう。次の擬似言語を追いかけます。

整数型: 合計 ← 0
i を 1 から 3 まで 1 ずつ増やす
合計 ← 合計 + i × i
ステップi の値i × i合計の値
初期状態0
1回目110 + 1 = 1
2回目241 + 4 = 5
3回目395 + 9 = 14

このように、1ステップずつ丁寧に追いかけることで、最終的に合計が14になることが分かります。

試験で出るポイント

トレース問題は毎年出題される頻出テーマです。焦らず1行ずつ追いかけることが正答への近道です。とくに繰返しでは「ループ変数の初期値・終了値・増分」を最初に確認し、何回ループするかを把握してから追いかけると間違いが減ります。

流れ図と擬似言語は、表現方法が異なるだけで、同じアルゴリズムを表しています。試験ではどちらの形式でも出題されるため、両方を読めるようにしておくことが大切です。

要素流れ図での表現擬似言語での表現
処理の開始・終了楕円(端子)─(明示しないことが多い)
計算・代入長方形変数 ← 式
条件分岐ひし形(判断)もし 条件式 ならば
繰返しひし形 + 矢印の戻りfor / while
入出力平行四辺形入力する / 表示する

流れ図は全体の処理の流れを視覚的に把握しやすく、擬似言語は細かい処理の内容を正確に記述できるという特徴があります。どちらも試験対策として読み慣れておきましょう。

試験で出るポイント

擬似言語の穴埋め問題が最も頻出です。for/while ループの中で「更新される変数はどれか」「条件式に入る正しい式はどれか」を問う形が典型的です。選択肢を見比べるときは、まず具体的な数値で1〜2回トレースしてみると正解を見つけやすくなります。

アプリで問題を解こう!