基本情報技術者 過去問題形式

基本情報技術者 擬似言語 問題集|過去問題形式で8問

基本情報技術者 プログラミング基礎&擬似言語「変数・条件分岐・繰り返し・オブジェクト指向・2進数・配列トレース」の練習問題8問です。解けなかった問題は、各問の解説末尾のリンクから対応する解説記事に進んでください。

 

Q1. 次の擬似言語を実行したとき、変数 a に最後に入っている値はどれですか?

整数型: a ← 10
整数型: b ← 4
a ← a + b

回答

解説

正解は「D」です。

IPA 擬似言語の「」は代入を表します。まず a に 10、b に 4 が入ります。次の a ← a + b は、右辺 a + b(10 + 4 = 14)を計算してから左辺 a に入れ直すという意味です。よって a は 14 になります。代入は「右辺を計算してから左辺へ入れる」と覚えると間違いにくくなります。

A は b の値、B は更新前の a、C は引き算した結果で、いずれも a の最終値とは異なるため誤りです。

擬似言語の基礎とはを見る

 

Q2. 次の擬似言語を実行したとき、変数 result に入る値はどれですか?

整数型: x ← 7
整数型: result
もし x ≧ 5 ならば
  result ← 1
そうでなければ
  result ← 0

回答

解説

正解は「A」です。

x に 7 が入った状態で、条件「x ≧ 5」を確かめます。7 ≧ 5 はなので「もし」側の分岐に入り、result ← 1 が実行されます。条件分岐の問題は、条件式が真か偽かを先に判定してから、どちらの代入が動くかを追うのが鉄則です。

B は「そうでなければ」側で条件が偽のときの値、C は x の値そのものを取り違えた誤りです。

擬似言語の基礎とはを見る

 

Q3. 次の擬似言語を実行したとき、変数 sum に入る値はどれですか?

整数型: sum ← 0
整数型: i
i を 1 から 3 まで 1 ずつ増やしながら繰り返す
  sum ← sum + i

回答

解説

正解は「C」です。

i を 1 から 3 まで動かしながら sum に足していきます。i=1 のとき sum は 0+1=1、i=2 のとき 1+2=3、i=3 のとき 3+3=6 となり、最終的に sum は 6 です。繰り返しの問題は、ループ変数と累積変数の値を1回ごとに表にして追うとミスが減ります。

A は i の最終値、B は途中の値、D は別の範囲(1〜4 など)で足した結果で、いずれもこのループの結果とは異なるため誤りです。

擬似言語の基礎とはを見る

 

Q4. オブジェクト指向の「カプセル化」の説明として、もっとも適切なものはどれですか?

回答

解説

正解は「B」です。

カプセル化は、データ(属性)とそれを操作する手続き(メソッド)を1つのオブジェクトにまとめ、内部の詳細を外から直接いじれないように隠す考え方です。外部とは決められた窓口(メソッド)を通じてやり取りするため、安全性と保守性が高まります。

A は継承、C は多態性(ポリモーフィズム)の説明で、いずれもカプセル化とは別の概念のため誤りです。

オブジェクト指向プログラミングとはを見る

 

Q5. クラスとインスタンスの関係として、もっとも適切なものはどれですか?

回答

解説

正解は「A」です。

クラスはオブジェクトの設計図で、どんな属性と操作を持つかを定義します。その設計図をもとに実際にメモリ上へ作られた実体がインスタンスです。「たい焼きの型がクラス、焼き上がった1個1個のたい焼きがインスタンス」とイメージするとつかみやすくなります。

B は設計図と実体が逆、C は両者は別の概念なので誤り、D はクラスもインスタンスも変数や関数1個に限定されないため誤りです。

オブジェクト指向プログラミングとはを見る

 

Q6. 2進数 1010 と 0110 の論理積(AND)をビットごとに計算した結果はどれですか?

回答

解説

正解は「C」です。

論理積(AND)は、対応するビットが両方とも 1 のときだけ 1、それ以外は 0 になります。1010 と 0110 を上位の桁から順に見ると、1と0→0、0と1→0、1と1→1、0と0→0 となり、結果は 0010 です。

A の 1110 は論理和(OR)の結果、B の 1100 は排他的論理和(XOR)の結果で、AND の結果ではないため誤りです。

2進数と論理回路とはを見る

 

Q7. 配列 data の要素が data[1]=3, data[2]=8, data[3]=5 のとき、次の擬似言語を実行すると max に入る値はどれですか?

整数型: max ← data[1] 整数型: i
i を 2 から 3 まで 1 ずつ増やしながら繰り返す
  もし data[i] > max ならば max ← data[i]

回答

解説

正解は「B」です。

これは配列の最大値を求める定番処理です。まず max に data[1]=3 を入れます。i=2 で data[2]=8 > 3 が真なので max は 8 に更新。i=3 で data[3]=5 > 8 は偽なので更新なし。よって max は 8 です。

A は初期値のまま更新されなかった場合、C は最後の要素をそのまま入れてしまった場合の誤りです。

擬似言語の基礎とはを見る

 

Q8. プログラムを「関数(手続き)」に分けて書くことの利点として、もっとも適切なものはどれですか?

回答

解説

正解は「D」です。

関数(手続き)は、まとまった処理に名前を付けて切り出したものです。共通の処理を1か所にまとめておけば、必要なときに呼び出すだけで再利用でき、修正も1か所で済みます。結果としてコードが読みやすく、保守しやすくなります。

A は分割が速度を確実に上げるとは限らないため誤り、B は関数ごとに局所変数を持てるため誤り、C は再利用できるのが関数の利点なので誤りです。

擬似言語の基礎とはを見る

 

試験全体の流れを俯瞰したい時は、基本情報技術者 試験全体概要 に戻れます。