擬似言語の選択処理 if・elseif・else|どの枝が実行されるかの読み方【基本情報技術者試験 科目B】

基本情報技術者試験

現行FE シラバス Ver9.2 準拠第1部 擬似言語の教科書 G5最終更新 2026-08-21

ここまでのプログラムは、上から下へ全部の行を実行していました。ここからは条件によって、通る行と通らない行ができます。

読むときに迷うのは、たいてい1点だけです。条件が2つとも当てはまるのに、なぜ片方しか動かないのか。そこが分かれば、この形は読めます。

分かれ道 ── 条件によって、通る道が変わる

選択処理は分かれ道だと思ってください。道の入口に立て札があり、そこに書かれた条件を満たすときだけ、その道に入れます。

この回は、点数からランクを決める1本で通します。まずいちばん短い形から。

整数型: ten ← 85

if (ten ≧ 80)
  "優" を出力する
endif

"おわり" を出力する

ten は 85 です。立て札には「80 以上」と書いてあるので、通れます。1行ずつ追うと、こうなります。

実行した行 何が起きるか 出力
整数型: ten ← 85 ten に 85 が入る —
if (ten ≧ 80) 85 ≧ 80 を調べる → 真。中へ入る —
"優" を出力する 中の行を実行する 優
endif 分かれ道が終わる —
"おわり" を出力する 分かれ道の外なので、必ず実行される おわり

条件が偽だったら

ten が 50 だったとします。50 ≧ 80 は偽なので、この道には入れません。

"優" を出力する実行されない(飛ばされる)

"おわり" を出力する実行される(分かれ道の外)

出力は おわり だけ。endif より下は、条件に関係なく必ず通ります。どこまでが分かれ道の中なのかを、まず見てください。

次のプログラムは何を出力しますか。

整数型: kazu ← 3

if (kazu ≧ 10)
  "たくさん" を出力する
endif

"みかん" を出力する

else ── どの条件にも当てはまらなかったとき

さっきの形だと、80 未満のときは何も出ませんでした。「当てはまらなかったとき」の道を用意するのが else です。

整数型: ten ← 50

if (ten ≧ 80)
  "優" を出力する
else
  "可" を出力する
endif

50 ≧ 80 は偽なので、else の道に入ります。出力は 可。

else には立て札が無い

else の行に条件は書かれていません。「上の条件が全部偽だったとき」という条件が、書かれずにそこにあります。

だから else は必ずいちばん下で、1つしか書けません。「どれにも当てはまらなかった」は1通りしかないからです。

次のプログラムで、実行が else の道に来ました。この時点で a について確実に言えることはどれですか。

if (a > 5)
  "大" を出力する
else
  "小" を出力する
endif

elseif ── 3つ以上に分かれるとき

ランクを優・良・可の3つに分けたい。道を1本増やします。それが elseif です。

整数型: ten ← 75

if (ten ≧ 80)
  "優" を出力する
elseif (ten ≧ 60)
  "良" を出力する
else
  "可" を出力する
endif

ten は 75。1つ目の立て札は通れません(75 ≧ 80 は偽)。次の立て札を見ると 75 ≧ 60 は真なので、そこに入ります。出力は 良。

選択処理は分かれ道。上から順に立て札を見て、最初に通れる道に入る。入ったら残りの立て札は読まない

上から順に見て、最初に通れる道へ。入ったら、残りは読みもしない

点数を変えると、通る道が変わります。1行ずつ動かして確かめてください。

点数を変えると、通る道が変わる

当サイトオリジナルの例題


ループ開始前

いま計算していること

まだ計算していません

変数の状態

トレース表(進めると1行ずつ積み上がります)

ten が 60 のとき、次のプログラムは何を出力しますか。

if (ten ≧ 80)
  "優" を出力する
elseif (ten ≧ 70)
  "良" を出力する
else
  "可" を出力する
endif

評価の順番 ── 最初に通れた道に入ったら、残りは読まない

