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


2020-03-04 更新

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

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

【厳選問題 1 】
えっ、小数点以下の 16 進数も出るの? 出るから練習しておこう!

問 1 (平成 30 年度 秋期)

16 進数の小数 0.248 を 10 進数の分数で表したものはどれか。

ア 31 / 32  イ 31 / 125  
ウ 31 / 512  エ 73 / 512

解説

すでにある程度、試験の勉強をしているなら、16 進数を 10 進数に変換する方法をご存知でしょう。

「桁の重みと桁の数字を掛けて集計する」です。

たとえば、5A7C という 16 進数を 10 進数に変換する場合は、

16 進数の桁の重みが下位桁から順に 160 、161 、162 、163 なので、

5 × 163 + 10 × 162 + 7 × 161 + 12 × 160

という計算で求められます。

「楽勝! 楽勝!」と思って、この問題を見ると、何とビックリ、小数点以下の 16 進数を 10 進数に変換する問題です。

「えっ、小数点以下ってどうやって変換するの? わかんな~い!」と思ったなら、練習しておきましょう。

 

10 進数の小数点以下の桁の重みが、0.1 、0.01 、0.001 、0.0001 、・・・ であることは、わかりますね。

これを指数形式で表記すると、

10-1 、10-2 、10-3 、10-4 、・・・

になります。

小数点以下の桁の重みは、マイナスの指数になる ことがポイントです。これは、16 進数でも同様です。

16進数の小数点以下の桁の重みは、

16-1 、16-2 、16-3 、16-4 、・・・

になります。

そして、これもポイントなのですが、小数点以下であっても 16 進数を 10 進数に変換する方法は「桁の重みと桁の数字を掛けて集計する」です。

 

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

16 進数の小数 0.248 で「桁の重みと桁の数字を掛けて集計する」を行うと、

2 × 16-1 + 4 × 16-2 + 8 × 16– 3

になります。

16– 1 、16– 2 、16– 3 は、1 / 161 、1 / 162 、1 / 163 なので、

分数形式にすると、

2 / 161 + 4 / 162 + 8 / 163

になります。

 

この後は、コツコツ計算するしかありません。

2 / 161 + 4 / 162 + 8 / 163
=( 2 × 162 / 163 ) + ( 4 × 16 / 163 ) + ( 8 / 163 )
=( 2 × 162 + 4 × 16 + 8 ) / 163
=( 2 × 16 × 16 + 4 × 16 + 8 ) / ( 16 × 16 × 16 )
=( 2 × 16 × 2 + 4 × 2 + 1 )/ ( 16 × 16 × 2 )
= 73 / 512

になります。

 

解答

【厳選問題 2 】
よく出る「命令ミックス」を覚えておきましょう

問 9 (平成 30 年度 秋期)

動作クロック周波数が 700 MHz の CPU で,命令実行に必要なクロック数及びその命令の出現率が表に示す値である場合,この CPU の性能は約何 MIPS か。

命令の種別 命令実行に必要なクロック数 出現率( % )
レジスタ間演算 4 30
メモリ・レジスタ間演算 8 60
無条件分岐 10 10

ア 10  イ 50  ウ 70  エ 100

解説

これは、「命令ミックス」を行ってから、「 MIPS( Million Instructions Per Second、ミップス)」すなわち 1 秒間に実行できる命令数を百万単位で求める問題です。

もしも、命令ミックスという言葉が初耳なら、この機会にしっかり覚えてください。

命令ミックスとは、プログラムの中で使われている様々な命令の出現率から、1 命令当たりの実行に必要な平均クロック数(時計のようなカチカチ信号の数)を求めることです。

様々な命令を混ぜ合せるイメージがあるので、命令ミックスと呼ぶのです。

実際のプログラムでは、数十種類の命令が使われているはずですが、この問題では、「レジスタ間演算」「メモリ・レジスタ間演算」「無条件分岐」の 3 種類だけになっています(短時間で解けるようにするためです)。

 

それぞれの命令のクロック数と出現率を掛けて集計すれば、平均クロック数を求められます。

4 × 0.3 + 8 × 0.6 + 10 × 0.1 = 1.2 + 4.8 + 1 = 7 クロックです。

