対象試験と出題頻度

アルゴリズム(順次・選択・繰返し)は、ITパスポート・基本情報技術者・応用情報技術者のすべてで出題される最重要テーマです。

ITパスポートでは流れ図や擬似言語の読み取り問題として、基本情報では科目Bの全問がアルゴリズム・プログラミング中心で構成されており、避けて通れない分野です。

 

R4年 ITパスポート 問79、FE H25春 午前問8、FE H29春 午前問5など、あらゆる試験回で繰り返し問われています。

詳細をクリックして確認
対象試験:
ITパスポート
基本情報技術者
応用情報技術者
出題頻度:
★★★★☆
ランクA(重要)必ず覚えておくべき

用語の定義

情報処理試験を勉強していると、「アルゴリズムって何?プログラミングと何が違うの?」と最初につまずきがちです。

アルゴリズム(Algorithm)とは、一言で言うと

 「ある問題を解決するために定められた、有限個の手順の集まり」

のことです。

イメージとしては、「料理のレシピ」です。

カレーを作るとき、「野菜を切る → 肉を炒める → 水を入れて煮込む → ルーを溶かす」と手順が決まっています。

この”手順の並び”がアルゴリズムにあたります。プログラミング言語はその手順をコンピュータに伝えるための「言葉」であり、手順そのものではありません。

📊 アルゴリズムの基本情報

項目 内容
英語名 Algorithm
語源 9世紀の数学者アル=フワーリズミーの名前に由来
3つの基本構造 順次(Sequential)・選択(Selection)・繰返し(Iteration)
代表的な表現方法 フローチャート(流れ図)、擬似言語、プログラムコード

解説

1966年にベーム(Böhm)とヤコピーニ(Jacopini)が「すべてのプログラムは、順次・選択・繰返しの3つの基本構造の組み合わせだけで記述できる」と証明しました。これを構造化定理(構造化プログラミングの理論的根拠)と呼びます。

つまり、どんなに複雑なソフトウェアであっても、根っこを分解すれば3つのパターンしかありません。ここだけは確実に押さえてください。

 

3つの基本構造

それぞれの構造を、フローチャートの図と具体例で整理します。

① 順次構造(Sequential)

処理を上から下へ1つずつ順番に実行する。最も単純な構造。

開始
処理A
処理B
処理C
終了

日常の例え:朝の準備

A. 顔を洗う → B. 着替える → C. 朝食を食べる

条件分岐も繰り返しもなく、決まった順番で1回ずつ実行するだけの構造です。

② 選択構造(Selection)

条件の真偽(Yes / No)によって実行する処理を分岐させる。「if文」に対応。

 
 
条件を判定
Yes
処理A
No
処理B
↓(合流)

日常の例え:天気で判断

「雨が降っている?」

 → Yes:A.傘を持つ / No:B.そのまま出発

条件によって実行内容が変わる構造です。分岐(ブランチ)とも呼ばれます。

③ 繰返し構造(Iteration)

条件が満たされている間、同じ処理を何度も実行する。「while文」「for文」に対応。

 
 
条件を判定
Yes
処理A
↑ 条件判定に戻る
No
ループ終了

日常の例え:皿洗い

「まだ汚れた皿がある?」

→ Yes:1枚洗う → また判定に戻る

  No:終了

終了条件を満たすまでループする構造です。反復(イテレーション)とも呼ばれます。

フローチャートの主要記号

アルゴリズムを視覚的に表現する代表的な方法がフローチャート(流れ図)です。JIS X 0121で記号が定められています。

記号の形 名前 意味
 
端子 開始・終了を表す(角丸長方形で描く)
 
処理 計算や代入などの処理(長方形で描く)
 
判断 条件分岐を表す(ひし形で描く)
線(矢印) 処理の流れと方向を表す
 
ループ端 繰返しの開始と終了を表す(台形を上下で挟む)
▶ 擬似言語との対応関係(クリックで展開)

基本情報技術者の科目Bでは、フローチャートではなく擬似言語(疑似言語)でアルゴリズムが記述されます。3構造との対応は以下の通りです。

/* 順次構造 */
処理A
処理B

/* 選択構造 */
if (条件)
  処理A
else
  処理B
endif

/* 繰返し構造(前判定) */
while (条件)
  処理A
endwhile

フローチャートの記号と擬似言語のキーワードは表現が違うだけで、表す構造は同一です。

では、この知識が試験でどのように問われるか見ていきましょう。

💡 アルゴリズムの核心を3行で

・すべてのプログラムは「順次」「選択」「繰返し」の3構造だけで表現できる(構造化定理)
・順次は「上から順に」、選択は「条件で分岐」、繰返しは「条件が真の間ループ」
・フローチャートは記号の形で構造を視覚化し、擬似言語はキーワード(if / while 等)で記述する


