前回で、クラスとはデータと処理をひとまとめにした型だと分かりました。今回は本物の問題文に付いてくる「説明の表」を読んで、プログラムを追うところまでやります。
第1部 擬似言語の教科書 地図+20回
G1擬似言語の地図(入口)G2-1変数と宣言G2-2データ型G2-3代入「←」G3-1部品を呼ぶ/戻るG3-2引数G3-3戻り値・手続と関数G4-1配列と要素番号G4-2配列の読み書きG5選択処理 ifG6-1繰返し forG6-2配列を for で回すG7繰返し whileG8-1算術演算子と優先順位G8-2and / or / notG9-12次元配列G9-22重ループG10大域変数と局所変数G11未定義G12-1演算子 . の読み方G12-2クラスとはG12-3コンストラクタ
問題文には、こういう表が付いてくる
クラスが出てくる問題には、中身のプログラムの代わりに表が渡されます。前回は簡単にしたものを見ましたが、本物には欄がもう2つあります。
ここでは Stack というクラスを例にします。ものを積み上げる入れ物で、あとに積んだものから先に取り出します。机に積んだ本の山と同じです。いま覚えるのはこれだけで足ります。
クラス Stack の説明
| コンストラクタ | 説明 |
|---|---|
Stack() |
空のスタックを作る。 |
| メソッド | 戻り値 | 説明 |
|---|---|---|
push(整数型: n) |
なし | n をいちばん上に積む。 |
pop() |
整数型 | いちばん上のものを取り出して返す。 |
size() |
整数型 | 積まれている個数を返す。 |
長く見えますが、読むべきところは2つだけです。
拾うのは「引数」と「戻り値」の2つだけ
1つめは、括弧の中 ── 引数です。
push(整数型: n) pop()
push の括弧には 整数型: n と書いてあります。整数を1つ渡してくださいという意味です。pop の括弧は空なので、何も渡しません。
これは手続の引数とまったく同じ書き方です。新しい約束はありません。
2つめは、戻り値の欄です。ここが、その行をどう書くかを決めます。
表の戻り値を見れば、その行がどう書かれるか決まる
戻り値なし ── 1行で呼んで、それで終わり
表で push の戻り値はなしでした。返ってくるものがありません。
s.push(4)
だから、この行はこれだけで完結します。← の右に置くことはできません。置いても受け取るものが無いからです。
整数型: n ← s.push(4) とは書けません。push は積むだけで、何も返さないからです。
戻り値あり ── 受け取れる。捨ててもよい
pop の戻り値は整数型でした。整数が1つ返ってきます。
だから ← の右に置いて受け取れます。
整数型: n ← s.pop()
条件式の中に置くこともできます。
if (s.size() が 0 と等しい)
そして ── 受け取らずに呼ぶこともできます。
s.pop()
戻り値があっても、要らなければ受け取らなくて構いません。実際の出題では、そのとき /* 戻り値は使用しない */ と書き添えられます。
/* と */ ではさんだ部分は注釈で、プログラムの動きには影響しません。読む人へのことわり書きです。
コンストラクタは、戻り値のある呼び出し
表のいちばん上に戻ってください。Stack() には戻り値の欄がありません。
それでも、こう書けます。
Stack: s ← Stack()
コンストラクタは、作った実物そのものを返すからです。だから ← の右に置けます。戻り値の欄が無いのは、返るものが「そのクラスの実物」に決まっているからです。
1行ずつ動かして確かめる
ここまでの表だけを使って、表に書かれたとおりに呼ぶプログラムです。
Stack: s ← Stack() s.push(4) s.push(7) s.pop() の戻り値を出力 s.push(9) s.size() の戻り値を出力
出力は2回あります。何と何が出ますか。表だけを見て決めてから、下のボタンを押してください。
1回目 pop() が返すのは、4 と 7 のどちらか。
2回目 size() が返すのはいくつか。push は3回呼んでいます。
クラスを作って、メソッドを順に呼ぶ
当サイトオリジナルの例題
ループ開始前
スタックの中身
いま計算していること
変数の状態
出力
トレース表(進めると1行ずつ積み上がります)
答え合わせ
1回目7。あとに積んだほうから出ます。4 ではありません
2回目2。3回積みましたが、間で1個取り出しているので残りは2個です
呼んだ回数と、出力の回数は別です。push は3回呼ばれていますが、1度も出力していません。
つまずきポイントまとめ
| まちがえ方 | 正しい理解 |
|---|---|
| 表を読まずにプログラムから入る | 表を先に読む。拾うのは引数と戻り値の2つだけ |
戻り値なしのメソッドを ← の右に置く |
返るものが無いので置けない。1行で完結 |
| 戻り値ありは必ず受け取ると思う | 捨ててもよい。そのときは注釈が添えられる |
| メソッドの中身を想像する | 表に書かれたとおりに動くと信じる。中は問われない |
| 呼ばれた回数を出力の回数だと思う | 出力する行だけが出力になる |
次に読む
| A1-1 | トレース表の書き方 ─ ここから第2部へ |
| G12-2 | クラスとは ─ 変数と手続が1つになったもの |
| G12-1 | 演算子「.」 ─ メンバ変数とメソッドの読み方 |
| G1 | 擬似言語とは ─ 記号の読み方と書き方を1枚で |
| 目次 | 基本情報技術者試験 科目B 攻略ガイド |
この記事で引用した資料
- 擬似言語の記述形式 科目Bの公開問題・サンプル問題の各冊子に掲載。冊子上の名称は年度により「基本情報技術者試験用」と「基本情報技術者試験,応用情報技術者試験用」があるが、本文は同一
- 基本情報技術者試験 シラバス Ver9.2(2026年1月8日)
いずれも独立行政法人情報処理推進機構(IPA)が公表したものです。IPAは公表済みの試験問題について、教育目的での使用に許諾および使用料を不要としていますが、著作権は放棄していません。本記事では問題文を改変せずに引用しています。
本文の例題は当サイトのオリジナルです。