これで、命令ミックスができました。平均して 7 個のカチカチ信号があれば、1 つの命令を実行できることがわかりました。

 

それでは、MIPS を求めてみましょう。

動作クロック周波数が 700 MHz(メガ・ヘルツ)というのは、1 秒間に 700 M 個のカチカチ信号が与えられるということです。

1 命令の実行に 7 個のカチカチ信号が必要なのですから、1 秒間に実行できる命令数は、700 M ÷ 7 = 100 M 個です。

M(メガ)は、Million と同じ 100 万という意味なので、1 秒間に 100 M 個は、 100 MIPS です。

 

解答

 

label 関連タグ: MIPS

【厳選問題 3 】
これこそ教わらなければわかならい問題だ

問 16 (平成 30 年度 秋期)

三つのタスクの優先度と各タスクを単独で実行した場合の CPU と入出力 ( I/O ) 装置の動作順序と処理時間は,表のとおりである。優先度順方式のタスクスケジューリングを行う OS の下で,三つのタスクが同時に実行可能状態になってから,全て のタスクの実行が終了するまでの, CPU の遊休時間は何ミリ秒か。ここで,CPU は 1 個であり,1 CPU は 1 コアで構成され, I/O は競合せず,OS のオーバヘッドは考慮しないものとする。また,表中の( )内の数字は処理時間を示すものとする。

優先度 単独実行時の動作順序と処理時間(ミリ秒)
CPU (3) → I/O (5) → CPU (2)
CPU (2) → I/O (6) → CPU (2)
CPU (1) → I/O (5) → CPU (1)

ア 2  イ 3  ウ 4  エ 5

解説

OS は、コンピュータの基本ソフトウェアであり、ハードウェア( CPU、メモリ、I/O )とソフトウェア(プログラム)を管理します。

OS の管理下にあるプログラムを「タスク」と呼ぶ場合があります。

同時に複数のタスクが起動された場合、OS は、それぞれのタスクにハードウェアを割り当てます。この割り当てには、平等に順番に割り当てる「ラウンドロビン方式」と、優先順位をつけて割り当てる「優先度順方式」があります。この問題は、優先度順方式をテーマにしています。

 

基本情報技術者試験には、知識があることを確認するために、「現実的ではない」というか「実務の現場では、こんなことやるはずがない」という問題が出ることがあります。この問題も、その1つです。

「優先度順方式を知っていますか?」という問題にしたら、ただのアンケートになってしまうので、「優先度順方式を知っているなら、自分が OS になったつもりで、それぞれのタスクにハードウェアを割り当ててごらんなさい」という内容になっているのです。

これこそ、教わらなければわかならい問題であり、厳選問題にふさわしいものです。

 

問題の解き方を説明しましょう。

まず、条件を見てください。

  • ハードウェアとして CPU と I/O(入出力装置)を割り当てます。これは、メモリのことは気にしなくてよいということです
  • CPU は、1 個だけなので、優先順位が高いタスクが CPU を使っているときは、他に CPU を使いたいタスクがあったら、待たされることになります
  • 「I/O は競合しない」というのは、複数のタスクが同時に I/O を使うことができるという意味です
  • 「OS のオーバーヘッドを考慮しない」というのは、CPU と I/O のことだけ考えればよいという意味です

それでは、OS になったつもりで、タスクに CPU と I/O を割り当ててみましょう。

そのためには、以下のような割り当ての表を書くとわかりやすいはずです。表の 1 枠を 1 ミリ秒として、割り当てたタスクを「高」「中」「低」という文字で書き込んでいくのです。

  • タスクの割り当て表を書く
ミリ秒 1 1 1 1 1 1 1 1 1
CPU
I/O
I/O
I/O

 

さて、ここからがポイントです。

優先度順方式では、たとえ他のタスクがハードウェアを使っていても、より優先順位が高いタスクがそのハードウェアを要求すれば、割り当てが切り替わります。

つまり、この問題を解くには、以下のように、

  1. 最初に優先度「高」への割り当てをすべて書き込んで
  2. 次に優先度「中」への割り当てをすべて書き込み
  3. 最後に優先度「低」への割り当てをすべて書き込めばよい

のです。こんなこと、教わらなければ、絶対にできませんね。

  • 最初に優先度「高」への割り当てをすべて書き込む
