基本情報技術者試験の疑似言語とトレース入門|科目Bの読み方を初心者向けに解説

【PR】この記事には広告を含みます。
基本情報技術者試験の疑似言語とトレース入門を初心者向けに解説

基本情報技術者試験の科目Bでは、問題文に書かれた処理を読み、変数や配列の変化を追う力が必要です。

科目B全体の進め方を確認したい方は、基本情報技術者試験の科目B対策も参考にしてください。

そのときに大事になるのが、疑似言語トレースです。

疑似言語とは、プログラムの動きを人が読みやすい形で書いたものです。

トレースとは、処理を1行ずつ見ながら、変数や配列の中身がどう変わるかを追うことです。

この記事では、疑似言語を暗記するのではなく、1行ずつ読んで、値の変化を表に書く練習ができるように説明します。

目次

疑似言語とトレースはなぜ大事?

基本情報技術者試験の疑似言語とトレースの流れを表した図

基本情報技術者試験の科目Bでは、用語を知っているだけでは解けない問題があります。

問題文に書かれた処理を読み、途中で変数の値や配列の中身がどう変わるかを考える必要があります。

そのため、疑似言語とトレースは、科目Bを解くための土台になります。

アルゴリズム全体の考え方を先に確認したい方は、基本情報技術者試験のアルゴリズム入門も参考になります。

科目Bでは処理を読む力が必要

科目Bでは、処理の流れを読む力が問われます。

たとえば、次のような力です。

  • 処理の順番を読む力
  • 変数の値を追う力
  • 配列の中身を確認する力
  • くり返しの回数を数える力
  • 条件によって進む処理を判断する力

つまり、プログラムをなんとなく読むのではなく、1行ずつ確認する力が必要です。

この読み方を身につけるために使うのが、トレースです。

プログラミング経験がなくても読み方を練習できる

疑似言語は、特定のプログラミング言語を知らなくても読めるように作られています。

JavaScriptやPythonなどの細かい文法をすべて知らなくても、処理の流れを追う練習ができます。

たとえば、次のような処理があったとします。

x ← 3
y ← x + 2

これは、まず x に 3 を入れます。

次に、x + 2 を計算して、y に入れます。

この場合、x は 3、y は 5 になります。

このように、1行ずつ読めば、プログラミング経験が少なくても処理を追えます。

トレースで変数や配列の変化を追う

トレースでは、頭の中だけで考えません。

表を使って、変数の値や配列の中身を書きながら確認します。

たとえば、x の値が 3 から 5 に変わったなら、表にもその変化を書きます。

配列を使う問題では、「今、何番目を見ているのか」「その値が変わったのか」を確認します。

この作業をすると、途中の処理を見失いにくくなります。

かんたんに言うと、疑似言語は処理の流れを書くための言葉

疑似言語が処理の手順書であることをレシピで説明した図

疑似言語は、プログラムの考え方を読みやすく表したものです。

実際のプログラミング言語ではありませんが、処理の流れは本物のプログラムと同じように考えます。

たとえるなら、料理のレシピに近いです。

「材料を切る」「フライパンに入れる」「火を止める」のように、やることが順番に書かれています。

疑似言語も同じです。

上から順に読み、どの値がどう変わるかを確認します。

特定のプログラミング言語を知らなくても読める

疑似言語は、基本情報技術者試験の問題で使われる表現です。

特定のプログラミング言語だけに寄らないため、言語ごとの細かい書き方を知らなくても、処理の流れを読めます。

大切なのは、文法を丸暗記することではありません。

「この行では何をしているのか」「次にどの行へ進むのか」を見ることです。

処理の順番を確認するために使う

疑似言語は、処理の順番を確認するために使います。

上から順に進む処理もあれば、条件によって別の処理へ進むこともあります。

また、同じ処理を何回もくり返すこともあります。

疑似言語を読むときは、次の3つを意識します。

  • 今、どの行を見ているか
  • その行で値が変わるか
  • 次にどの行へ進むか

基本情報技術者試験では問題文の中で使われる

基本情報技術者試験では、疑似言語が問題文の中に出てきます。

そして、処理後の値や、途中の配列の中身を問われることがあります。

たとえば、次のような問題です。

  • 処理が終わったあと、変数 x の値はいくつか
  • 配列の3番目の値はいくつか
  • くり返しは何回実行されるか
  • 空欄に入る処理として正しいものはどれか

このような問題は、疑似言語を見ただけで答えるのではなく、トレースして考えると解きやすくなります。

トレースとは?

疑似言語を1行ずつ追ってトレース表に書く流れを示した図

トレースとは、処理を1行ずつ追いかけることです。

