擬似言語の elseif と、if を並べる違い|同じ条件なのに結果が変わる【基本情報技術者試験 科目B】

基本情報技術者試験

現行FE シラバス Ver9.2 準拠擬似言語の記述形式は2022年から変更なし最終更新 2026-08-20

次の2つは、条件がまったく同じです。それなのに、90点の人に出る結果が違います。

いまだけ無料PR|Udemy の講座擬似言語が読めずに止まるなら1行ずつ値を追う「科目B 基礎講義」0円通常 2,600円講座の中身を見る ›

A

if (点数 > 80)
  "優" を出力する
elseif (点数 > 60)
  "良" を出力する
endif

B

if (点数 > 80)
  "優" を出力する
endif
if (点数 > 60)
  "良" を出力する
endif

90点のとき、A は「優」だけ。B は「優」と「良」の両方が出ます。

この違いは、実際の試験でそのまま問われます。選択肢に if のものと elseif のものが並んでいて、どちらかを選ばせる出題です。

なぜ結果が変わるのかと、どちらを選べばいいのかを、順に見ていきます。

先に知っておくこと

if そのものの読み方(もし〜なら)が不安なら、先に 選択処理 if / elseif / else を見てください。この記事は、そこから1点だけを取り出して詳しく扱います。

意味 ── endif は「この if 文はここまで」の印

先に、名前ではなく動きから押さえます。

if から endif までが1つの if 文(選択処理)です。条件式を評価して、実行する処理を選びます。そして endif は、「この if 文はここで終わり」という印です。

終わったら、まっさらに戻る

endif を通り過ぎたら、その if 文でどの処理を選んだかは、もう関係なくなります。次の行からは、何も引きずらずに再開します。

「さっき優って出したな」とは覚えていません。プログラムは、そういう気の利き方をしません。

だから if … endif を2つ並べて書くと、if 文が2つできます。2つ目は1つ目の結果を知らないので、自分の条件だけを見て、独立に判断します。

いっぽう elseif は、if 文を終わらせずに、条件式と処理の組を増やす書き方です。endif がまだ来ていないので、ぜんぶで1つの if 文のままです。

elseif でつなぐと1つの if 文になり、実行される処理は1つだけ。if 文を2つ並べると別々に判定され、両方の処理が実行される

同じ条件でも、elseif でつないだか if 文を分けたかで、実行される処理の数が変わる

A と B の違い

A は1つの if 文(elseif でつなぐ)、B は if 文を2つ並べた形です。見分ける目印は endif の数です。

具体例 ── 90点のとき、1行ずつ何が起きるか

言葉だけだと分かりにくいので、実際に1行ずつ追います。

B(if 文を2つ並べた形)の場合

調べる行 何を調べるか 結果
if (点数 > 80) 90 > 80 を調べる 真。中へ入る
endif 1つ目の if 文が終わる ここでリセット
if (点数 > 60) 90 > 60 を調べる 真。中へ入る

「優」を出したことは、2つ目の if に伝わっていません。だから 90 > 60 も素直に調べて、真なので「良」も出ます。

A(1つの if 文)の場合

行 何をするか 結果
if (点数 > 80) 90 > 80 を調べる 真。中へ入る
"優" を出力する 出力する 「優」
elseif (点数 > 60) ─ 調べない
endif if 文が終わる ─
ここがいちばん大事

elseif (点数 > 60) は、偽だったのではありません。調べてすらいません。

90 > 60 は真です。それでも見に行かない。すでに上の条件式が真になって処理を実行したので、この if 文でやることは済んでいるからです。

実際に動かして確かめます。前半(A)と後半(B)を、同じ 点数 = 90 で続けて実行します。出力を見比べてください。

1つの if 文と、if 文を並べた形 ── 同じ 点数 = 90 で比べる

当サイトオリジナル


ループ開始前

いま計算していること

まだ計算していません

変数の状態

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

なぜ大事か ── 出題では、ここが空欄になる

この違いは、知識として問われるのではありません。プログラムの一部が空欄になり、選択肢に if のものと elseif のものが並ぶ形で出ます。

出典:令和6年度 基本情報技術者試験 科目B 公開問題 問1(プログラムの一部)

  if (  )
    return x
  elseif (y > z)
    return y

この形が読めると、空欄を考える前に分かることがあります。

空欄の下に elseif がある、ということは

1つの if 文です。だから 上の条件式が真なら、下の elseif は評価されません。

つまり、elseif (y > z) の行に進めたということ自体が、「空欄の条件は偽だった」という情報になります。空欄に何を入れるかを考えるとき、この情報がそのまま手がかりになります。

どちらを選ぶか ── 日本語で決まる

迷ったら、やりたいことを日本語で言ってみてください。言い方で決まります。

やりたいことの言い方 使うもの 例
「どれか1つだけ」
どれに当てはまるか
1つの if 文
(elseif でつなぐ)
ランク分け・等級・区分・判定
「当てはまるもの全部」
それぞれ別に確かめたい
if 文を並べる
(if … endif を2つ以上)
チェック項目・条件ごとの加算
見分けの目印

ランク分け・区分け・分類は、ほぼ必ず1つの if 文(elseif でつなぐ形)です。並んだ if で書かれていたら、それは重複して当てはまることを許しているというサイン ── つまり、書いた人がわざとそうしています。

練習

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

if (在庫 > 100)
  "多い" を出力する
elseif (在庫 > 50)
  "普通" を出力する
endif

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

if (金額 > 5000)
  "送料無料" を出力する
endif
if (金額 > 3000)
  "送料半額" を出力する
endif

次の2つのうち、if を2つ並べて書くべきなのはどちらですか。

① 点数が80以上なら "優"、そうでなく60以上なら "良"
② 身長が150以上ならチェック、体重が40以上ならチェック

書き方の一覧

1つの if 文 if 文を並べる
書き方 elseif でつなぐ if … endif を並べる
endif の数 1つ 並べた数だけ
実行される処理 1つだけ 当てはまるだけいくつでも
上の条件式が真のとき、下の条件式は 評価されない 評価される
向いている場面 ランク分け・区分け・判定 チェック項目・条件ごとの加算

次に読む

この記事で引用した資料

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

点数からランクを決める例と、シミュレータのプログラムは当サイトのオリジナルです。

タイトルとURLをコピーしました