ミリ秒 1 1 1 1 1 1 1
CPU
I/O
I/O
I/O
  • 次に優先度「中」への割り当てをすべて書き込む
ミリ秒 1 1 1 1 1 1 1 1 1
CPU
I/O
I/O
I/O
  • 最後に優先度「低」への割り当てをすべて書き込む
ミリ秒 1 1 1 1 1 1 1 1 1 1 1
CPU
I/O
I/O
I/O

 

これで、「高」「中」「低」への割り当てが完了しました。

問題の内容は、すべてのタスクの実行が終了するまでの CPU の遊休時間(どのタスクからも使われてない時間)を求めることです。

以下の図で「遊」と記入した部分が遊休時間であり、ぜんぶで 3 枠 = 3 ミリ秒です。

  • すべてのタスクの実行が終了するまでの CPU の遊休時間
ミリ秒 1 1 1 1 1 1 1 1 1 1 1 1 1 1
CPU
I/O
I/O
I/O

 

解答

やったー、できたー!

 

label 関連タグ: ラウンドロビン方式

【厳選問題 4 】
アローダイアグラムでは、ダミー作業に注意せよ

問 52 (平成 30 年度 秋期)

図のプロジェクトの日程計画において,プロジェクトの所要日数は何日か。

ア 40  イ 45  ウ 50  エ 55

 

アローダイアグラムの問題も、教わらなければできない(教わればできる)問題です。とってもよく出題されますので、解き方をしっかりと覚えてください。

難しそうに見えるかもしれませんが、わかってしまえば実に簡単ですので、どうぞご心配なく。

 

まず、アローダイアグラムの読み方です。

一般的に、1 つのプロジェクトは、複数の作業から構成されるものです。アローダイアグラムでは、それぞれの作業を「矢印(アロー)」で表し、図の左から右に向かって、プロジェクトのスタートからゴールまでの作業のつながりを示します。

それぞれの矢印に、作業名(ここでは大文字のアルファベット)と所要日数を書き添えます。

作業の切り替わりとなる部分を円で示し、それらを「結合点」と呼びます。

ポイントとなるのは、結合点の後にある作業は、その前にあるすべての作業が終わるまで始められないことと、問題によっては、破線で示された「ダミー作業」があることです(この問題には、2つのダミー作業があります)。

ダミー作業は、矢印と円だけではアローダイアグラムを書けない場合に生じます。難しく考えずに、破線のダミー作業の矢印に所要日数として 0 を書き添えて、通常の作業と同様に取り扱ってください。

ダミー作業は、所要日数 0 の作業だ」と考えれば OK です。

  • 破線のダミー作業の矢印に、所要日数の 0 を書き添える

 

この後は、図のスタートからゴールにあるそれぞれの結合点に、次の作業が始められる日を書き込んでいけば、プロジェクトの所要日数がわかります。その際のポイントは、複数の作業の結合点では、最も遅い作業を待ってから、次の作業が始められることです。

まず、スタートの結合点の日数に 0 を書き込みます。説明しやすいように、それぞれの結合点に a、b 、c 、d 、e 、f 、g という名前を付けておきます。

  • スタートの結合点の日数に 0 を書き込む

 

わかるところから、結合点に日数を書き込んでいきましょう。

結合点 b は、結合点 a の 10 日後なので、10 を書き込みます。
結合点 d では、作業 B( 0 + 5 = 5 日後)とダミー作業( 10 + 0 = 10 日後)が結合しているので、遅い方の 10 を書き込みます。

  • わかるところから、結合点に日数を書き込んでいく

 

結合点 c は、結合点 b の 15 日後 なので、10 + 15 = 25 を書き込みます。
結合点 e は、作業 C( 10 + 10 = 20 日後)とダミー作業( 25 + 0 = 25 日)が結合しているので、遅い方の 25 を書き込みます。

  • わかるところから、結合点に日数を書き込んでいく(続き)

 

結合点 f は、作業 G( 10 + 25 = 35 日後)、作業 F( 25 + 15 = 40 日後)、作業 E( 25 + 20 = 45 日後)が結合しているので、最も遅い 45 を書き込みます。

結合点 g は、結合点f の 10 日後 なので、45 + 10 = 55 を書き込みます。