プログラムが何をしているのかを、順番に確認します。

ただ読むだけではなく、変数や配列の中身を表に書きます。

これにより、「どこで値が変わったのか」が見えるようになります。

処理を1行ずつ追うこと

トレースでは、疑似言語を上から順に見ます。

1行見たら、その行で何が起きるかを確認します。

たとえば、次のような処理があるとします。

a ← 2
b ← 4
a ← a + b

この場合、最初に a は 2 になります。

次に b は 4 になります。

最後の行では、a + b を計算します。

a は 2、b は 4 なので、a + b は 6 です。

その結果を a に入れるため、最後の a は 6 になります。

変数の値を表に書くこと

変数とは、値を入れておく箱のようなものです。

トレースでは、この箱の中身がどう変わるかを表に書きます。

実行した行ab説明
a ← 22a に 2 を入れる
b ← 424b に 4 を入れる
a ← a + b64a + b を計算して a に入れる

表にすると、どの行でどの値になったかが分かりやすくなります。

配列の中身の変化を見ること

配列を番号付きの箱の並びとして説明した図

配列とは、いくつかの値を順番に並べて持つものです。

たとえば、点数の一覧や商品一覧のように、同じ種類のデータをまとめて扱うときに使います。

本文や教材では、初心者が見て分かりやすいように「1番目、2番目、3番目」と表します。

ただし、実際の試験では、配列の番号が何番から始まるかは問題文で確認する必要があります。

この番号の見方を間違えると、正しい答えにたどり着けません。

配列とくり返し処理の基本を確認したい方は、基本情報技術者試験の配列とループ入門も参考にしてください。

ループの回数を数えること

ループとは、同じ処理をくり返すことです。

たとえば、配列の1番目から5番目までを順に見る処理は、ループで書けます。

トレースでは、ループが何回行われるかを数えます。

また、1回くり返すたびに、変数や配列の中身がどう変わるかも確認します。

トレースは身近で何に役立つ?

トレースは、試験のためだけの考え方ではありません。

プログラムが思った通りに動かないとき、原因を見つけるためにも使います。

また、なぜその結果になったのかを説明するときにも役立ちます。

プログラムの間違いを見つける

プログラムが思った結果にならないとき、どこかで処理の流れや値がずれていることがあります。

そのとき、1行ずつ値を追うと、どの行でおかしくなったかを見つけやすくなります。

たとえば、合計を出す処理で答えが合わない場合、途中の合計を1回ずつ書くと、足し忘れや多く足した場所が見つかります。

なぜその結果になったか確認する

トレースをすると、結果だけでなく、そこに至るまでの流れが見えます。

たとえば、検索で目的のデータが見つからなかったとき、どのデータを順番に確認したのかを追えます。

データを順番に探す処理を確認したい方は、基本情報技術者試験の探索アルゴリズム入門も参考になります。

これにより、「なぜ見つからなかったのか」を説明しやすくなります。

計算ミスや処理の抜けを見つける

トレースは、計算ミスや処理の抜けを見つけるときにも役立ちます。

たとえば、5件のデータを処理するはずなのに、4件しか処理していないことがあります。

この場合、ループの回数を表に書くと、最後の1件が抜けていることに気づけます。

科目Bで処理を読む力につながる

科目Bでは、処理を読んで答える問題が多くあります。

トレースの練習をしておくと、問題文の疑似言語を落ち着いて読めるようになります。

大切なのは、早く読むことではありません。

1行ずつ見て、値の変化を確かめることです。

疑似言語でよく出る基本の形

疑似言語には、よく出る基本の形があります。

ここでは、科目Bでよく見る形を先に確認します。

最初からすべてを完璧に覚える必要はありません。

まずは「何をしている処理か」が分かれば大丈夫です。

代入

代入とは、変数に値を入れることです。

基本情報技術者試験の疑似言語では、代入を「←」で表します。

x ← 5

これは、x に 5 を入れるという意味です。

「←」は、右側の計算結果を左側の変数に入れる記号です。

条件分岐

条件分岐とは、条件によって進む処理を変えることです。

たとえば、「点数が60点以上なら合格、それ以外なら不合格」のような処理です。

もし score が 60 以上なら
  result ← "合格"
そうでなければ
  result ← "不合格"
もし終わり

条件分岐では、条件が成り立つかどうかを確認します。

くり返し処理

くり返し処理とは、同じ処理を何回も行うことです。

たとえば、3回分の数を順番に足すときに使います。

sum ← 0

くり返し、i を 1 から 3 まで 1 ずつ増やす
  sum ← sum + i
くり返し終わり

