当たるかもしれない競馬予想

あまり当たらないけど、たまに当たる競馬予想です。
ちょっとプログラムのことも書こうかな

情報処理試験(H20春) ソフトウェア開発技術者 午前問21~25

2008-05-05 | 情報処理
問21 1画素当たり24ビットのカラー情報をビデオメモリに記憶する場合、横1,024画素、縦768画素の画面表示に必要なメモリ量は、約何Mバイトか。ここで、1Mバイトは10^6バイトとする。
ア 0.8
イ 2.4
ウ 6.3
エ 18.9

正解


解説
大好きな計算問題です。
しつこいようですが、計算ミスには注意してください。
この手の計算問題は、単位系を揃えることに注意してください。
ビット、バイト、Mバイトなどちょっと注意してください。

計算式としては、以下のようになると思います。

1,024(横画素数)x768(縦画素数)x24(1画素当たりのビット数)/8(1バイト当たりのビット数)
=2^10x2x384x2x12/2^3
=2^10x2^2x192x2^2x6/2^3
=2^10x2^3x96x2^3x3/2^3
=2^10x2^4x48x2^3x3/2^3
=2^10x2^5x24x2^3x3/2^3
=2^10x2^6x12x2^3x3/2^3
=2^10x2^7x6x2^3x3/2^3
=2^10x2^8x3x2^3x3/2^3
=2^21x9/2^3
=2^18x9
=2^20x9/2^2
=9/4x2^20=2.25x2^20
2^20=1024x1024≒1000x1000=10^6=1M
よって、約2.25Mになり、この解に近いのはイと言うことになります。

余談ですが、あまり普通に計算すると計算ミスが起きるので、約分等できるところは行って最後に計算するようにすると、計算ミスも少なくなると思います。

問22 ページング方式の仮想記憶において、あるプロセスが仮想アドレス空間全体に対応したページテーブルを持つ場合、ページテーブルに必要な領域の大きさを2^xバイトで表す式はどれか。ここで、仮想アドレス空間の大きさは2^Lバイト、ページサイズは2^Nバイト、ページテーブルの各エントリの大きさは2^Eバイトとし、その他の情報については考慮しないものとする。

ア L+N+E
イ L+N-E
ウ L-N+E
エ L-N-E

解答


解説
これまたあまり理解していない用語の問題ですねぇ。
「ページテーブルの各エントリ」???何ですかねぇ。
ウィキペディアの引用ですが以下のように書いてありました。
ページテーブル(Page Table)とは、コンピュータのオペレーティングシステムにおけるページング方式の仮想記憶システムで使われるデータ構造であり、仮想アドレスと物理アドレスのマッピングを格納するものである。(ウィキペディア引用)
とするとこんな感じなんですかねぇ。

┌────────────────────────────────────────────────────┐
│仮想アドレス │
└──────┬───────┬─────────────────────────────────────┘
↓ ↓
┌─────────────┐
│ページテーブル │
└┬───────┬────┘
┌────┘ ┌────┘
↓ ↓
┌────────────┐
│ 物理アドレス │
└────────────┘

で、問題文から推測すると、仮想アドレスがページサイズ分に分割されていて、ページテーブルにはエントリと言うのが、1ページごとに用意されていると考えられます。

と言うことは、ページ数は、(仮想アドレス空間の大きさ)/(ページサイズ)で求められ、このページ数に(各エントリの大きさ)を掛ければ、(ページテーブルに必要な領域の大きさ)が出ると思います。

