擬似言語のクラスの説明表の読み方|引数と戻り値の2つだけ【基本情報技術者試験 科目B】

基本情報技術者試験

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

前回で、クラスとはデータと処理をひとまとめにした型だと分かりました。今回は本物の問題文に付いてくる「説明の表」を読んで、プログラムを追うところまでやります。

問題文には、こういう表が付いてくる

クラスが出てくる問題には、中身のプログラムの代わりに表が渡されます。前回は簡単にしたものを見ましたが、本物には欄がもう2つあります。

ここでは Stack というクラスを例にします。ものを積み上げる入れ物で、あとに積んだものから先に取り出します。机に積んだ本の山と同じです。いま覚えるのはこれだけで足ります。

クラス Stack の説明

コンストラクタ 説明
Stack() 空のスタックを作る。
メソッド 戻り値 説明
push(整数型: n) なし n をいちばん上に積む。
pop() 整数型 いちばん上のものを取り出して返す。
size() 整数型 積まれている個数を返す。

長く見えますが、読むべきところは2つだけです。

拾うのは「引数」と「戻り値」の2つだけ

1つめは、括弧の中 ── 引数です。

push(整数型: n)
pop()

push の括弧には 整数型: n と書いてあります。整数を1つ渡してくださいという意味です。pop の括弧は空なので、何も渡しません。

これは手続の引数とまったく同じ書き方です。新しい約束はありません。

2つめは、戻り値の欄です。ここが、その行をどう書くかを決めます。

表の push は戻り値なしで1行で完結、pop は戻り値が整数型で ← の右に置いて受け取れる

表の戻り値を見れば、その行がどう書かれるか決まる

戻り値なし ── 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 攻略ガイド

この記事で引用した資料

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

本文の例題は当サイトのオリジナルです。

Copied title and URL