このような処理では、i の値がどう変わるかを見ます。

また、どこからどこまでがくり返しの中なのかも確認します。

配列

配列とは、複数の値を順番に持つものです。

たとえば、点数を次のように持てます。

score[1] ← 80
score[2] ← 70
score[3] ← 90

本文では「1番目、2番目、3番目」と説明します。

ただし、試験では配列の番号が1から始まるのか、0から始まるのかを問題文で確認してください。

関数・手続

関数や手続とは、まとまった処理に名前を付けたものです。

たとえば、「合計を計算する処理」に名前を付けて、必要な場所で使えるようにします。

最初は、関数や手続を「呼び出すと、その中の処理が実行されるもの」と考えると分かりやすいです。

代入の読み方

代入で右側を先に計算して左側の変数に入れる流れを示した図

疑似言語を読むとき、最初につまずきやすいのが代入です。

代入は「右側を先に見て、左側へ入れる」と読みます。

この順番を間違えないことが大切です。

変数に値を入れる

次の処理を見てみます。

x ← 10

これは、x という変数に 10 を入れるという意味です。

x は、値を入れておく箱のようなものです。

この行を実行したあと、x の中身は 10 になります。

右側を先に計算する

次の処理では、右側を先に計算します。

x ← 3
x ← x + 2

1行目で、x は 3 になります。

2行目では、右側の x + 2 を先に計算します。

この時点で x は 3 なので、3 + 2 で 5 です。

その結果を左側の x に入れます。

そのため、2行目のあと、x は 5 になります。

左側の変数の中身が変わる

代入では、左側の変数の中身が新しい値に変わります。

前の値は、その変数の中には残りません。

x ← 3
x ← 8

この場合、最後の x は 8 です。

最初に入っていた 3 は、x の中には残りません。

トレースでは、変数の値を古いままで考えないようにします。

条件分岐の読み方

条件分岐で真と偽に分かれて処理が変わることを示した図

条件分岐は、条件によって進む道が変わる処理です。

大切なのは、条件が成り立つかどうかを先に確認することです。

条件が成り立つ場合を「真」といいます。

成り立たない場合を「偽」といいます。

条件が真か偽かを確認する

次の処理を見てみます。

score ← 75

もし score が 60 以上なら
  result ← "合格"
そうでなければ
  result ← "不合格"
もし終わり

score は 75 です。

条件は「score が 60 以上」です。

75 は 60 以上なので、この条件は真です。

真の場合に進む処理を見る

条件が真の場合は、「もし」の下にある処理へ進みます。

この例では、result に「合格」を入れます。

result ← "合格"

そのため、処理後の result は「合格」です。

偽の場合に進む処理を見る

条件が偽の場合は、「そうでなければ」の処理へ進みます。

たとえば、score が 50 なら、60 以上ではありません。

この場合は、result に「不合格」を入れます。

条件分岐では、両方を実行するのではありません。

条件に合う道だけを進みます。

くり返し処理の読み方

くり返し処理でiとsumがどう変化するかを示した図

くり返し処理は、同じ処理を何回も行うものです。

科目Bでは、ループの回数や、ループ後の値を問われることがあります。

ループは見た目が少し長くなりやすいですが、見る場所を決めれば読みやすくなります。

何回くり返すか確認する

まず、何回くり返すかを確認します。

sum ← 0

くり返し、i を 1 から 3 まで 1 ずつ増やす
  sum ← sum + i
くり返し終わり

この処理では、「くり返し、i を 1 から 3 まで 1 ずつ増やす」と書かれています。

これは、i が 1、2、3 と変わりながら、下の処理をくり返すという意味です。

そのため、くり返しは3回です。

「くり返し終わり」までが、くり返しの中で実行される処理です。

ループ変数の変化を見る

ループ変数とは、くり返しの中で変わる変数です。

上の例では、i がループ変数です。

i が 1 のとき、sum に 1 を足します。

i が 2 のとき、sum に 2 を足します。

i が 3 のとき、sum に 3 を足します。

回数isum の変化
1回目10 + 1 で 1
2回目21 + 2 で 3
3回目33 + 3 で 6

処理後の sum は 6 です。

終了条件を確認する

ループでは、いつ終わるかも大切です。

「1から3まで」と書かれている場合、3も含めて処理するのかを確認します。

問題文の表現によって、最後の値を含むかどうかが変わることがあります。

そのため、ループを読むときは、開始、変化、終了の3つを見ます。

  • どこから始まるか
  • いくつずつ増えるか、または減るか
  • どこで終わるか

スタートボタンでトレースを体験する

トレース教材でどこを見ればよいかを示した図

