擬似言語の答えが合わないときの直し方|値がずれた場所の探し方

公開日: 2026-09-14

自分でトレースしたのに、答えが選択肢のどれとも合わない。

もう一度やり直しても同じ値になって、手が止まっていませんか?

擬似言語の演習を続けていると、必ずこの場面に出会います。コードは読めているつもりなのに、出てきた答えだけが違うのです。

でも大丈夫です。値がずれる場所は、思っているほど多くありません。探す順番を決めておけば、たいてい数分で見つかります。

私はエンジニアとして10年以上、Webシステムの開発や運用に携わってきました。実務で不具合を調べるときも、コードを頭から読み直すことはまずしません。値がおかしくなった地点を挟み込んで、範囲を狭めていきます。

試験の擬似言語でも、やることは同じです。犯人を当てにいくのではなく、現場を絞り込むと考えてください。

この記事では、答えが合わないときに、ずれた場所を見つけるまでの手順をお伝えします。科目B全体の中での位置づけを先に確かめたい人は、親記事から読むと流れがつかみやすくなります。

【関連記事】基本情報技術者試験の科目Bとは?擬似言語・アルゴリズム対策を初心者向けに解説

答えが合わないときにやってはいけないこと

手順に入る前に、避けたい行動を1つだけ確認しておきましょう。ここで時間を溶かしてしまう人が多いからです。

それは、1行目から全部読み直すことです。気持ちは分かるのですが、同じ読み方をもう一度なぞるだけなので、同じ答えに戻ってきます。

読み直しが効かないのは、間違いが読解ではなく手の動きのほうにあるからです。追い方の癖は、読み直しでは変わりません。

もう一つ避けたいのが、選択肢から逆算して自分の値を合わせにいくことです。正解にはたどり着けても、どこがずれていたのかが分からないまま残ります。

本番では答えを教えてくれません。だから練習の段階では、ずれた行を特定するところまでを1セットにしておきたいのです。

直す前に、ずれの種類を分けておく

ずれには2種類あります。ここを混ぜると、直し方の見当が付かなくなります。

1つ目は、コードの読み取りを間違えた場合です。条件や範囲を実際とは違う意味で受け取っています。

2つ目は、読み取りは合っていて、書き写しや計算を間違えた場合です。トレース表の1マスだけが違う、という形で現れます。

どちらなのかは、次の見分け方で切り分けられます。表の左から順に確かめてください。

ずれの種類 現れ方 最初に見る場所
読み取りのずれ 途中から値の動き方そのものが違う 条件式とループの範囲
書き写しのずれ 1か所だけ数字が違い、そこから後ろが崩れる トレース表の該当行

読み取りのずれは、コードを見直します。書き写しのずれは、表を見直します。見る対象が違うので、最初にここを分けておくと速いのです。

値がずれる場所は4か所に集まる

ここからが本題です。科目Bの問題でずれが起きる場所は、経験上4つに集中しています。

まず全体像を見てください。上から順に確かめるだけで、多くの場合は見つかります。

順番 確かめる場所 よくあるずれ
1 初期値 0から始めるか、最初の要素から始めるか
2 ループの範囲 1からか2からか、要素数までか要素数−1までか
3 条件式 等号を含むかどうか
4 配列の添字 見ている要素が1つ前後にずれる

この4つを順に潰していきます。一つずつ見ていきましょう。

初期値の置き方でずれる

いちばん多いのが初期値です。合計を求めるなら0から、最大値を求めるなら先頭の要素から始めるのが基本になります。

最大値を0から始めてしまうと、配列に負の数が入ったときに答えが変わります。逆に合計を先頭の要素から始めると、1つ分を二重に数えてしまいます。

初期値は宣言の行にさらっと書かれているので、読み飛ばしやすい場所でもあります。答えが合わないときは、まずここを指で押さえて確かめてください。

ループの回り始めと終わりでずれる

次に見るのがループの範囲です。1から始まるのか2から始まるのか、要素数までなのか要素数から1を引いた値までなのかで、回る回数が変わります。

