「厳選5題」過去問と解説 | 平成28年度 春期 の過去問やるならこれをやれ


2020-03-09 更新

ここでは、平成 28 年度 春期 基本情報技術者試験の午前試験 の中から「やるべき問題」を5題に厳選し、ぶっちゃけた解説をさせていただきます。

やるべき問題とは、よく出る問題であり、かつ、練習すればできる問題(練習しないとできない問題)です。

 

【厳選問題 1 】

文字列の正規表現の問題は、教わればできます

問 3 平成 28 年度 春期

UNIX における正規表現 [A-Z] + [0-9] * が表現する文字列の集合の要素となるものはどれか。ここで,正規表現は次の規則に従う。

  • [A-Z] は、大文字の英字 1 文字を表す。
  • [0-9] は、数字 1 文字を表す。
  • + は,直前の正規表現の1 回以上の繰返しであることを表す。
  • は,直前の正規表現の0 回以上の繰返しであることを表す。

ア 456789  イ ABC+99  ウ ABC99*  エ ABCDEF

解説

「正規表現」と聞くと、「関係データベースの正規化のこと?」や「浮動小数点数形式のこと?」と思われるかもしれませんが、そうではありません。

この問題の正規表現は、文字列のパターンが、あらかじめ決めておいていた形式に合っているかどうかを判断するためのものです。

正規表現の書き方には、OS やプログラミング言語によっていくつかの形式がありますが、ここでは UNIX という OS の形式を取り上げています。

 

正規表現の書き方は、問題に示されているので、あらかじめ覚えておく必要はありません。

それよりも大事なことは、文字列のパターンは、プログラムの処理の流れと同じであり、

「順次(まっすぐ進む)」
「選択(どれかを選ぶ)」
「反復(繰り返す)」

から構成されていることを知ることです。これを知っていれば、どのような書き方の正規表現であっても、意味を理解できます。

 

問題に示された正規表現は、 [A-Z] + [0-9]* です。左から右に向かって、このパターンでまっすぐ進みます。

これは、順次です。

 [  ]  で囲まれた部分では、その中に示されたものから 1 つを選びます。
[A-Z] は、A から Z の中から 1 文字を選びます。
[0-9] は、0 から 9 の中から 1 文字を選びます。これらは、選択です。
 +  は、直前の 1 文字以上の繰り返し です。
[A-Z] + は、A から Z の中から 1 文字を選ぶこと を 1 回以上繰り返します。
 * は、直前の 0 回以上の繰り返し です。
[0-9]* は、0 から 9 の中から 1 文字を選ぶこと を 0 回以上繰り返します。これらは、反復です。

 

これで、正規表現とは何かご理解いただけたでしょう。

 

それでは、問題を解いてみましょう。

[A-Z]+[0-9]* という正規表現は、文字列を左から右に向かって見て、

まず A から Z の中から 1 文字を選ぶことを 1 回以上繰り返し、
次に 0 から 9 の中から 1 文字を選ぶことを 0 回以上繰り返す、

というパターンです。

 

選択肢ア の 456789 は、A から Z が 1 文字以上ないのでパターンに合っていません。
選択肢イ の ABC+99 は、文字列の中に + があるのでパターンに合っていません。
選択肢ウ の ABC99* は、文字列の中に * があるのでパターンに合っていません。
選択肢エ の ABCDEF は、パターンに合っています。

 

したがって、正解は、選択肢エです。

 

解答

 

【厳選問題 2 】

音声のサンプリングの計算方法も、教わればわかります

問 4 平成 28 年度 春期

PCM 方式によって音声をサンプリング(標本化)して 8 ビットのディジタルデータに変換し,圧縮せずにリアルタイムで転送したところ,転送速度は 64,000 ビット / 秒であった。このときのサンプリング間隔は何マイクロ秒か。

ア 15.6  イ 46.8  ウ 125  エ 128

解説

「こんな難しい問題できない!」と思うかもしれませんが、問題で使われている用語の意味と計算方法を教われば、必ずできるようになりますので、とにかくやってみましょう。

問題の冒頭にある「 PCM( Pulse Code Modulation 、パルス符号変調)方式」とは、データをそのまま 2 進数の符号にする形式です。つまり、特殊なことはしないという意味なので、気にする必要はありません。

 

「サンプリング(標本化)」とは、一定の時間間隔でデータを記録することです。この時間間隔を「サンプリング間隔」と呼びます。

「転送速度」とは、1 秒間に送るデータの量です。ここでは、1 回のサンプリングで 8 ビットのデータが記録されます。それを、そのまま送ったところ、1 秒間に 64,000 ビット のデータ量になったのです。

それでは、サンプリング間隔は何マイクロ秒でしょう? という問題です。

 

1 回のサンプリングで 8 ビット のデータが得られ、
1 秒間に 64,000 ビット のデータ量になったのですから、
1 秒間に 64,000 ÷ 8 = 8,000 回のデータの記録が行われています。

サンプリング回数を求めるなら 8,000 回で正解なのですが、ここではサンプリング間隔を求めなければなりません。

 