試験ではこう出る!

アルゴリズムに関する出題は、大きく「知識問題」と「トレース問題」の2種類に分かれます。

📊 過去問での出題実績

試験回 出題内容 問われたポイント
IP R4年
問79
流れ図で示す処理を終了したとき、変数xの値を求める問題。 ・繰返し構造のトレース(変数の値を追跡)
・ユークリッドの互除法の理解
FE H25春
午前 問8
流れ図の繰返し処理を実行した結果、変数q, rの値を求める問題。 ・減算の繰返しで商と余りを求めるアルゴリズム
・ループの終了条件の判定
FE H29春
午前 問5
シフト演算と加算の繰返しによる2進整数の乗算を流れ図から読み解く問題。 ・選択構造と繰返し構造の組み合わせ読解
・ビット演算の知識も併せて必要
FE 科目B
(R5年以降)
擬似言語によるプログラム処理のトレース問題。科目B全20問中16問がアルゴリズム分野。 ・3構造の読解力が全問の前提
・配列操作・関数呼び出しとの複合

📝 IPA試験での出題パターン

パターン1:知識問題「基本構造の名称を選べ」
ITパスポートで頻出。「順次・選択・繰返し」という3構造の名称や、フローチャート記号の意味を正しく選ばせる形式。3構造の定義を正確に覚えていれば即答できる。

 

パターン2:トレース問題「実行結果の値を求めよ」
基本情報・応用情報で頻出。流れ図や擬似言語が示され、変数の値を手作業で追跡して最終結果を求める形式。繰返し構造のループ回数を正確に数えられるかが得点を分ける。ループ条件が「以上」か「より大きい」かで結果が変わるひっかけが定番。

 

試験では深追い不要です。「3構造の名前と意味」「フローチャート記号の読み方」「変数のトレース方法」の3点を押さえれば得点できます。


【確認テスト】理解度チェック

ここまでの内容を理解できたか、簡単なクイズで確認してみましょう。


Q. アルゴリズムの基本構造に関する説明として、最も適切なものはどれでしょうか?

  • A. アルゴリズムとは特定のプログラミング言語で記述された命令の集合体であり、言語ごとに基本構造が異なる。
  • B. アルゴリズムの基本構造は「順次・選択・繰返し・並列」の4種類であり、並列構造がなければ複雑な処理は表現できない。
  • C. アルゴリズムの基本構造は「順次・選択・繰返し」の3種類であり、すべてのプログラムはこの3構造の組み合わせで表現できる。
正解と解説を見る

正解:C

解説:
構造化定理により、すべてのプログラムは順次・選択・繰返しの3つの基本構造の組み合わせで記述できると証明されています。

選択肢Aは誤りです。アルゴリズムは特定のプログラミング言語に依存しない「手順そのもの」であり、どの言語で実装しても基本構造は共通です。選択肢Bは誤りです。基本構造は3種類であり「並列」は含まれません。並列処理はOSやハードウェアの機能であって、アルゴリズムの基本構造とは区別されます。


よくある質問(FAQ)

Q. 「前判定」と「後判定」の繰返しは何が違いますか?

前判定(while型)はループに入る前に条件を判定するため、最初から条件が偽なら処理を1回も実行しません。後判定(do-while型)はループの末尾で条件を判定するため、最低1回は処理が実行されます。IPA試験では前判定が圧倒的に多いですが、「最低1回は実行される」という記述が出たら後判定を疑ってください。

Q. トレース問題を速く解くコツはありますか?

変数の変化を表にまとめるのが最も確実です。ノートに変数名を列見出し、ループの各回を行として値を記入していきます。頭の中だけで追うとループ2周目あたりで混乱するため、手を動かして表を作る癖をつけてください。本番では問題用紙の余白を使って書き込むのが鉄板のテクニックです。

Q. アルゴリズムと「データ構造」はどんな関係ですか?

「アルゴリズム+データ構造=プログラム」という有名な定義(ニクラウス・ヴィルトの著書タイトル)があります。アルゴリズムが「手順」を、データ構造が「データの持ち方」を担当します。たとえば「配列を使って線形探索する」と言う場合、配列がデータ構造、線形探索がアルゴリズムです。両者はセットで学ぶと理解が深まります。

Q. 基本情報の科目Bは全問アルゴリズム問題ですか?

全20問中16問がアルゴリズムとプログラミング、残り4問が情報セキュリティです。科目Bの8割がアルゴリズム分野であるため、3つの基本構造を正しく読み解く力は合否を直接左右します。IPAが公開しているサンプル問題で擬似言語の記述形式に慣れておくことを強く推奨します。