結合点 g がゴールなので、このプロジェクトの所要日数は、55 日です。

正解は、エです。いかがですか。わかってしまえば実に簡単でしょう!

 

解答

  • わかるところから、結合点に日数を書き込んでいく(続き)

label 関連タグ: アローダイアグラム

【厳選問題 5 】
この問題ができれば、たいがいの期待値の問題ができます

問 75 (平成 30 年度 秋期)

商品の 1 日当たりの販売個数の予想確率が表のとおりであるとき,1 個当たりの利益を 1,000 円とすると,利益の期待値が最大になる仕入個数は何個か。ここで,仕入れた日に売れ残った場合,1個当たり 300 円の廃棄ロスが出るものとする。

販売個数
4 5 6 7
仕入個数 4 100%
5 30% 70%
6 30% 30% 40%
7 30% 30% 30% 10%

ア 4  イ 5  ウ  6  エ 7

解説

基本情報技術者試験では、様々な分野で「期待値」の計算をさせる問題が出題されます。

先ほど紹介した MIPS を求める問題の命令ミックスも、クロック数の期待値を求めていたといえます。手を変え品を変え、様々な問題が出題されますが、ここに示した問題ができれば、たいがいの問題ができるでしょう。

何度も期待値を計算させる問題だからです。

 

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

売れたら 1000 円の利益が出て、売れ残ったら 300 円の損失が出ます。

したがって、実際の利益は、利益から損失を引いた値になります。問題には、仕入れ個数に応じた販売個数の予想確率が示されているので、そこから売れる個数の期待値を求められます。以下のようになります。

売れる個数の期待値
4 個仕入れた場合
4 個 × 100%
= 4 個
5 個仕入れた場合
4 個 × 10% + 5 個 × 70%
= 3.9 個
6 個仕入れた場合
4 個 × 30% + 5 個 × 30% + 6 個 × 40%
= 5.1 個
7 個仕入れた場合
4 個 × 30% + 5 個 × 30% + 6 個 × 30% + 7 個 × 10%
= 5.2 個

売れる個数の期待値がわかったので、「仕入れ個数-売れる個数の期待値」という計算で、売れ残る個数の期待値を求められます。以下のようになります。

売れ残る個数の期待値
4 個仕入れた場合
4 個売れるのだから、4 個 - 4 個
= 0 個売れ残る
5 個仕入れた場合
3.9 個売れるのだから、5 個 - 3.9 個
= 1.1 個売れ残る
6 個仕入れた場合
5.1 個売れるのだから、6 個 - 5.1 個
= 0.9 個売れ残る
7 個仕入れた場合
5.2 個売れるのだから、7 個 - 5.2 個
= 1.8 個売れ残る

これで、ようやく実際の利益の期待値を求める準備ができました。

1000 円 × 売れる個数の期待値 - 300 円 × 売れ残る個数の期待値

という計算で求められます。

以下のようになります。実際の利益の期待値が最大になるのは、6 個 仕入れた場合の 4830 円 です。

 

解答

 

1 つの問題で、これほど多くの期待値の計算をさせられるのですから、この問題ができれば、たいがいの期待値の問題ができますよ。自信を持ってください!

実際の利益の期待値
4 個仕入れた場合
1000 円 × 4 個 - 300 円 × 0 個
= 4000 円
5 個仕入れた場合
1000 円 × 3.9 個 - 300 円 × 1.1 個
= 3570 円
6 個仕入れた場合
1000 円 × 5.1 個 - 300 円 × 0.9 個
= 4830 円
7 個仕入れた場合
1000 円 × 5.2 個 - 300 円 × 1.8 個
= 4660 円

label 関連タグ: 期待値

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

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

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

 

label 関連タグ
実は、午前試験を『免除』できます 独習ゼミで午前免除試験を受けた 86% の方が、
午前試験を免除しています。
今なら最大 2 回の
午前免除チャンス
info_outline
今なら最大 2 回の
午前免除チャンス
詳しく見てみるplay_circle_filled
label これまでの『厳選5題 過去問と解説』の連載一覧 label 著者

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

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

主な著作物

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

grade IPA認定
午前免除制度対応
eラーニング

人気記事

人気のタグ