ここでは、本文で使った a ← 2、b ← 4、a ← a + b の処理を、実際に1行ずつ動かして確認します。

まず「スタート」を押すと、次に実行する行がうすい黄色で表示されます。

そのあと「次へ」を押すと、疑似言語の行が1つずつ実行され、変数の値とトレース表が変わります。

トレース体験

疑似言語を1行ずつ追ってみよう

「次へ」を押すたびに、実行中の行、変数の値、トレース表が変わります。

疑似言語

  1. 1 a ← 2
  2. 2 b ← 4
  3. 3 a ← a + b

黄色の行が、今実行している行です。うすい黄色は、次に実行する行です。

変数の値

a
b
スタートを押すと、最初から確認できます。

トレース表

実行した行 a b 説明
ここに1行ずつ記録されます
結果: まだ処理は終わっていません。

上のトレース教材では、疑似言語の1行を強調しながら、変数の値とトレース表の変化を確認できます。

スタートボタンで準備をして、次へボタンで1行ずつ処理を確認できます。

見るポイントは、次の4つです。

  • 今、どの行を実行しているか
  • どの変数の値が変わったか
  • トレース表に何が追加されたか
  • 最後にどの値になったか

今実行している行を確認する

教材では、今実行している疑似言語の行を黄色で強調します。

また、次に実行する行はうすい黄色で表示されます。

読者は、「今どこを読んでいるのか」と「次にどこへ進むのか」を見ながら確認できます。

疑似言語を読むときに大事なのは、先の行を急いで見ないことです。

まずは、今の1行で何が起きるかを確認します。

変数の値が変わる様子を見る

次へボタンを押すたびに、変数の値が変わります。

たとえば、a ← a + b の行を実行したとき、a の値が 2 から 6 に変わります。

このとき、a は「値が変わる変数」として強調されます。

また、b は「計算に使っている変数」として強調されます。

これにより、右側の a + b を先に計算してから、左側の a に入れる流れが分かりやすくなります。

トレース表が埋まる様子を見る

教材では、1行実行するたびに、トレース表が1行ずつ埋まります。

表には、実行した行、a の値、b の値、説明が入ります。

これにより、処理の流れと値の変化を同時に確認できます。

頭の中だけで考えるより、表に残した方がミスに気づきやすくなります。

処理の結果を確認する

最後に、処理後の結果を確認します。

この教材では、最後の a は 6 になります。

ただし、結果だけを見るのではなく、なぜその結果になったかをトレース表で確認します。

科目Bでは、最終結果だけでなく、途中の状態を問われることもあります。

トレース表の書き方

トレース表に何を書けばよいかを示した図

トレース表は、処理を見える形にするための表です。

きれいな表を作ることが目的ではありません。

値の変化を見落とさないことが目的です。

実行した行を書く

まず、どの行を実行したかを書きます。

行番号がある問題なら、行番号を書くと分かりやすいです。

行番号がない場合は、処理の内容を短く書きます。

実行した行xy説明
x ← 22x に 2 を入れる
y ← x + 325x + 3 を計算して y に入れる

変数の値を書く

次に、変数の値を書きます。

値が変わった変数だけでなく、必要に応じて前からある変数も書きます。

そうすると、次の計算で使う値を間違えにくくなります。

特に、同じ変数に何度も代入する問題では、最新の値を確認することが大切です。

配列の中身を書く

配列を使う問題では、配列の中身も書きます。

たとえば、data の1番目、2番目、3番目を使うなら、次のように書けます。

実行した行data[1]data[2]data[3]説明
data[2] ← 94972番目の値を 9 に変える

ここで大事なのは、何番目を見ているかです。

教材では、今見ている配列の位置を強調する想定です。

JavaScript内部では配列を0から扱うことがありますが、本文や教材画面では「1番目、2番目、3番目」と表示します。

実際の試験では、問題文の配列番号の前提を必ず確認してください。

条件の結果を書く

条件分岐では、条件の結果も書きます。

条件が真なら、真の場合の処理へ進みます。

条件が偽なら、偽の場合の処理へ進みます。

条件結果進む処理
score が 60 以上result ← “合格”

条件の結果を書くと、どちらの処理へ進んだのかが分かりやすくなります。

基本情報技術者試験ではどう出る?

基本情報技術者試験では、疑似言語を読んで処理を追う問題が出ます。

出題の中心は、暗記ではありません。

問題文に書かれた処理を正しく読み、値の変化を追えるかが問われます。

処理後の変数の値を問う問題

よくあるのが、処理が終わったあとの変数の値を問う問題です。