隣り合う要素を比べる処理では、最後の要素で範囲外に出ないように、上限が1つ手前になっていることがよくあります。この形は並べ替えや探索でよく出てきます。

ループの回数そのものが怪しいときは、回数だけを数える練習をしておくと安定します。

【関連記事】科目Bの繰返し問題が解けない人へ|ループ回数を追うコツ

条件式の等号の有無でずれる

3つ目が条件式です。> の違いは、同じ値が並んだときにだけ表に出ます。

配列に同じ値が2つ入っている問題は、この差を試すために作られていると思ってよいくらいです。答えが1つだけずれているときは、まずここを疑ってください。

見分け方は単純で、等しいときにどちらへ進むかを声に出して確かめるだけです。等しいときは条件を満たさない、と言い切れれば読み取れています。

配列の添字が1つ前後にずれる

4つ目が添字です。data[i]data[i + 1] のどちらを見ているかを取り違えると、値が1つずつずれていきます。

このずれは厄介で、途中までは正しい値が出ます。最後の1回か2回で急に合わなくなるので、終盤で答えが割れたときは添字を疑うのが近道です。

添字の数え方そのものが不安な場合は、こちらで土台を固めておくと後が楽になります。

【関連記事】擬似言語の配列と添字がわからない人へ|要素数・二次元配列の読み方を解説

ずれた行を挟み込んで探す手順

場所の候補が分かったら、次は探し方です。全部の行を見直すのではなく、範囲を半分ずつ狭めます。

実務で不具合を追うときにも使う考え方で、擬似言語のように短いコードならすぐ終わります。

期待する値を先に書いてから追う

最初にやるのは、途中の地点で変数がいくつになっているはずかを、自分で決めることです。追ってから考えるのではなく、先に書いておきます。

たとえばループが4回回る処理なら、2回目が終わった時点での値を先に書き出します。そのうえで実際に追って、一致するかどうかを見ます。

一致していれば、ずれは後半にあります。一致していなければ、前半にあります。これだけで探す範囲が半分になります。

半分の地点だけ確かめる

範囲が半分になったら、そのまた半分を確かめます。4回のループなら、2回目、3回目、と絞っていく形です。

ループが10回、20回と長い問題でも、3回か4回の確認でずれた回にたどり着けます。全部を丁寧に追い直すより、ずっと速いのです。

それでも見つからないときは問題文に戻る

4つの候補を全部確かめても合わないことがあります。そのときはコードではなく、問題文の条件を読み落としている可能性が高いです。

科目Bの問題文には、配列の要素は1から数える、与えられる値は1以上である、といった前提が一文だけ添えられていることがあります。この一文を飛ばすと、正しく追っても答えが合いません。

問題文に戻るのは遠回りに見えますが、条件を取り違えたまま20分追い続けるより早く終わります。

この追い方を支えるのがトレース表です。書き方そのものに不安が残っている場合は、先に整えておくと切り分けが効きます。

【関連記事】擬似言語のトレース表の書き方|科目Bで変数の値を追う手順を解説

例題でずれを探してみる

言葉だけでは分かりにくいので、1問やってみましょう。配列の中でいちばん大きい値の位置を返す処理です。

試験の書き方に合わせた自作のコードを用意しました。読んでから、自分でも追ってみてください。

○整数型: 最大値の位置(整数型の配列: data)
  整数型: i
  整数型: maxIdx ← 1
  for (i を 2 から data の要素数 まで 1 ずつ増やす)
    if (data[i] > data[maxIdx])
      maxIdx ← i
    endif
  endfor
  return maxIdx

data が {4, 9, 9, 2} のときを追ってみます。ここで答えが2になるか3になるかで、読み取りの正確さが分かれます。

i data[i] data[maxIdx] 条件を満たすか maxIdxの値
開始前 1
2 9 4 はい 2
3 9 9 いいえ 2
4 2 9 いいえ 2

答えは2です。3を選んでしまった人は、i が3のところで条件を満たすと読んだはずです。

9と9は等しいので、> では条件を満たしません。ここが だったなら、答えは3に変わります。