と言うことで、
2^X = (2^L)/(2^N)*(2^E)
= (2^L)*(2^(-N)*(2^E)=(2^(L-N+E))

よって、X = L-N+Eとなり、ウが解答となりました。

問23 仮想記憶方式に関する記述のうち、適切なものはどれか。

ア LRUアルゴリズムは、使用後の経過時間が最長のページを置換対象とするページ置換アルゴリズムである。
イ アドレス変換をインデックス方式で行う場合は、主記憶に存在する前ページ分のページテーブルが必要になる。
ウ ページフォルトが発生した場合は、ガーベジコレクションが必要である。
エ ページングが繰り返されるうちに多数の小さな空きメモリ領域が発生することを、フラグメンテーションという。

解答


解説
よくわかりませんねぇ。
とりあえずアは、間違ってないような気がします。
ちなみにLRUは「Least Recently Used 」の略です。
イはアドレス変換?アドレス指定方式の話なんですかねぇ。仮想記憶方式とは関係ないような...
ウは「ガーベジコレクション」ってなんですかねぇ。いつものようにIT用語辞典には以下のように書いています。
プログラムが使用しなくなったメモリ領域や、プログラム間の隙間のメモリ領域を集めて、連続した利用可能なメモリ領域を増やす技術。
これも、仮想記憶方式とは関係ないようですねぇ。
エはフラグメンテーションは、プログラムの起動終了を繰り返すと発生するんじゃなかったでしたっけ。

と言うことで、解答はアとなりました。

問24 イベントドリブンプリエンプション方式を用いたリアルタイムシステムのタスクA、B、Cそれぞれの処理時間と、イベントが発生してから応答するまでに許容される時間(許容応答時間)を表に示す。タスクの優先順位は、すべてのタスクが許容応答時間以内に応答できるように定めた。
タスクA、B、Cが同時に実行可能状態になったとき、発生する状況はどれか。

┌────┬─────────┬────────────┐
│ タスク│処理時間(ミリ秒) │許容応答時間(ミリ秒) │
├────┼─────────┼────────────┤
│ A │ 30 │ 100 │
├────┼─────────┼────────────┤
│ B │ 80 │ 300 │
├────┼─────────┼────────────┤
│ C │ 100 │ 200 │
└────┴─────────┴────────────┘

ア タスクAが実行状態になり、タスクB、Cは実行可能状態のまま。
イ タスクAが実行状態になり、タスクB、Cは待ち状態になる。
ウ タスクBが実行状態になり、タスクA、Cは実行可能状態のまま。
エ タスクCが実行状態になり、タスクA、Bは待ち状態になる。



解説
まずは優先度を考えましょう。許容応答時間が短い順に優先度を高く設定するので、優先度は、

A->C->B

の順になります。よって、選択肢ア、イのいずれかになります。
で、実行可能状態から待ち状態には移動しないので、解答はアとなります。

よく出る状態遷移図も覚えておいた方がよいでしょう

┌───────┐
┌────→│ 実行状態 │────┐
│ ┌───│ │ │
│ │ └───────┘ │
│ │ │
│ ↓ ↓
┌─────────┐ ┌───────┐
│ 実行可能状態 │←──────│ 待ち状態 │
└─────────┘ └───────┘

問25 タスクが実行状態、実行可能状態、待ち状態のいずれかの状態をとるとき、実行状態のタスクがプリエンプションによってほかのタスクに実行を中断され、再び実行状態となるまでの状態の変化を示したものはどれか。

ア 事項状態、実行可能状態、実行状態
イ 実行状態、実行可能状態、待ち状態、実行状態
ウ 実行状態、待ち状態、実行可能状態、実行状態
エ 実行状態、待ち状態、実行状態

解答



解説
これも問24の状態遷移図を覚えていればすぐに解答が得られそうですねぇ。
解答はアです。が、一応選択肢一つ一つ検証してみましょう。

選択肢ア
実行状態->実行可能状態->実行状態
状態遷移としては、問題ありませんねぇ。

選択肢イ
実行状態->実行可能状態->待ち状態->実行状態
実行可能状態から、待ち状態への状態遷移はありませんからこの選択肢はありません。

選択肢ウ
実行状態->待ち状態->実行可能状態->実行状態
状態遷移としては、問題ありませんねぇ。
ただし、「実行状態->待ち状態」に状態遷移するのは、入出力があるときで、今回のようにほかのタスクの実行により処理が中断された場合は、「実行可能状態」に遷移します。

選択肢エ
実行状態->待ち状態->実行状態
待ち状態から実行状態への状態遷移はありませんからこの選択肢はありません。

コメント
この記事をはてなブックマークに追加

情報処理試験(H20春) ソフトウェア開発技術者 午前問16~20

2008-05-01 | 情報処理
問16 SRAMと比較した場合のDRAMの特徴はどれか。
ア SRAMよりも高速なアクセスが実現できる
イ データを保持するためのリフレッシュ動作が不要である。
ウ 内蔵構成が複雑になるので、ビットあたりの単価が高くなる。
エ ビットあたりの面積を小さくできるので、高集積化に適している。

解答


解説
これもハード系の用語問題です。
私の嫌いな分野の一つですねぇ。
まぁ、用語についてはインターネットで調べれば何とかなるので、覚えていきましょう。

DRAMは以下のようなものです。(IT用語辞典引用)
SRAMに比較して回路が単純で、集積度も簡単に上げることができ、価格も安いため、コンピュータのメインメモリはほとんどがDRAMである。

なので、正解はエに成ります。
また、ア、イ、ウはSRAMの説明ですねぇ。

難易度(1(易)~5(難))
3 この手の用語記憶問題は3にします。

問17 パイプラインの深さをD、パイプラインピッチをP秒とすると、I個の命令をパイプラインで実行するのに要する時間を表す式はどれか。ここで、パイプラインの各ステージは1ピッチで処理されるものとし、パイプラインハザードについては、考慮しなくてよい。

ア (I+D)xP
イ (I+D-1)xP
ウ (IxD)+P
エ (IxD-1)+P

解答


解説
難かよくわからない言葉ばかり出てきますねぇ。
パイプラインの深さ?パイプラインピッチ?
問題文は、以下のようなことなんですかねぇ。
1つの処理にI個の命令が必要な処理をパイプライン処理でD個処理した場合に要する時間を表す式はどれか。
ただし、1個の命令に要する時間はP秒とする。

Dを1とした場合は、こんな感じの図になりますかねぇ。(*は空白と見なしてください)

****|<---I----->|***──
****-------------****1=D
********************──
このときは、処理時間は、IxP

Dを2とした場合は、こんな感じの図になりますかねぇ。(*は空白と見なしてください)

****|<---I+1---->|*** ──
****-------------****2=D
*****-------------
********************──
このときは、処理時間は、(I+1)xP

同様にDを3,4と変化させると処理時間は(I+2)xP、(I+3)xPと変化します。
つまり、(I+D-1)xPが答えとなり、選択肢はイとなります。

ちなみに、単位系から考えると選択肢ウ、エは選ばないと思います。
まぁ、パイプラインピッチの意味が推測できなければしかたありませんが、推測できればPの正しい単位は秒/命令になります。
また、Iの単位は命令でDがちょっとわからないですねぇ。
それにしても、もし、選択肢ウ、エを選ぶような単位に変更すると(IxD)や(IxD-1)の単位を秒/命令にする必要があり、そのためには、Dの単位が秒/命令^2となります。深さの単位としてはちょっと違和感を感じますようねぇ。
と言うことで、選択肢からは外します。

難易度(1(易)~5(難))
1

問18 プロセッサにデータを読み込むときにキャッシュメモリがヒットしなかった場合、キャッシュメモリ制御装置が行う動作はどれか。

ア キャッシュメモリから所用のデータをブロック転送し、磁気ディスクに書き込む。
イ 磁気ディスクから所用のデータをブロック転送し、キャッシュメモリに読み込む。
ウ 主記憶から所用のデータをブロック転送し、キャッシュメモリに読み込む。
エ ディスクキャッシュから所用のデータをブロック転送し、主記憶に読み込む。

正解


解説
キャッシュメモリの役割がわかれば、解ける問題だと思います。
あと、ちょっと引っかけ的な要素と、ブービートラップ的な要素がありますねぇ。
キャッシュメモリは主記憶とプロセッサの間に置いて、見かけの主記憶アクセス時間を短くするものだと思っています。

(主記憶)---(キャッシュメモリ)-----(プロセッサ)

で、主記憶よりアクセス時間が短いキャッシュメモリを用意し、プロセッサが必要とする情報がキャッシュメモリにあれば、主記憶より早く情報が取れます。変わりにキャッシュメモリにない場合は、主記憶まで必要なデータを取りに行きます。
なので、正解はウとなります。

アは、「磁気ディスク」に書き込むのがおかしいですねぇ。
イは、「磁気ディスク」から所用のエータをブロック転送するのがおかしいですねぇ。
エは、「ディスクキャッシュ」から所用のデータをブロック転送するのがおかしいですねぇ。

難易度(1(易)~5(難))
2

問19 RAIDの分類において、ミラーリングを用いることで信頼性を高め、障害発生時には冗長ディスクを用いてデータ復元を行う方式はどれか。

ア RAID1
イ RAID2
ウ RAID3
エ RAID4

解答


解説
RAIDの問題もよく出ますねぇ。
インターネットなんかで調べれば、RAIDについては調べられると思うので、覚えておいた方がよいでしょう。
インターネットで調べると、一般的に使用されている方式は、以下の4パターンみたいです。
・ RAID0
・ RAID1
・ RAID5
・ RAID6
ちなみにRAID0~RAID6までの概要をIT用語辞典を引用すると以下のようになります。
RAID0:複数のディスクに均等にデータを振り分け、同時並行で記録することで、データの読み書きを高速化したもの。
RAID1:2台のディスクにまったく同じデータを同時に書きこむ方式。
RAID2:ハミングコードと呼ばれる誤り訂正符号を生成し、データとともに分散して記録する方式。
RAID3:複数あるディスクのうち1台をパリティと呼ばれる誤り訂正符号の記録に割り当て、他のディスクにデータを分散して記録する方式。
RAID4:複数あるディスクのうち1台をパリティと呼ばれる誤り訂正符号の記録に割り当て、他のディスクにデータを分散して記録する方式。RAID 3との違いは、データの分散をビット単位ではなくブロック単位で行なう点。
RAID5:データからパリティと呼ばれる誤り訂正符号を生成し、データとともに分散して記録する方式。
RAID6:RAID-5ではパリティが1つなので同時に2台が故障するとデータを復旧することが不可能になるが、RAID-6では異なるパリティを2つ取って両方記録するため、同時に2台が故障してもデータを復旧できる。
(IT用語辞典引用)

問題文に適しているのは、RAID1ですかねぇ。
と言うことで解答はアとなりました。

難易度(1(易)~5(難))
2

問20 シリアルATAによる内蔵周辺機器の接続方法を説明したものはどれか。
ア ホストコントローラからのケーブルには、マスタとスレーブの2台の周辺機器が接続できる。
イ ホストコントローラと周辺機器は、デイジーチェーンやツリー構造で接続できる。
ウ ホストコントローラと周辺機器は、ハブを介して接続する。
エ ホストコントローラとポインツーポイントで周辺機器を接続する。

解答


解説
用語の説明問題が続きますねぇ。
全然わかんないです。
この問題の私の解法としては消去法ですねぇ。

ア ホストコントローラからのケーブルには、マスタとスレーブの2台の周辺機器が接続できる。
多分IDEの説明だと思います。

イ ホストコントローラと周辺機器は、デイジーチェーンやツリー構造で接続できる。
多分SCSIの説明だと思います。

ウ ホストコントローラと周辺機器は、ハブを介して接続する。
多分USBの説明だと思います。

エ ホストコントローラとポインツーポイントで周辺機器を接続する。
わかりませんが、消去法でこれではないかと思います。

よって解答はエになります。

難易度(1(易)~5(難))
3
コメント
この記事をはてなブックマークに追加

情報処理試験(H20春) ソフトウェア開発技術者 午前問11~15

2008-05-01 | 情報処理
問11 データの整列方法に関する記述のうち、適切なものはどれか。
ア クイックソートでは、ある一定間隔おきに取り出した要素から成る部分列をそれぞれ整列し、さらに間隔を詰めて同様の操作を行い、間隔が1になるまでこれを繰り返す。
イ シェルソートでは、隣り合う要素を比較して、代償の順が逆であれば、それらの要素を入れ替えるという操作を繰り返す。
ウ バブルソートでは、中間的な基準値を決めて、それよりも大きな値を集めた区分と小さな値を集めた区分に要素を振り分ける。次にそれぞれの区分の中で同様な処理を繰り返す。
エ ヒープソートでは、未整列の部分を順序木に構成し、そこから最大値または最小値を取り出して規制列の部分に移す。この操作を繰り返して、未整列部分を縮めていく。

解答


解説
これも良く出るソートに関する問題ですねぇ。
個人的には、どうでもよいような問題ですが、まぁ、情報処理技術者なら知っているべき無いようなんでしょうねぇ。

それぞれのソート方法をウィキペディアなどで調べれば、解答は得られそうですねぇ。

・クイックソート
データの集合を基準値より大きいものと小さいものとのグループに分け、それぞれのグループの中でも新しい基準値を使って同様の作業を行う、という手順を再帰的に繰り返す方式。(IT用語辞典より引用)
と言うと、これは選択肢ウの内容になりますねぇ。

・シェルソート
要素を数個とびに拾い集めて挿入ソートをかけ、次第にソートする要素の間隔を詰めていき、最後に単純な挿入ソートで完全に整列させる。(IT用語辞典より引用)
これは、選択肢アの内容になりますねぇ。

・バブルソート
バブルソートは、配列の隣どうしの要素の大小を比較してそれらを交換しながら整列する方法です。ちなみに、泡(バブル;bubble)が浮かんで行くように見えることからこの名前がついています。
引用URL:http://www.miyagi-ct.ac.jp/ee/lecture/E3_01/Bubble_sort.html
これは、選択肢イの内容ですねぇ。

・ヒープソート
ヒープソートでは、未整列の部分を順序木に構成し、そこから最大値または最小値を取り出して規制列の部分に移す。この操作を繰り返して、未整列部分を縮めていく。(問題文から引用)

まぁ、正解はエに成ります。

問12 16進数で表される9個のデータ1A、35,3B、54,8E,A1,AF、B2,B3を順にハッシュ表に入れる。ハッシュ値をハッシュ関数f(データ)=mod(データ,8)で求めたとき、最初に衝突が起こるのはどのデータか。ここで、mod(a,b)はaをbで割った余りを表す。

ア 54
イ A1
ウ B2
エ B3

解答


解説
問題文の意味がわかりにくいですかねぇ。
私なりの文意はこんな感じです。
「9個のデータ1A、35,3B、54,8E,A1,AF、B2,B3を順にmod(データ,8)に入れて最初に同じ答えが出るデータはどれですか。」
です。
と言うことで各数字を8で割っていき余りが同じものが2回出てきたものが正解となります。

ここで、テクニックと言うほどのものではありませんが、各数字を10進数に変えるときに下1けただけ変換すればよいことに気がつきましょう。
今回の場合8で割った余りを求められればよいのです。
2けたの16進数(例えばXY)を10進数に変換すると以下のような変換式になります。
16*X+Y
この数字の8で割った余りは、Yを8で割ったのと同じになりますよねぇ。(2桁目は16*X=2*8*Xなので、8で割り切れるため)

よって、各数字の1桁目を10進数に変換すると以下のようになります。
10,5,11,4,14,1,15,2,3
これらの8で割った余りは以下のようになります。
2,5,3,4,6,1,7,2,3
となり、2が最初に2回目の余りとして出ます。つまり、B2が答えとなります。

よって、解答はウとなります。

問13 次の流れずにおいて、ステップS4でYesと判断したときまでの、ステップS1~S4の実行回数をそれぞれん1~n4とする。n1~n4の間に成立する式はどれか。

No
┌── ◇S1
│ │YES
│┌→ ↓
││ □S2
││ │
││No ↓←──┐
│└─ ◇S3 │
│ Yes│ │
└─→ ↓ No │
◇S4──┘
│YES


ア n4=n1+n2+n3
イ n4=n1+n2-n3
ウ n4=n1-n2+n3
エ n4=-n1+n2+n3

解答


解説
これはどうやって解答を得ればよいか全然わからない問題ですねぇ。
また出題者の意図が私には見えない問題です。
とはいえ、出題されたので解かないわけにはいかないので解いてみましょう。

私の解法としては、条件が3つ(S1,S3,S4)とあるので、これらをYES/NOの全パターンを考えてみました。

S1 S3 S4 n1 n2 n3 n4 備考
(1) YES YES YES 1 1 1 1
(2) YES YES NO 1 1 2 2 最後にS4はYESと判定
(3) YES NO YES 1 2 2 1 最後にS3はYESと判定
(4) YES NO NO 1 2 3 2 最後にS3、S4はYESと判定
(5) NO YES YES 1 0 0 1
(6) NO YES NO 1 0 1 2 最後にS4はYESと判定
(7) NO NO YES 1 0 0 1
(8) NO NO NO 1 1 2 2 最後にS3、S4はYESと判定

この8パターンを各選択肢に代入してみます。
選択肢ア
n4=n1+n2+n3
(1) 1 = 1+1+1 = 3 (誤り)
(2) 2 = 1+1+2 = 4 (誤り)
(3) 1 = 1+2+2 = 5 (誤り)
(4) 2 = 1+2+3 = 6 (誤り)
(5) 1 = 1+0+0 = 1 (正)
(6) 2 = 1+0+1 = 2 (正)
(7) 1 = 1+0+0 = 1 (正)
(8) 2 = 1+1+2 = 4 (誤り)

選択肢イ
n4=n1+n2+n3
(1) 1 = 1+1-1 = 1 (正)
(2) 2 = 1+1-2 = 0 (誤り)
(3) 1 = 1+2-2 = 1 (正)
(4) 2 = 1+2-3 = 0 (誤り)
(5) 1 = 1+0-0 = 1 (正)
(6) 2 = 1+0-1 = 0 (誤り)
(7) 1 = 1+0-0 = 1 (正)
(8) 2 = 1+1-2 = 0 (誤り)

選択肢ウ
n4=n1+n2+n3
(1) 1 = 1-1+1 = 1 (正)
(2) 2 = 1-1+2 = 2 (正)
(3) 1 = 1-2+2 = 1 (正)
(4) 2 = 1-2+3 = 2 (正)
(5) 1 = 1-0+0 = 1 (正)
(6) 2 = 1-0+1 = 2 (正)
(7) 1 = 1-0+0 = 1 (正)
(8) 2 = 1-1+2 = 2 (正)

選択肢エ
n4=n1+n2+n3
(1) 1 = -1+1+1 = 1 (正)
(2) 2 = -1+1+2 = 2 (正)
(3) 1 = -1+2+2 = 3 (誤り)
(4) 2 = -1+2+3 = 4 (誤り)
(5) 1 = -1+0+0 = -1(誤り)
(6) 2 = -1+0+1 = 0 (誤り)
(7) 1 = -1+0+0 = -1(誤り)
(8) 2 = -1+1+2 = 2 (正)

と言うことで、ウが正解になります。
あまり数式にこだわりすぎると、はまってしまう問題ですねぇ。
ちょっと数式変換が難しそうであれば、直接代入する方法を選択した方が、簡単に解答が得られるかもしれません。
情報処理技術者試験の午前は、1問あたりにかけられる時間は、2分程度です。(正確には、1分52秒程度)
なので、このような問題に時間を割けるように他の問題は素早く解けるようにしておいた方がよいでしょう。

難易度(1(易)~5(難))
4 ちょっとやっかいな問題ですが、愚直な解法で解けるのでこの難易度にしました。

問14 流れずに示す処理の動作の記述として、適切なものはどれか。ここで、二重線は並列処理の同期を表す。

○S


□A

────┴──────
──┬─────┬──
┌──→│ │←──┐
│ ↓ ↓ │
│ □B □C │
│ │ │ │
│ │ ↓ │
│ ──┴──────── │
│ ──┬─────┬─→ │
└───┘ └───┘

ア Aの後にBC又はCB、BC又はCB、・・・と繰り返して実行する。
イ Aの後にBの無限ループ又はCの無限ループになる。
ウ ABC又はACBを実行してデッドロックになる。
エ AB又はACを実行してデッドロックになる。

解答


解説
解説しづらい問題ですねぇ。
私はこの流れ図を以下のように解釈しました。
(1) まずAが実行される。
(2) 次に同期する。(と言っても処理は並列になっていないので、そのまま下に抜ける)
(3) BとCが順番はわからないが並列処理なので共に実行される。
(4) 同期を待つ。
(5) (3)につながる

と言うことで、解答はアになりました。

ちなみに他の選択肢を「違う」と判断する消去法の場合は以下のように考えました。

選択肢イ
Aの後にBの無限ループ又はCの無限ループになる。
BとCの処理は「並列処理」されるので、どちらか一方の無限ループになるのはおかしいと判断しました。

選択肢ウ
ABC又はACBを実行してデッドロックになる。
選択肢エ
AB又はACを実行してデッドロックになる。
選択肢ウ、エについては、「デッドロック」と言う言葉がこの流れ図では出てこないと判断しました。
確かに、「同期」と言う言葉はありますが、「デッドロック」は「排他制御」の時に起きる言葉だと思います。
データベースなどで良くあると思いますが、処理Bが更新中のテーブルを処理Cが参照してしまうとテーブルの内容が保証されないので、処理Bの更新が完了するまで処理Cが処理を中断するような処理です。
まぁ、デッドロックについては、別で出てくればそのとき説明します。


難易度(1(易)~5(難))
1

問15 DDR-SDRAMの特徴として、適切なものはどれか。

ア クロック信号の立ち上がりと立ち下がりの両方に同期して、データを読み出す。
イ 高速ページモードDRAMのページアクセスのサイクル時間を短くして、より高速にデータ転送する。
ウ メモリセルからデータを読み出すとき、一度だけ行アドレスを指定した後、列アドレスを変えながら複数のデータを行バッファから高速に読み出す。
エ メモリバスクロックに同期して、1クロックにつき一つのデータを読み出す。

解答


解説
ハード系の用語問題です。
私の嫌いな分野の一つですねぇ。
まぁ、用語についてはインターネットで調べれば何とかなるので、覚えていきましょう。

DDR-SDRAMは以下のようなものです。(IT用語辞典引用)
ダブルデータレート(DDR)モードという高速なデータ転送機能を持ったSDRAM。コンピュータ内で各回路間の同期を取るためのクロック信号の立ち上がり時と立ち下がり時の両方でデータの読み書きが行なえるようにしたもの。

よって解答はアに成ります。

また、選択肢イは「FPM DRAM」のことらしいです。ちなみにFPMとは、Fast Page Modeのことです。
選択肢ウ、エも調べてみましたが、何に該当するのかわかりませんでした。

コメント
この記事をはてなブックマークに追加

情報処理試験(H20春) ソフトウェア開発技術者 午前問9~10

2008-04-30 | 情報処理
問9 葉以外の節点はすべて二つの子を持ち、根から葉までの深さがすべて等しい木を考える。この木に関する記述のうち、適切なものはどれか。深さとは根から葉に至るまでの枝の個数を表す。

ア 枝の数がnならば、葉を含む節点の個数もnである。
イ 木の深さがnならば、葉の個数は2^(n-1)
ウ 節点の個数がnならば、深さはlog2nである。
エ 葉の数がnならば、葉以外の節点の個数はn-1である。

解答


解説
これもよくでる木の問題ですねぇ。私は大嫌いです。
一応問題文の木は図のようなものでしょうかねぇ。
と一応図は貼っておきますが、まぁ、小さくて見えないので、念のためこんなものも書いてみました。

(*に意味はありません。Web表示したときに変にならないようにしただけの文字です。)


├───────────┐
│**********************│
節**********************節
│**********************│
├────┐************├─────┐
│********│************│**********│
節********節************節**********節
│********│************│**********│
├─┐****├─┐********├─┐******├─┐
│**│****│**│********│**│******│**│
葉**葉****葉**葉********葉**葉******葉**葉

この図は、問題文で言えば、深さが3の木を表しています。
これで選択肢を検証してみましょう。

ア 枝の数がnならば、葉を含む節点の個数もnである。
検証
枝の数は、2+4+8=14になります。
対して、節の個数は、1+2+4+8=15になります。
よって、誤りとなります。

イ 木の深さがnならば、葉の個数は2^(n-1)
検証
深さは3です。葉の数は8ですから、8=2^3!=2^(3-1)
よって、誤りとなります。

ウ 節点の個数がnならば、深さはlog2nである。
検証
節点の個数は、選択肢アで検証したとおり15です。
log215はちょっと求めづらいですねぇ。
15は2^3と2^4の間にあるので、
log215は3から4の間の数になります。
何となく正しいような間違っているような。

エ 葉の数がnならば、葉以外の節点の個数はn-1である。
検証
葉の数は8個です。拝外の節点数は7=8-1です。
何となく正しそうな気がします。
じつは、これが正解なんですねぇ。
「葉以外の節点はすべて二つの子を持ち、根から葉までの深さがすべて等しい木」なので、葉の数は、等比数列になり、具体的には、初項が1、公比が2の等比数列になります。
ただし、初項は深さ0の葉の数を表します。

よって深さと葉の数は以下の式で求められます。

An = 2^n An:葉の数 n:深さ

また、深さnの(葉を含む)節点の数は、公比数列の和で求められるので、以下のように求められます。

Sn-1 = (1-2^(n+1))/(1-2) = 2^(n+1)-1

ここで問題文の葉以外の節点数は2^(n+1)-1-2^nで求まります。この式を変形します。

2^(n+1)-1-2^n = 2*2^2-1-2^n=2^n(2-1)-1 = 2^n-1

となります。2^nは葉の数なので、葉の数-1が葉以外の節点の数になります。
よって、選択肢エが正解になります。
ちなみに各選択肢を正解にする文章は多分以下の通りでしょう。

ア 枝の数がnならば、葉を含む節点の個数はn+1である。
イ 木の深さがnならば、葉の個数は2^n
ウ 葉の個数がnならば、深さはlog2nである。

難易度(1(易)~5(難))
3 私が苦手と言うのも含めて、こんなもんでしょう。


問10 ビット列X1X2X3X4X5X6X7X8X9=010111111とY1Y2Y3=111に対して、次のアルゴリズムで表示されるkの変化はどれか。

k = 1;
d = 1;
while d ≠ 0;
print k;
if Xk ≠ Y1; ------(1)
d = 1;
esle if Xk+1 ≠ Y2; -----(2)
d = 2;
else if Xk+2 ≠ Y3; -----(3)
d = 3;
else
d = 0;
end if
k = k + d; ------(4)
end while;

ア 1,2,3,4
イ 1,2,4
ウ 1,3,4
エ 1,4

正解



解説
この問題は、愚直にやっていくしかないですねぇ。
最初にk = 1、d = 1になっているので、最初は1が表示されますねぇ。
次に(1)の条件式をチェックします。
Xk = X1 = 0
Y1 = 1
if Xk ≠ Y1は成立するので、d = 1に成ります。
(4)式で kは2になります。そして、2が表示されます。
また、(1)の条件式をチェックします。
Xk = X2 = 1
Y1 = 1
if Xk ≠ Y1は成立しないので、(2)の条件式をチェックします。
Xk+1 = X(2+1) = X3 = 0
Y2 = 1
if Xk+1 ≠ Y2;は成立するので、d = 2に成ります。
(4)式でkは4に成ります。そして、4が表示されます。

まぁ、ここまでで1,2,4と表示されるイが正解となります。

難易度(1(易)~5(難))
1
コメント
この記事をはてなブックマークに追加

情報処理試験(H20春) ソフトウェア開発技術者 午前問6~8

2008-04-30 | 情報処理
問6 100人の学生を調べたところ、スペイン語を学んでいるものは18人、ドイツ語は40人、フランス語は42人であった。これらの学生の中で、2言語以上を学んでいるものを調べると、スペイン語とドイツ語は6人、ドイツ語とフランス語は15人、フランス語とスペイン語は5人であり、その中には、3言語すべてを学んでいるものも2人いた。
いずれの言語も学んでいない学生は何人か。

ア 22
イ 24人
ウ 26人
エ 28人

解答



解説
まず、少なくとも1言語以上を学んでいる学生の数を求めましょう。
ベン図を書くとわかりやすいですかねぇ。
スペイン語、ドイツ語及びフランス語の3言語あるので、ベン図の円は3つ必要です。
問題文にあるようにスペイン語、ドイツ語及びフランス語の円に18,40及び42を書き込みましょう。
しかし、スペイン語とドイツ語を学んでいる学生は6人いるので、スペイン語とドイツ語の円の重なった部分に6を書き込みます。そのままにしておくと、スペイン語を学んだ学生が18+6=24人になってしまうので、スペイン語だけの学生を6人(ドイツ語も学んでいる学生分)引いて12人にします。同様にドイツ語も6引いて34人にします。
さらに、ドイツ語とフランス語、フランス語とスペイン語についても同様のことをすると
スペイン語のみ 7
ドイツ語のみ 19
フランス語のみ 22
スペイン語とドイツ語 6
ドイツ語とフランス語 15
フランス語とスペイン語 5

念のため、スペイン語を学んでいる学生数は
スペイン語のみ(7)+スペイン語とドイツ語(6)+フランス語とスペイン(5)=18

同様にドイツ語は
19+6+15=40
フランス語は
22+15+5=42

ここで終わってはいけません。3言語学んでいる学生が2人います。
3つの円が重なった部分に2を入れます。しかしここでも先ほどと同じように2言語だけの学生が多くなってしまうので、2言語の学生の数を2引きます。
3言語 2
スペイン語とドイツ語 4
ドイツ語とフランス語 13
フランス語とスペイン語 3
しかしやっかいなのはこの先ですかねぇ。
この状態でスペイン語を学んでいる学生の数を計算すると
スペイン語のみ(7)+スペイン語とドイツ語(4)+フランス語とスペイン語(3)+3言語(2)=16
そうです、18人のはずの学生数が16人(2人分減)になってしまいます。
これは、3言語学んでいる学生として2加えたことに対して、スペイン語とドイツ語から2、フランス語とスペイン語から2の合わせて4ひいていることがもんだいなのです。ここで引きすぎた2(=4-2)はスペイン語のみの学生に加えます。
つまりスペイン語のみの学生は7+2=9人になります。
これでスペイン語の学生は9+4+3+2=18人になります。
同様にドイツ語、フランス語も計算すると以下のようになります。
スペイン語のみ 9
ドイツ語のみ 21
フランス語のみ 24
スペイン語とドイツ語 4
ドイツ語とフランス語 13
フランス語とスペイン語 3
3言語 2

この合計が、少なくとも1言語以上を学んでいる学生の数になるので、
9+21+24+4+13+3+2=76人

学生全体は100人なので、76を引いた24人がいずれの言語も学んでいない学生の人数になります。

よって解答は、イとなります。

この説明でわかりにくい場合は連立方程式で解くことも可能です。

スペイン語のみの学生数をS
ドイツ語のみの学生数をD
フランス語みの学生数をF
スペイン語とドイツ語のみの学生数をSD
ドイツ語とフランス語のみの学生数をDF
フランス語とスペイン語のみの学生数をFS
3言語の学生数をSDF
と変数を決めます。

S+SD+FS+SDF=18 ・・・(1)(スペイン語を学んでいる人数)
D+SD+DF+SDF=40 ・・・(2)(ドイツ語を学んでいる人数)
F+DF+FS+SDF=42 ・・・(3)(フランス語を学んでいる人数)
SD+SDF= 6 ・・・(4)(スペイン語とドイツ語を学んでいる人数)
DF+SDF=15 ・・・(5)(ドイツ語とフランス語を学んでいる人数)
FS+SDF= 5 ・・・(6)(フランス語とスペイン語を学んでいる人数)
SFD= 2 ・・・(7)(3言語を学んでいる人数)

(4)~(7)から以下の解が求まる。
SD= 4
DF=13
FS= 3

これら(1)~(3)に代入すると
S+SD+FS+SDF=S+4+3+2=18
S = 9
D+SD+DF+SDF=D+4+13+2=40
D = 21
F+DF+FS+SDF=F+13+3+2=42
F = 24
よって、少なくとも1言語以上を学んでいる学生の数は

S+D+F+SD+DF+FS+SDF=9+21+24+4+13+3+2=76

後は100からにいて24が解答となります。

難易度(1(易)~5(難))
1

問7 ハミング符号とは、データに冗長ビットをふかして、1ビットの誤りを訂正できるようにしたものである。ここでは、X1,X2,X3,X4の4ビットから成るデータに、3ビットの冗長ビットP1,P2,P3をふかしたハミング符号X1X2X3P3X4P2P1を考える。付加ビットP1,P2,P3は、それぞれ

X1 Xor X3 Xor X4 Xor P1 = 0
X1 Xor X2 Xor X4 Xor P2 = 0
X1 Xor X2 Xor X3 Xor P3 = 0
となるように決める。ここで、Xorは排他的論理和を表す。
ハミング符号1110011には1ビットの誤りが存在する。誤りビットを訂正したハミング符号はどれか。

解答



解説
これも、計算すれば答えが得られるラッキー問題ですねぇ。
ただし、ちょっとした引っかけ的な要素があるので注意してください。
引っかけ的要素としては以下の2つです。
(1) 付加ビットがデータの中に入っていること。
(2) 付加ビットの並びが、P3,P2,P1となっていること。

これに注意して計算すれば、解答は自然と得られるでしょう。
まず問題文のハミング符号は

1 1 1 0 0 1 1
X1 X2 X3 P3 X4 P2 P1

となります。これらを付加ビットの生成ルールに代入すると以下のようになります。

X1 Xor X3 Xor X4 Xor P1 = 1 Xor 1 Xor 0 Xor 1 = 0 Xor 0 Xor 1 = 0 Xor 1 = 1 (誤り)
X1 Xor X2 Xor X4 Xor P2 = 1 Xor 1 Xor 0 Xor 1 = 0 Xor 0 Xor 1 = 0 Xor 1 = 1 (誤り)
X1 Xor X2 Xor X3 Xor P3 = 1 Xor 1 Xor 1 Xor 0 = 0 Xor 1 Xor 0 = 1 Xor 0 = 1 (誤り)

符号ビットの決め方で下の3式すべてに使われているビットはX1だけなので、X1が誤っていることがわかります。

よって、正しいデータはX1=0、X2=1、X3=1、X4=0となります。

ハミング符号は、0110011となり、正解はアとなります。

これも、ケアレスミスに注意してください。

難易度(1(易)~5(難))
1

問8 式a+bXcの逆ポーランド表記法による表現として、正しいものはどれか。

ア +Xcba
イ X+abc
ウ abcX+
エ cba+X

解答


解説
逆ポーランド表記法も良く出る用語ですねぇ。
これも解説と言うより、私の覚え方を書いておきますので、参考になれば参考にしてください。

逆ポーランド法の私の覚え方は、「数値をスタックにためていき、演算子がきたらスタックから数値を2つだし、計算結果をまたスタックにためる。」です。

選択肢をそれぞれ見ていきましょう。

ア、イは、「演算子」が先にきているので、違うと判断しました。
ウ、エをやってみましょう。
ウ abcX+
(1) まず、aがスタックにためる。 [a]
(2) bもスタックにたまります。 [ba]
(3) cもスタックにたまります。 [cba]
(4) XがくるのでcとbをXし、結果をスタックします。[(c*b)a]
(5) +がくるので、(c*b)とaを+します。
(6) 結果として、c*b+aとなります。
正しそうですねぇ。

エ cba+x
(1) まず、cがスタックにためる。 [c]
(2) bもスタックにたまります。 [bc]
(3) aもスタックにたまります。 [abc]
(4) +がくるのでaとbを+し、結果をスタックします。[(a+b)c]
(5) Xがくるので、(a+b)とcをXします。
(6) 結果として、(a+b)*cとなります。
ちょっと違いますねぇ。

と言うことで、ウが正解です。

難易度(1(易)~5(難))
2 こんなもんですかねぇ。

コメント
この記事をはてなブックマークに追加

情報処理試験(H20春) ソフトウェア開発技術者 午前問1~5

2008-04-29 | 情報処理
問1 16ビットの2進数nを16進数の各桁に分けて、下位のけたから順にスタックに格納するために、次の手順を4回繰り返す。(a),(b)に入る適切な語句の組み合わせはどれか。
ここで、xxxx(16)は16進数xxxxを表す。

[手順]
(1) (a)をxに代入する。
(2) xをスタックにプッシュする。
(3) nを(b)論理シフトする。

┌───────┬──────┐
│ (a) │ (b) │
┌─┼───────┼──────┤
│ア│n AND 000F(16)│左に4ビット │
├─┼───────┼──────┤
│イ│n AND 000F(16)│右に4ビット │
├─┼───────┼──────┤
│ウ│n AND FFF0(16)│左に4ビット │
├─┼───────┼──────┤
│エ│n AND FFF0(16)│右に4ビット │
└─┴───────┴──────┘


解答


解説
問題文の意味が、わかりづらいような気がしますので、念のため問題文の意味を解釈します。

問題文:「16ビットの2進数nを16進数の各桁に分けて」は
例えば、2進数「1010 1011 1100 1101」を16進数「ABCD」のA,B,C,Dに分けてと言うことでしょう。

問題文:「下位のけたから順にスタックに格納する」は
D,C,B,Aの順にスタックに格納する。

と言うことでしょう。

まぁ、ここまで解釈できれば、答えは導けたと同じですねぇ。
上記の例を元にすれば最初に16進数の最下位のけた(D)を取り出すので

・ ABCD(16) AND 000F(16)を取ればよいことになります。

なので、選択肢はア、イに絞られます。

また、次に下二けた目の(C)を最下位のけたにずらし、以下のようにするには、

ABCD(16)->XABC(16) (Xは任意の16進数)

と言うことは、

・nを右に4ビットシフトする。

になり、選択肢はイになります。

個人的には、かなり基本問題だと思います。

難易度(1(易)~5(難))
1


問2 次の浮動小数点表示法がある。小数点は仮数の左にあり、指数は64の"下駄履き表現"であって、値は(-1)^s×0.f×2^(e-64)である。二つの16進数45BF0000と41300000をこの浮動小数点表示法で表現された値として加算した結果はどれか。

31 30 24 23 0
┌─┬────┬────────┐
│s │ e │ f │
└─┴────┴────────┘
↑ ↑ ↑
│ │ └─── 仮数部
│ └───────── 指数部
符号

ア 41EF0000
イ 45C20000
ウ 45EF0000
エ 86EF0000


解答


解説
とりあえず問題文にある2つの数字を2進数に表した、符号、指数部及び仮数部がわかるようにします。
s │ e │ f
45BF0000 0 │100 0101 │ 1011 1111 0000 0000 0000 0000
41300000 0 │100 0001 │ 0011 0000 0000 0000 0000 0000
│ │

「浮動小数の加算は指数部の値を大きい方に合わせる。」ので41300000の2進数表記を以下のように変更されます。

41300000 0 │100 0101 │ 0000 0011 0000 0000 0000 0000

指数部に4を加えたので、仮数部を右に4ビットシフトしました。

そして、2つの数字を加算すればよいことになります。

s │ e │ f
45BF0000 0 │100 0101 │ 1011 1111 0000 0000 0000 0000
41300000 0 │100 0101 │ 0000 0011 0000 0000 0000 0000 (変換後)
加算結果 0 │100 0101 │ 1100 0010 0000 0000 0000 0000

加算結果は 0100 0101 1100 0010 0000 0000 0000 0000
となり、16進数で表すと
45C20000
になります。
よって、解答はイとなります。

個人的には基本問題だと思います。

また、関連用語として、

桁落ち
情報落ち
などがあります。

桁落ちは、同じぐらいの2数の減算を行うと有効数字が減少することです。
具体的には、減算の時も指数部を揃えます。絶対値が同じぐらいなので、結果的にそろっていると思います。
45BF0001と45BF0000の減算を例にすると、

45BF0001 0 │100 0101 │ 1011 1111 0000 0000 0000 0001
45BF0000 0 │100 0101 │ 1011 1111 0000 0000 0000 0000
減算結果 0 │100 0101 │ 0000 0000 0000 0000 0000 0001

となります。しかし、計算結果の仮数部の先頭は1にするように正規化されます。
つまり、この場合仮数部は1000 0000 0000 0000 0000 0000と23ビット左にシフトされます。
すると、指数部は00101110となります。
仮数部の下位ビットがすべて0になってしまうのは数学的な計算をした結果とはおそらく異なります。
この下位のビットが0になってしまうことを桁落ちと言うそうです。

また情報落ちは差の大きい2数の加算をするとき小さい数の仮数部がなくなってしまうことを言います。
例えば45BF0000と05BF0000の加算を例にすると、05BF0000の仮数部を64ビット右にシフトするので0になってしまいます。
45BF0000 0 │100 0101 │ 1011 1111 0000 0000 0000 0000
05BF0000 0 │000 0101 │ 1011 1111 0000 0000 0000 0000
05BF0000 0 │100 0101 │ 0000 0000 0000 0000 0000 0000 (変換後)
計算結果 0 │100 0101 │ 1011 1111 0000 0000 0000 0000

この辺の用語も午前には出そうなので、覚えておきたいですねぇ。

難易度(1(易)~5(難))
1

問3 浮動小数点形式で表現されたx(x>>1)に対して、√(x+1) - √(x)をそのまま計算すると、けた落ちが生じることがある。それを防ぐために変形した式として、適切なものはどれか。

ア 1/(√(x+1) + √(x))
イ √(2x+1 - 2√(x)√(x+1))
ウ √(x)√(x+1)(1/√(x) - 1/√(x+1))
エ (√(x)√(x+1)-x)/√(x)

解答


解説
問2の解説に関連事項的に書いた「けた落ち」の問題ですねぇ。
私自身もよくわかりませんでした。
ここは解説と言うよりは、「私はこう考えた。」的なことを書いておきます。

簡単に言うと、「減算が無いようにする」ような式に変形されていればよいのではないでしょうか。

つまり、「けた落ち」は「同じぐらいの2数の減算を行うと有効数字が減少すること」なので、このような減算がないものを選べばよいのではないでしょうか?

選択肢の中で減算がないのはアなので、解答はアとなりました。

ちょっと解説しづらい問題ですねぇ。

難易度(1(易)~5(難))
4

問4 2けたの2進数x1x2が表す整数をxとする。2進数x2x1が表す整数を、xの式で表したものはどれか。ここで、int(r)は非負の実数rの小数点以下を切り捨てた整数を表す。

ア 2x+4int(x/2)
イ 2x+5int(x/2)
ウ 2x-3int(x/2)
エ 2x-4int(x/2)

解答


解説
あまり数式の変換にこだわると時間を掛けてしまう問題です。この手の問題は良く出ますねぇ。
8パターン程度までの計算なら、計算で答えを求めてしまった方が、確実かもしれません。

この問題の場合、以下の4パターンを試せば良いので早速試してみましょう

┌──┬───┬───┬───────┬─────┐
│ │2進数 │整数 │変換後2進数 │変換後整数│
├──┼───┼───┼───────┼─────┤
│(1) │00 │ 0 │ 00 │ 0 │
├──┼───┼───┼───────┼─────┤
│(2) │01 │ 1 │ 10 │ 2 │
├──┼───┼───┼───────┼─────┤
│(3) │10 │ 2 │ 01 │ 1 │
├──┼───┼───┼───────┼─────┤
│(4) │11 │ 3 │ 11 │ 3 │
└──┴───┴───┴───────┴─────┘

(1) 00
ア 2・0+4int(0/2) = 0
イ 2・0+5int(0/2) = 0
ウ 2・0-3int(0/2) = 0
エ 2・0-4int(0/2) = 0
とりあえず、脱落した選択肢はありませんねぇ。

(2) 01
ア 2・1+4int(1/2) = 2
イ 2・1+5int(1/2) = 2
ウ 2・1-3int(1/2) = 2
エ 2・1-4int(1/2) = 2
ここでも、脱落した選択肢はありませんねぇ。

(3) 10
ア 2・2+4int(2/2) = 8
イ 2・2+5int(2/2) = 9
ウ 2・2-3int(2/2) = 1
エ 2・2-4int(2/2) = 0
この時点で、ウが解答のようですねぇ。

(4) 11
ア 2・3+4int(3/2) = 10
イ 2・3+5int(3/2) = 11
ウ 2・3-3int(3/2) = 3
エ 2・3-4int(3/2) = 2
これで、ウを正解にして良いでしょう。

余談ですが、この手の問題は計算ミスなどのケアレスミスに注意してください。
ケアレスさえ防げれば、解答が得られるチャンス問題みたいなものです。

難易度(1(易)~5(難))
1

問5 XとYの否定論理積X NAND Yは、NOT(X AND Y)として定義される。X OR YをNANDだけを使って表した論理式はどれか。

ア ((X NAND Y) NAND X) NAND Y
イ (X NAND X) NAND (Y NAND Y)
ウ (X NAND Y) NAND (X NAND Y)
エ X NAND (Y NAND (X NAND Y))

解答


解説
この問題も、あまり数式の変換にこだわると時間を掛けてしまう問題です。
以下の4パターンで試してみます。

┌──┬─┬─┬─┐
│ │X │Y │OR│
├──┼─┼─┼─┤
│(1) │0 │0 │ 0│
├──┼─┼─┼─┤
│(2) │0 │1 │ 1│
├──┼─┼─┼─┤
│(3) │1 │0 │ 1│
├──┼─┼─┼─┤
│(4) │1 │1 │ 1│
└──┴─┴─┴─┘

(1) X=0 Y=0 OR=0
ア ((0 NAND 0) NAND 0) NAND 0 = (1 NAND 0) NAND 0 = 1 NAND 0 = 1 ×
イ (0 NAND 0) NAND (0 NAND 0) = 1 NAND 1 = 0 ○
ウ (0 NAND 0) NAND (0 NAND 0) = 0 ○ (イと同じなので途中は省略)
エ 0 NAND (0 NAND (0 NAND 0)) = 0 NAND (0 NAND 1) = 0 NADN 1 = 1 ×

(2) X=0 Y=1 OR=1
ア ((0 NAND 1) NAND 0) NAND 1 = (1 NAND 0) NAND 1 = 1 NAND 1 = 0 ×
イ (0 NAND 0) NAND (1 NAND 1) = 1 NAND 0 = 1 ○
ウ (0 NAND 1) NAND (0 NAND 1) = 1 NAND 1 = 0 ×
エ 0 NAND (1 NAND (0 NAND 1)) = 0 NAND (1 NAND 1) = 0 NAND 0 = 0 ×

と、ここまでで解答はイとわかりました。念のため(3)、(4)もやっておきましょう。

(3) X=1 Y=0 OR=1
ア ((1 NAND 0) NAND 1) NAND 0 = (1 NAND 1) NAND 0 = 0 NAND 0 = 1 ○
イ (1 NAND 1) NAND (0 NAND 0) = 0 NAND 1 = 1 ○
ウ (1 NAND 0) NAND (1 NAND 0) = 1 NAND 1 = 0 ×
エ 1 NAND (0 NAND (1 NAND 0)) = 1 NAND (0 NAND 1) = 1 NAND 1 = 0 ×

(4) X=1 1=1 OR=1
ア ((1 NAND 1) NAND 1) NAND 1 = ( 0 NAND 1) NAND 1 = 1 NAND 1 = 0 ×
イ (1 NAND 1) NAND (1 NAND 1) = 0 NAND 0 = 1 ○
ウ (1 NAND 1) NAND (1 NAND 1) = 1 ○
エ 1 NAND (1 NAND (1 NAND 1)) = 1 NAND (1 NAND 0) = 1 NAND 1 = 0 ×

難易度(1(易)~5(難))
1
コメント
この記事をはてなブックマークに追加

情報処理試験の解答用紙に見る主催者の優しさ

2007-11-23 | 情報処理

情報処理試験の解答用紙に見る主催者の優しさ

情報処理試験(平成19年度 秋期試験)から一ヶ月ほどたった。
初級シスアドなどの合格発表もあり、既に遠い過去のものになってしまったように感じる今日この頃だ。

さて、久しぶりの情報処理試験に対するブログだが、今日は試験問題についてではなく、解答用紙(午前のマークシート)から試験主催者の優しさ、と言うか情報処理試験がいかに受験者に対して優しい試験かについて述べたいと思う。

情報処理試験の午前の問題はどのカテゴリも四択問題のマークシート方式である。

このマークシートの解答用紙の背景色は、五問ごとに赤白互い違いになっているのをご存じだろうか?

ご存じの方もそうでない方もいらっしゃるであろうが、

    「それが、主催者の優しさとどうつながるのか?」

とまぁ、つっこみの声が聞こえそうであるが、しばらくお付き合いいただこう。

話を少し変えるが、マークシートの試験と聞くとおそらく「センター試験」を思い出す方も多いだろう。

このセンター試験の解答用紙、これこそ私にとっては遠い過去のものであるがたしか背景色は白一色だったと記憶している。

この背景色の違いに、私は主催者の優しさの違いを感じてしまうのである。

ここまで書いても、まだ読者の中には、「たかが五問ごとに確認できるだけで、それが優しさか?」とおっしゃっている方もいると思うが、これが「優しさ」でなく何であろう。(と、私は思っている。)

つまり、情報処理試験の主催者は、「マークの位置ずれてませんよねぇ。5問ごとでも良いので確認してくださいねっ」と言っているようである。(少なくとも私はそう感じるのである。)

これに対して、センター試験主催者は「マークの位置?、自分で確認しろよっ」、「大学受験に何求めてんのよぉ~~」と言っているようである。

まぁ、深読みしすぎなのかもしれないが、こう読めなくもないと言いたいのだ。

要するにわたしが言いたいのは、

    マークの位置はこまめにチェックしましょう

と言うことである。

まぁ、どうでもよい話ではあるが...

 

 

コメント
この記事をはてなブックマークに追加

たけしのコマネチ大学

2007-04-28 | 情報処理
先週の「たけしのコマネチ大学」の類似問題が、情報処理試験にも出て
いたようなのでしょう介します。

「たけしのコマネチ大学」の問題はこんな感じでした。

問題
  ホテルの扉に「4」と「9」を使わないで番号をつけていく時
  500番目の部屋は何号室でしょうか?

私の考え方
  「「4」と「9」を使わない」と言うことなので、使って良い番号は、
  「0」「1」「2」「3」「5」「6」「7」「8」の8個の数字です。
  この時点で、頭の中では、「あぁ、8進数ねっ!」って思いました。

  16番目の部屋番号はこんな感じになります。

  番目  部屋番号
  1    1
  2    2
  3    3
  4    5
  5    6
  6    7
  7    8
  8    10
  9    11
  10   12
  11   13
  12   15
  13   16
  14   17
  15   18
  16   20

これを見ると、8番目と16番目で部屋番号の2桁目がインクリメントされ
ているとことがわかります。
なので、「8進数」と言うキーワードが出てきます。

しかし、ここで一ひねりあるのでは普通の8進数は、「0」~「7」までの
一連の8個の数字に対して、問題の8進数はちょっと特別なものと言うこ
と。
ここで、ちょいとした変換表が必要になります。
  普通の8進数 今回の8進数
    0      0
    1      1
    2      2
    3      3
    4      5
    5      6
    6      7
    7      8

一応私の脳内では、「各桁の数値が普通の8進数に変換して、4以
上の数字は、1足す」と言うコンバートをしました。

なので、この問題は、

  500を一度普通に8進数に変換して、その後対応表で数値を変換する

で求められると思います。

  「500」を8進数にすると「764」

になります。(変換方法は別の機会に説明します。)

この「764」を変換表に照らし合わせると、「875」となります。

さてここからが、情報処理午前の対策的な話です。

この問題はちょっと易しすぎですねぇ。
なぜかと言えば、普通の8進数が「764」と使ってはいけない「4」が入っ
ているので、ちょっと注意すれば、この数値は解答になり得ないことは
すぐわかります。

さらに、注意深く考えれば、「4」->「5」に変換した時に、他の「7」
「6」も変換する必要はあるのでは?
と思い、結果的に、「875」が導き出せます。

情報処理試験的には答えが、普通の8進数にしたときに「725」とか使っ
てはいけない番号がないような答えになるようにすると思います。(この
場合、「4」「9」を使わないと「826」が答えになります。そのときの番
目は、「469番目」になります。)

この469番目で問題を作った時選択肢に以下の3つは欠かせないでしょう。

  725 普通の8進数(8進数に変換した時点であわてた受験者が飛びつ
  く)
  826 正解
  836 全部の桁に1を足す。(あわてて変換表の意味がわからなくなり、
  パニクッた受験生が選択する。)

あと一つ(情報処理試験(午前)は通常4択問題))は、469にでもしておきま
すかぁ。