1 秒間に 8,000 回ですから、サンプリング間隔は、1 秒 ÷ 8,000 回 です。このまま計算するのは、面倒ですが、答えをマイクロ秒単位で求めることになっています。

1 秒 = 1,000,000 マイクロ秒
1 秒 ÷ 8,000 回 = 1,000,000 秒 ÷ 8,000 回 = 1,000 秒 ÷ 8 回
= 125 マイクロ秒

簡単に計算できますね。

したがって、正解は、選択肢ウです。

できましたね!

 

解答

 

label関連タグ: 音声サンプリング

 

【厳選問題 3 】

割り算が引き算の繰り返しで実現できることも、教われば納得できます

問 8 平成 28 年度 春期

x と y を自然数とするとき,流れ図で表される手続を実行した結果として,適切なものはどれか。

q の値 r の値
x ÷ y の余り x ÷ y の商
x ÷ y の商 x ÷ y の余り
y ÷ x の余り y ÷ x の商
y ÷ x の商 y ÷ x の余り
解説

「割り算は、引き算の繰り返しで実現できる」ということをご存じですか。

たとえば、100 ÷ 3 という割り算は、100 から 3 を引くこと を 繰り返す ことで実現できます。33 回引けて 1 が余るので、100 ÷ 3 の 商は 33 で 余りは 1 です。

私の知る限り、市販のほとんどの解説書には、「割り算は、引き算の繰り返しで実現できる」という説明はありません。

当たり前のことだからでしょう。

 

しかし、その当たり前のことも、初めて知る人には当たり前ではないはずです。そして、初めて知る人には当たり前ではないことが、この問題に出ているのです。ですから、練習しておきましょう。

フローチャート、擬似言語、プログラミング言語のどれで表記されていても、アルゴリズムを読み取るコツは、わかりやすい具体例を想定することです。

 

ここでは、100 ÷ 3 という割り算を具体例にしましょう。

100 ÷ 3 という割り算では、100 から 繰り返し 3 を引く処理を行うことになります。

 

引き算をしているのは「 r ← r – y 」です。したがって、y は 100 ÷ 3 の 3 に相当します。

「 q ← 0 」で q に初期値として 0 を代入し、
「 r ← r – y 」を行うたびに「 q ← q + 1 」で q の値をカウントアップ しています。

したがって、q は 3 を引けた回数であり、割り算の商です。

「 r ← x 」で r に初期値として x を代入し、
「 r ← r – y 」で繰り返し r から y を引いている のですから、x から y を繰り返し引いたのと同じ結果が得られます。

したがって、x は 100 ÷ 3 の 100 に相当し、ここでは x ÷ y という割り算が行われています。

「 r < y 」という条件が Yes なら、もう r から y が引けないので、繰り返しが終わります。 このとき、r には 100 ÷ 3 の 余りの 1 が格納されています。

以上のことから、x ÷ y という割り算を行っていて、q が商 で、r が 余り であることがわかりました。正解は、選択肢イです。

 

解答

label 関連タグ: テクニック 具体的な値を想定

 

【厳選問題 4 】

「何これ?」という問題ですが、教わって覚えてください

問 10 平成 28 年度 春期

RISC プロセッサの5段パイプラインの命令実行制御の順序はどれか。ここで、このパイプラインのステージは次の五つとする。

 (1) 書込み
 (2) 実行とアドレス生成
 (3) 命令デコードとレジスタファイル読出し
 (4) 命令フェッチ
 (5) メモリアクセス

ア (3), (4), (2), (5), (1)  
イ (3), (5), (2), (4), (1)
ウ (4), (3), (2), (5), (1)  
エ (4), (5), (3), (2), (1)

解説

初めてこの問題を見たなら「何これ?」と思うでしょう。

これは、コンピュータのプロセッサ( CPU とも呼びます)が、プログラムを解釈・実行するときの手順を答える問題です。

プロセッサには、いくつかの種類があるので、RISC( Reduced Instruction Set Computer 、リスク)プロセッサであると断わり、5 段階の手順で解釈・実行するとしているので、5 段パイプラインであると断っているのです。

ここでは、これらを気にする必要はありません。RISC やパイプラインをテーマにした問題に遭遇したときに、大いに気にしてください。

 

それでは、問題を解くために必要とされる知識をお教えしましょう。

プログラムのひとつの処理は、「 ○○ せよ、△△ を」という形式になっています。「 ○○ せよ」の部分は、命令であり、「 △△ を」の部分は命令の対象となるデータです。

命令もデータも、メモリの中にあります。

プロセッサは、

「(1) 命令を読み込む」→
「(2) 命令を解釈する」→
「(3) 命令を実行する」→
「(4) データを読み込んで演算する」→
「(5) 結果をメモリに書き込む」

という手順で、プログラムを解釈・実行します。

 

 

「ええっ、こんな難しいこと覚えられないよ!」と思われるかもしれませんが、決して難しくありません。

繰り返しますが、プログラムのひとつの処理は、命令とデータから構成されています。命令を先に解釈しないと、どのようなデータが対象になるのかわかりませんね。