つまりこの問題のずれは、条件式の等号という3番目の候補に当たります。表のどこで値が分かれたかを見れば、原因の行まで一直線でたどれます。

ずれを見つけたら、変えて確かめる

見つけただけで終わらせると、同じ場所でまたつまずきます。おすすめは、その1か所を変えて追い直すことです。

いまの例なら、> にして同じ配列を追ってみてください。答えが3に変わる瞬間を自分の手で見ると、記憶の残り方が変わります。

初期値も同じです。maxIdx ← 1maxIdx ← 2 にすると、どこから答えが崩れるのかが分かります。

シミュレーターで答え合わせをする

紙で追った結果に自信が持てないときは、実際に動かして確かめるのがいちばん早い方法です。

Giji Academy の擬似言語シミュレーターなら、書いたコードを1行ずつ実行して、変数の値が変わっていく様子を画面で追えます。

擬似言語シミュレーターでコードを1行ずつ動かしてみる

無料で使えるので、自分のトレース表と画面の値を並べて見比べてください。最初にずれた行が、そのまま自分の弱点の記録になります。

同じずれを繰り返さないための記録

ずれを見つけたあとに、もう一手間だけかけておきましょう。ここをやるかどうかで、次の1週間の伸びが変わります。

やることは単純で、どの候補でずれたのかを一言だけ書き留めます。初期値、範囲、等号、添字のどれだったか、それだけで構いません。

3週間も続けると、自分がどこで転ぶかがはっきりしてきます。私の場合は実務でも、同じ種類の見落としを繰り返す癖があると気づいてから、確認の順番を変えて減らしてきました。

試験勉強でも同じで、癖が分かれば見直しの1回目でそこを見るようになります。記録は、その順番を作るための材料です。

記録は4行の正の字で足りる

凝ったノートは要りません。初期値、範囲、等号、添字の4行を書いて、ずれるたびに線を1本足すだけです。

線が集中した行が、あなたの本番での要注意ポイントになります。試験直前に見返すのは、この紙1枚で十分です。

書き留めるときは、どの問題で起きたかまでは残さなくて構いません。大事なのは回数の偏りで、問題ごとの事情ではないからです。

見直しの時間を最初から確保しておく

本番では、ずれに気づいても直す時間がなければ点になりません。1問あたりにかけられる時間の中に、確認の時間を最初から入れておきます。

時間の配り方そのものに不安がある場合は、こちらの記事で目安を確かめておくと計画が立てやすくなります。

【関連記事】基本情報 科目Bの時間配分|1問にかけられる時間と見直しの順番

見直しでよく見つかる間違いの型は、別の記事にまとめてあります。あわせて読んでおくと、探す精度が上がります。

【関連記事】擬似言語でケアレスミスが多い人へ|よくある間違いと確認方法

まとめ

答えが合わないのは、才能の問題ではありません。値がずれる場所が決まっているのに、探す順番を決めていないだけです。

今日お伝えした手順を振り返っておきましょう。

手順 やること
1 読み取りのずれか、書き写しのずれかを分ける
2 初期値・範囲・等号・添字の順に確かめる
3 途中の地点で挟み込み、範囲を半分ずつ狭める
4 ずれた場所を変えて追い直す
5 どの候補でずれたかを1行で記録する

この5つを回していれば、同じ問題で2度悩むことはだんだん減っていきます。

答えが合わない時間は、気持ちのよいものではありません。それでも、ずれた行を自分で見つけられた経験は、本番で大きな支えになります。

正解できた問題より、直した問題のほうが記憶に残ります。つまずいた1問は、それだけで復習の材料になっているということです。

まずは手元の1問で、初期値の行に指を置くところから始めてみてください。

擬似言語の基礎から応用まで学べる
Giji Academy

Giji Academyでは、擬似言語の基礎からアーキテクチャなどの応用的な内容まで幅広く学べます。
また、ブラウザ上で直接擬似言語コードを試すことができ、実践的なスキルを身につけることが可能です。

Giji Academy の学習画面。左に教材、右にシミュレーター 擬似言語の学習を始める

擬似言語の学習をここから始めよう。