出典:平成27年度 ITパスポート試験(IP) 春期分 問87
予備知識
| 用語 | 意味 |
|---|---|
| ICカード | 集積回路(IC)がくっついていて、情報を保管したり何かいろいろ処理をさせたりできるカード |
| ICカードリーダ | ICカードの中身を読み取る機械 |
| データベース | データがそれっぽい感じに入っている箱 |
| レコード | 行列で表現される表の「行」のこと。もしくは、データベースに入っているデータ |
問題
| 中問A |
|---|
| ICカードによる入退室管理に関する次の記述を読んで,四つの問いに答えよ。 P社は,セキュリティを確保するために自社ビルを10の区画に分け,各区画への入退室をICカードで行うシステムを導入し,その管理方法についての検証を始めた。このICカードを使った入退室管理(以下,入退室管理という)の概要は次のとおりであり,入退室管理で用いるデータベースの構造(一部)を図1に示す。 [入退室管理の概要] (1)社員は一つの部署に所属し,ICカードを1人1枚貸与される。ICカードはカード固有のICカード番号をもつ。ICカードの情報はICカード登録表に登録される。 (2)社員の入退室が許可されている区画は個別に決められており,許可された区分の情報が入退室許可表に登録される。入退室が可能な場合で,その区画が所属部署の入っている区画の場合は"1",それ以外で入退室が必要と認められた区画の場合は"2"が,入退室許可表の許可区分に登録される。 (3)各区画にはICカードリーダが設置されており,入退室が許可されたICカード番号を読み取ったときだけドアを解錠し,入退室の記録を入退室記録表に記録する。このとき,入室の場合は"1",退室の場合は"-1"を入退室記録表の入退室区分に記録する。 なお,P社は,社員に対して午前0時までに退社することを義務づけている。 ![]() |
| ピヨ意訳:ICカードを使った入退室管理に関する話だよ。以下の文章を読んで、問題に答えてね。 ピヨピヨカンパニーでは、自社ビルを10の区画に分けて、それぞれの区画へ入退室するときにICカードでピッ!とやるシステムを導入し、その管理方法について検討を始めたよ。このICカードを使った入退室管理の概要は次のとおりだよ。また、入退室管理システムで使うデータベースの構造の一部を図1に示すよ。 [入退室管理の概要] (1)それぞれの社員は1つの部署に所属し、1人1枚ICカードを貸し出される。ICカードはカードごとにICカード番号をもつ。ICカードの情報は「ICカード登録表」に登録される。 (2)社員ごとに入退室できる区画は決められていて、入退室OKな区画の情報が「入退室許可表」に登録される。入退室OKで、その区画が自分の所属する部署が入っている区画の場合は「1」が「入退室許可表」の「許可区分」の項目に登録される。自分の所属する部署は入っていないけど入退室が必要と認められた区画の場合は「2」が「入退室許可表」の「許可区分」の項目に登録される。 (3)各区画にはICカードリーダが設置されていて、入退室OKのICカード番号を読み取ったときだけドアのカギが開き「入退室記録表」に入退室の履歴が記録される。入室の場合は「1」が「入退室記録表」の「入退室区分」の項目に記録される。退室の場合は「-1」が「入退室記録表」の「入退室区分」の項目に記録される。 なお、ピヨピヨカンパニーでは、社員に対して「午前0時までに退社しろよ!」と義務づけている。 ![]() |
| 問題文 |
|---|
| P社では,一度の解錠で同時に複数の社員が入退室することがあり,入室と退室の記録の数が合わないという問題が発生していることが分かった。そこで,毎日,入退室記録表を使って,前日の入退室の回数が一致しない社員がいないかどうかを確認することにした。次に示す入退室確認では,前日の日付で,同一区画での入室と退室の回数が一致していないICカード番号を調べる手順を示している。a,bに入れる字句の適切な組合せはどれか。 [前日の入退室確認] (1)入退室年月日が前日の日付であるレコードを全て取り出し,ICカード番号の昇順で,かつ,区画番号の同じレコードが並ぶように整列する。 (2)(1)で整列したレコードに対して,ICカード番号と区画番号が同じレコードごとに,それらの【a】し,その結果の値とICカード番号及び区画番号とを併せて表として記録する。 (3)(2)で記録した【a】した値が【b】ICカード番号と区画番号を出力する。 |
| ピヨ意訳:1人がカードをピッ!ってやって、鍵が開いたら2、3人が一緒に入退室することがあり、記録上の入室と退室の数が合わない問題が発生したよ。そこで、毎日「入退室記録表」を見て、前日の入退室の回数が一致しない社員がいないか確認することにしたよ。確認の手順は以下の通りだよ。「a」と「b」に入る組み合わせは、どれ? (1)入退室年月日が前日のデータを全て取り出し、ICカード番号の昇順、かつ、区画番号の同じデータが並ぶように整列する。 (2)(1)で整列したデータに対して、ICカード番号と区画番号が同じデータごとに、それらの【a】し、その結果の値とICカード番号及び区画番号とを併せて記録する。 (3)(2)で記録したデータの中から【a】した値が【b】ICカード番号と区画番号を出力する。 |
| 解答選択肢 | |
|---|---|
| ア | 【a】区画番号が1の場合は1を加算し,2の場合は2を加算【b】奇数である |
| ピヨ意訳:- | |
| イ | 【a】入退室区分の値を合計【b】0ではない |
| ピヨ意訳:- | |
| ウ | 【a】入退室時刻の入室と退室の時刻差を合計【b】24時間を超える |
| ピヨ意訳:- | |
| エ | 【a】レコードの個数を計数【b】偶数である |
| ピヨ意訳:- | |