そして、命令を解釈するためには、その前に命令を読み込まなければなりません。命令を読み込んで、解釈したら、実行します。

ここまでが、「(1) 命令を読み込む」→「(2) 命令を解釈する」→「(3) 命令を実行する」という手順です。

 

命令を実行したら、命令の対象となるデータが演算されます。それが、「(4) メモリのデータを読み込んで演算する」です。

演算したら「(5) 結果をメモリに書き込む」を行います。

 

これで、(1) から (5) の手順がつながりました。難しくないでしょう。

 

それでは、問題を見てみましょう。

「(1) 命令を読み込む」→「(2) 命令を解釈する」→「(3) 命令を実行する」→「(4) データを読み込んで演算する」→「(5) 結果をメモリに書き込む」という手順が、専門用語を交えて示されています。

問題に示された「(4) 命令フェッチ」の「フェッチ( fetch )」は、「読み込む」という意味です。
「(3) デコード」の「デコード( decode )」は、「解釈する」という意味です。

したがって、専門用語を交えると

「(4) 命令フェッチ」→
「(3) 命令デコード」→
「(2) 実行」→
「(5) メモリアクセス」→
「(1) 書き込み」

という順序になります。正解は、選択肢ウです。

 

解答

 

【厳選問題 5 】

計算方法をお教えしますので、暗記でなく仕組みで覚えてください

問 12 平成 28 年度春期

表示解像度が 1,000 × 800 ドットで,色数が 65,536 色 ( 210 色) の画像を表示するのに最低限必要なビデオメモリ容量は何 M バイトか。ここで,1 M バイト = 1,000 k バイト,1 K バイト = 31,000 バイトとする。

ア 1.6  イ 3.2  ウ 6.4  エ 12.8

解説

基本情報技術者試験に出題される計算問題の多くは、実務でそのような計算が必要とされるのではなく、「仕組みがわかっているなら計算できるよね?」という問題です。

ですから、計算方法を暗記するのではなく、仕組みを覚えて計算できるようになってください。この問題は、その好例です。

はじめに、仕組みを説明しますので、それを覚えたら計算を行ってみましょう。

 

コンピュータの画面には、縦横に小さな粒が並んでいます。この粒を「ドット」や「ピクセル」や「画素」と呼びます。

それぞれのドットは、メモリの記憶領域に対応付けられていて、このメモリを「ビデオメモリ」や「 VRAM( Video RAM 、ブイラム)」と呼びます。

 

1 つのドットに割り当てられているメモリの記憶容量によって、表現できる色数が決まります。

1 ビット なら 2 色、
2 ビット なら 4 色、
3 ビット なら 8 色、
・・・、
N ビット なら 2N 色 です。

ここまでが、この問題を解くために知っておくべき仕組みです。

 

それでは、計算を行ってみましょう。

表示解像度が 1,000 × 800 ドットということは、画面に 1,000 × 800 個のドットがあるということです。
色数が 65,536 色( 216 色)ということは、1 つのドットに割り当てられるメモリの記憶容量が 16 ビット = 2 バイト ということです。

したがって、画面全体で必要とされるメモリの記憶容量は、

1,000 × 800 × 2 = 1,600,000 バイト = 1.6 M バイト

です。

正解は、選択肢アです。

「ええっ、こんな簡単な計算なの!」と思われるでしょう。「仕組みがわかっているなら計算できるよね?」という問題なので、計算は簡単な場合が多いのです。

 

解答

 

記事をお読みいただきありがとうございます。

もしも、一度解いただけでは、よくわからない問題があったなら、わかるまで何度でも練習してください。「やるべき問題」は「わかるまでやるべき問題」だからです。

この厳選問題大全集が、受験者の皆様のお役に立てば幸いです。

 

label 関連タグ
実は、午前試験を『免除』できます 独習ゼミで午前免除試験を受けた 85% の方が、
午前分野を免除しています。
2020年 6月 12日 12時
締め切り間近!!
alarm2020年 6月 12日 12時締切!

詳しく見てみるplay_circle_filled
label これまでの『厳選5題 過去問と解説』の連載一覧 label 著者

『プログラムはなぜ動くのか』(日経BP)が大ベストセラー
IT技術を楽しく・分かりやすく教える“自称ソフトウェア芸人”

大手電気メーカーでPCの製造、ソフトハウスでプログラマを経験。独立後、現在はアプリケーションの開発と販売に従事。その傍ら、書籍・雑誌の執筆、またセミナー講師として活躍。軽快な口調で、知識0ベースのITエンジニアや一般書店フェアなどの一般的なPCユーザの講習ではダントツの評価。
お客様の満足を何よりも大切にし、わかりやすい、のせるのが上手い自称ソフトウェア芸人。

主な著作物

  • 「プログラムはなぜ動くのか」(日経BP)
  • 「コンピュータはなぜ動くのか」(日経BP)
  • 「出るとこだけ! 基本情報技術者」 (翔泳社)
  • 「ベテランが丁寧に教えてくれる ハードウェアの知識と実務」(翔泳社)
  • 「ifとelseの思考術」(ソフトバンククリエイティブ) など多数