ここがこの回のいちばん大事なところです。条件が2つとも当てはまっても、実行されるのは1つだけです。

さきほどのプログラムに ten ← 85 を入れてみます。

85 のとき、何が起きているか

if (ten ≧ 80)真。この道に入る → "優" を出力

elseif (ten ≧ 60)調べもしない(読みもせずに飛ばす)

else来ない

85 ≧ 60 も真になる条件です。それでも "良" は出ません。最初に通れた道に入ったら、残りの立て札は読みもしないからです。

IPAの決めごとにも、そのまま書かれています。

出典:IPA「擬似言語の記述形式」

if (条件式1)
  処理1
elseif (条件式2)
  処理2
elseif (条件式n)
  処理n
else
  処理n+1
endif
選択処理を示す。
条件式を上から評価し,最初に真になった条件式に対応する処理を実行する。以降の条件式は評価せず,対応する処理も実行しない。どの条件式も真にならないときは,処理n+1を実行する。
各処理は,0 以上の文の集まりである。
elseif と処理の組みは,複数記述することがあり,省略することもある。
else と処理n+1の組みは一つだけ記述し,省略することもある。

「以降の条件式は評価せず」── 立て札を読みもしない、と書いてあります。

整数型: n ← 7 のとき、次のプログラムで一度も調べられない条件はどれですか。

if (n > 3)
  "A" を出力する
elseif (n > 5)
  "B" を出力する
elseif (n > 6)
  "C" を出力する
endif

条件の書き方 ── 6つの比べ方と、境界

立て札に書けるのは、真か偽かが決まるものです。よく出るのは次の6つです。

書き方 読み方 x が 5、y が 5 のとき
x = y x と y は等しい 真(等しい。代入ではありません)
x ≠ y x と y は等しくない 偽
x > y x < y より大きい/より小さい どちらも偽(等しいので)
x ≧ y x ≦ y 以上/以下 どちらも真(等しいときも含む)
境界の1点で、答えが変わる

ten がちょうど 80 のとき、ten ≧ 80 なら真、ten > 80 なら偽です。この1点だけで、通る道が変わります。

出題は、この境界ちょうどの値を渡してきます。条件を読むときは、≧ なのか > なのかを必ず見てください。

本物もこう書かれる

(令和5年度 基本情報技術者試験 科目B 公開問題 問1)

    if (divideFlag が true と等しい)

記号ではなく日本語で書かれることがあります。divideFlag は論理型の変数なので、「その中身が true かどうかを調べる」と読みます。書いてあるとおりに読めば、それが条件です。

整数型: x ← 5 のとき、次のプログラムは何を出力しますか。

if (x > 5)
  "A" を出力する
else
  "B" を出力する
endif

書き方のまとめ

いくつ書けるか、省略できるかを並べておきます。記述形式が定めているとおりです。

部品 いくつ書けるか 省略できるか
if 1つだけ(分かれ道の始まり) できない
elseif いくつでも できる(0個でよい)
else 1つだけ。必ずいちばん下 できる
endif 1つだけ(分かれ道の終わり) できない

つまずきポイントまとめ

まちがえ方 正しい理解
条件に当てはまる枝を全部実行すると思う 最初に真になった1つだけ。残りは調べもしない
endif より下も分かれ道の中だと思う endif より下は条件に関係なく必ず通る
else からは何も分からないと思う 上の条件が全部偽だったことが確定している
> を「以上」と読む 以上は ≧。境界ちょうどで結果が逆になる
= を代入だと思う 代入は ←。= は等しいか調べるほう

次に読む

この記事で引用した資料

いずれも独立行政法人情報処理推進機構(IPA)が公表したものです。IPAは公表済みの試験問題について、教育目的での使用に許諾および使用料を不要としていますが、著作権は放棄していません。本記事では問題文を改変せずに引用しています。

点数からランクを決めるプログラムと、練習問題は当サイトのオリジナルです。実際の出題からは、条件式の1行だけを引用しています。

Copied title and URL