また、逆の問題(部屋番から番目を求める問題)も出題されるかもしれま
せん。

想定問題
  ホテルの扉に「4」と「9」を使わないで番号をつけていく時
  826号室は何番目の部屋でしょうか?

この場合の解法
  ・各桁で5以上の数値を使っているところから1引く(826->725)
  ・725は8進数なので、10進数に変換する。

結果答えは、469番目となる。

こんな感じです。

特に、理科系が得意な方や、私のように「国語が苦手(っていうか日本語
がダメ?)」な受験生は、このような計算問題は取りこぼさないようにし
たいところです。

では、
コメント
この記事をはてなブックマークに追加

2007春ソフトウェア開発技術者試験 午前の私の解答解説(その1)

2007-04-21 | 情報処理

問1 

解答
  私の解答:イ
  正解  :イ

私の解法
  選択肢を読んでいるとどれも同じように見えてきてしまいました。
  こういう問題は、選択肢を読む前にもう一度問題文を理解しましょう。
  問題文を私なりに要約すると、

    32ビットの取り得る範囲から外れるのはどれか?

  となりました。
  では、「32ビットの取り得る範囲」とは、

    -(2^31) ≦ X ≦ (2^31)-1  ・・・・・・(1)
      ※ 演算子^は、べき乗を表します。

  です。

  と言うことは、この条件(1)を外れるものを探せばよいので、以下の条件を満たす選択肢を探せばよいことになります。

      X < - (2^31)   ─┐
                     │  ・・・・・(2)
      X > (2^31)-1  ─┘

  ここで選択肢を見ると、条件(2)と少し違っています。どのように違うかというとすべての選択肢が次の2つのようになっています。

    (ア) 絶対値について聞かれている
    (イ) 範囲の上限が(2^31)である。(((2^31)-1)がないと言うこと。)

  と言うことで、条件(2)を絶対値で表現する形に変形します。
  
    |X| > (2^31 )  (X < 0)   ─┐
                           │  ・・・・・(3)
    |X| > |(2^31)-1|  (X ≧ 0) ─┘
  
  さらに、この条件(3)の下段の条件を(2^31)だけで表せないか考えます。
  まぁ、考えるほどのことはないですねぇ。
  まずこの条件(3)の下段の条件式を日本語で言えば、

    (2^31)-1より大きい
  
  ここで取り扱っている数値は「整数」なので、この条件は以下のように置き換えられます。

    (2^31)以上

  と言うことで条件式(3)は以下のように置き換えられます。

    |X| > (2^31 )  (X < 0)   ─┐
                           │  ・・・・・(4)
    |X| ≧ |(2^31 )|  (X ≧ 0) ─┘

  と言うことで、この条件式に当てはまる選択肢は、「イ」となります。