たとえば、x や sum の最終的な値を選びます。

このタイプの問題では、代入のたびに値を更新することが大切です。

前の値のままで考えると、答えがずれます。

配列の中身を問う問題

配列の中身を問う問題もあります。

たとえば、処理後の配列の2番目や3番目の値を聞かれることがあります。

配列では、何番目を見ているのかを間違えないようにします。

問題文で、配列の番号がどこから始まるかも確認します。

ループの回数を問う問題

ループが何回行われるかを問う問題もあります。

この場合は、開始の値、増え方、終了条件を見ます。

最後の1回を数え忘れると、答えがずれます。

特に、「何番目まで処理するか」は丁寧に確認しましょう。

空欄に入る処理を選ぶ問題

空欄に入る処理を選ぶ問題では、前後の流れを読みます。

空欄だけを見て答えるのではなく、次のことを確認します。

  • 空欄の前でどの値になっているか
  • 空欄で何を変える必要があるか
  • 空欄の後でどの値が使われるか

トレース表を使うと、空欄に必要な処理が見つけやすくなります。

初心者が間違えやすい点

疑似言語とトレースで初心者が間違えやすい点をまとめた図

疑似言語とトレースでは、初心者がつまずきやすい点があります。

ここを先に知っておくと、問題を解くときにミスを減らせます。

代入の右側と左側を逆に読む

代入では、右側を先に計算します。

そして、その結果を左側の変数に入れます。

x ← x + 1

これは、x に 1 を足した結果を、もう一度 x に入れるという意味です。

左から右へ読むのではなく、右側の計算結果が左側へ入ると考えます。

変数の値を前のままで考えてしまう

同じ変数に何度も代入すると、値は上書きされます。

x ← 2
x ← 5

この場合、最後の x は 5 です。

最初の 2 は、もう x の中にはありません。

トレース表では、常に最新の値を見るようにします。

ループの最後の1回を数え忘れる

ループでは、最後の1回を数え忘れることがあります。

たとえば、「1から5まで」とあれば、1、2、3、4、5 の5回です。

4回ではありません。

ただし、問題文の書き方によっては、終了条件の扱いが変わることがあります。

開始、増え方、終了条件を必ず確認しましょう。

配列の添字をずらして読む

添字とは、配列の何番目かを表す番号です。

たとえば、data[1] は data の1番目を表します。

ただし、試験では問題文によって、配列番号の始まり方が決まります。

本文や教材では「1番目、2番目、3番目」と表示しますが、実際の問題では、配列が何番から始まるかを必ず確認してください。

ここを確認しないと、1つずれた値を見てしまうことがあります。

確認問題

最後に、この記事の内容を確認しましょう。

答えを暗記するより、理由を言えるかを意識してください。

代入ではどちら側を先に計算しますか?

代入では、右側を先に計算します。

その計算結果を、左側の変数に入れます。

x ← x + 2

この場合、右側の x + 2 を先に計算します。

その結果で、左側の x の中身が変わります。

トレース表には何を書きますか?

トレース表には、実行した行、変数の値、配列の中身、条件の結果などを書きます。

目的は、処理の流れと値の変化を見えるようにすることです。

きれいに書くことより、値を見失わないことが大切です。

ループを読むときに確認することは何ですか?

ループを読むときは、次の3つを確認します。

  • どこから始まるか
  • いくつずつ増えるか、または減るか
  • どこで終わるか

さらに、ループの中で変数や配列がどう変わるかをトレース表に書きます。

まとめ

疑似言語は、処理の流れを書くための言葉です。

基本情報技術者試験の科目Bでは、この疑似言語を読んで、変数や配列の変化を追う力が必要です。

トレースは、処理を1行ずつ追い、値の変化を表に書く方法です。

代入では、右側を先に計算し、その結果を左側の変数に入れます。

条件分岐では、条件が真か偽かを確認します。

くり返し処理では、何回くり返すか、ループ変数がどう変わるか、終了条件は何かを確認します。

配列では、何番目を見ているのかを丁寧に確認します。

本文や教材では「1番目、2番目、3番目」と表示しますが、実際の試験では問題文の配列番号の前提を確認することが大切です。

疑似言語は、いきなり全部を読もうとすると難しく感じます。

しかし、1行ずつ見て、変数や配列の変化を表に書けば、処理の流れは少しずつ見えるようになります。

科目B対策では、答えを覚えるよりも、処理を追う練習を重ねることが大切です。

配列の値を並べ替える処理をさらに練習したい方は、基本情報技術者試験のソートアルゴリズム入門も参考にしてください。

よかったらシェアしてね!
  • URLをコピーしました!
目次