正解
| 正解 | |
|---|---|
| イ | 【a】入退室区分の値を合計【b】0ではない |
| ピヨ意訳:- | |
ピヨピヨ解説
この手の処理に慣れていれば直感的に解けそうですね。
ポイントは「入退室記録表」の「入退室区分」に記録される値が
入室の場合:1
退室の場合:-1
だという点です。
なんで「0」とかではなく、わざわざ「-1」を使っているのでしょうね。
ここに違和感を覚えて注目できれば正解は目前です。
入室が「1」で退室が「-1」なのです。
足して「0」です。
やりたいことは「入室の回数と退室の回数が一致しているかな?」のチェックです。
つまり、全ての入退室履歴の「入退室区分」の値を合計して「0」であれば、それは(「入室→入室→退室→退室」のような不整合に目をつぶることにはなりますが)入室の回数と退室の回数が一致していると判断できます。
ということで「イ:【a】入退室区分の値を合計【b】0ではない」が正解です。
……というのが横着した解き方です。
一応、地道に穴埋めしたやり方もやっておきましょう。
「ア:【a】区画番号が1の場合は1を加算し,2の場合は2を加算【b】奇数である」を入れると、前日の入退室確認の文章は
[前日の入退室確認]
(1)入退室年月日が前日の日付であるレコードを全て取り出し,ICカード番号の昇順で,かつ,区画番号の同じレコードが並ぶように整列する。
(2)(1)で整列したレコードに対して,ICカード番号と区画番号が同じレコードごとに,それらの【区画番号が1の場合は1を加算し,2の場合は2を加算】し,その結果の値とICカード番号及び区画番号とを併せて表として記録する。
(3)(2)で記録した【区画番号が1の場合は1を加算し,2の場合は2を加算】した値が【奇数である】ICカード番号と区画番号を出力する。
になります。
区画番号をアレコレしても入退室に関するアレコレは分かりません。
違います。
「イ:【a】入退室区分の値を合計【b】0ではない」を入れると、前日の入退室確認の文章は
[前日の入退室確認]
(1)入退室年月日が前日の日付であるレコードを全て取り出し,ICカード番号の昇順で,かつ,区画番号の同じレコードが並ぶように整列する。
(2)(1)で整列したレコードに対して,ICカード番号と区画番号が同じレコードごとに,それらの【入退室区分の値を合計】し,その結果の値とICカード番号及び区画番号とを併せて表として記録する。
(3)(2)で記録した【入退室区分の値を合計】した値が【0ではない】ICカード番号と区画番号を出力する。
になります。
これはOKです。
理由は上で書いた通りです。
「ウ:【a】入退室時刻の入室と退室の時刻差を合計【b】24時間を超える」を入れると、前日の入退室確認の文章は
[前日の入退室確認]
(1)入退室年月日が前日の日付であるレコードを全て取り出し,ICカード番号の昇順で,かつ,区画番号の同じレコードが並ぶように整列する。
(2)(1)で整列したレコードに対して,ICカード番号と区画番号が同じレコードごとに,それらの【入退室時刻の入室と退室の時刻差を合計】し,その結果の値とICカード番号及び区画番号とを併せて表として記録する。
(3)(2)で記録した【入退室時刻の入室と退室の時刻差を合計】した値が【24時間を超える】ICカード番号と区画番号を出力する。
になります。
そもそもの話として「入退室年月日が前日の日付」のものを取り出しているのです。
入室と退室の時刻差が24時間を超えるわけがありません。
仮に入室と退室の時刻差が24時間を超えるデータがあったとしても、日をまたいでいるので、入室のデータか退室のデータのどちらかが「入退室年月日が前日の日付であるレコード」に含まれません。
違います。
「エ:【a】レコードの個数を計数【b】偶数である」を入れると、前日の入退室確認の文章は
[前日の入退室確認]
(1)入退室年月日が前日の日付であるレコードを全て取り出し,ICカード番号の昇順で,かつ,区画番号の同じレコードが並ぶように整列する。
(2)(1)で整列したレコードに対して,ICカード番号と区画番号が同じレコードごとに,それらの【レコードの個数を計数】し,その結果の値とICカード番号及び区画番号とを併せて表として記録する。
(3)(2)で記録した【レコードの個数を計数】した値が【偶数である】ICカード番号と区画番号を出力する。
になります。
正しく入室して退室したらレコードの個数は2件です。
偶数です。
おっと、出力対象になってしまいましたよ。
出力したいのは「前日の日付で,同一区画での入室と退室の回数が一致していないICカード番号」です。
このやり方でやりたければ「奇数」のデータを取り出すべきでしょう。
違います。
ということで「イ:【a】入退室区分の値を合計【b】0ではない」が正解です。