問2

解答
  私の解答:ウ
  正解  :イ

 の解法
  直感で、「ウ」と解答してしまいました。
  でも違ったみたいです。答えは「イ」のようです。
  問題文のXに0.0がでもYに0.0~1.0までのどの数値が出る確率は一様です。
  当然Xに0.5が出たときも1.0が出たときもYに0.0~1.0までのどの数値が出る確率は一様です。
  なので、Zに1.0が一番多く現れるのは解りました。
  まぁ、表計算ソフトで計算してみたら、「イ」のグラフになりました。
  この問題は不正解でしたねぇ。

問3

解答
  私の解答:エ
  正解  :エ

私の解法
  過去問でよく見かける問題ですねぇ。
  まずは、「雨の2日後がはれ」になるすべての場合を書き出すと、以下の3通りになります。

  「雨」→「晴れ」→「晴れ」 ・・・・・(1)
  「雨」→「曇り」→「晴れ」 ・・・・・(2)
  「雨」→「雨」→「晴れ」  ・・・・・(3)

  (1)になる確率は、「雨」→「晴れ」 = 30% 、「晴れ」→「晴れ」= 40%、なので30%x40%=12%

  (2)になる確率は、「雨」→「曇り」 = 50%、「曇り」→「晴れ」=30% 、なので、50%x30%=15%

  (3)になる確率は、「雨」→「雨」= 20%、「雨」→「晴れ」= 30%、なので、20%x30%=6%

  この(1)、(2)、(3)の確率を合計すると、33%となり、答えは、「エ」となります。

 

コメント
この記事をはてなブックマークに追加

結局不合格でした

2005-12-16 | 情報処理
数ヶ月ぶりにカテゴリ「情報処理」をアップします。

昨日情報処理の合格発表がありました。(受験区分は「プロマネ」です)

タイトル通り「不合格」でした。

まぁ、合格者の受験番号に自分の受験番号がないことは「別にぃ」くらい
受け入れられたのですが、最近は得点までわかるので、

「でっ、結局午前は何点で落ちたのかなぁ」

と思ってみたら、「605点」でした。

「???、午前は突破したんだぁ」で、午後1,2と見ると「660点」、「B」

とのこと。

えっ、論文が「B」で不合格!

「オイオイ、「B」ならオマケで「A」にして「合格」させてくれよぉ!」
(ちなみに発表された統計値では、このパターンの人が500人ぐらいいるらしい)

と思いました。

ちなみに論文の判定区分とその基準は以下の通りです。

A  合格水準にある
B  合格水準まであと一歩である
C  内容が不十分である
D  出題の要求から著しく逸脱している

あぁ、また来秋がんばるかぁ!

っとその前に来春の情報セキュリティもがんばるかぁ

じゃーねー
コメント
この記事をはてなブックマークに追加