P 社は,セキュリティを確保するために自社ビルを 10 の区画に分け,各区画への入退室を IC カードで行うシステムを導入し,その管理方法についての検証を始めた。この IC カードを使った入退室管理(以下,入退室管理という)の概要は次のとおりであり,入退室管理で用いるデータベースの構造(一部)を図 1 に示す。 〔入退室管理の概要〕 (1) 社員は一つの部署に所属し,IC カードを 1 人 1 枚貸与される。IC カードはカード固有の IC カード番号をもつ。IC カードの情報は IC カード登録表に登録される。 (2) 社員の入退室が許可されている区画は個別に決められており,許可された区分の情報が入退室許可表に登録される。入退室が可能な場合で,その区画が所属部署の入っている区画の場合は “1”,それ以外で入退室が必要と認められた区画の場合は “2” が,入退室許可表の許可区分に登録される。 (3) 各区画には IC カードリーダが設置されており,入退室が許可された IC カード番号を読み取ったときだけドアを解錠し,入退室の記録を入退室記録表に記録する。このとき,入室の場合は “1”,退室の場合は “−1” を入退室記録表の入退室区分に記録する。 なお,P 社は,社員に対して午前 0 時までに退社することを義務づけている。 P社では,一度の解錠で同時に複数の社員が入退室することがあり,入室と退室の記録の数が合わないという問題が発生していることが分かった。そこで,毎日,入退室記録表を使って,前日の入退室の回数が一致しない社員がいないかどうかを確認することにした。次に示す入退室確認では,前日の日付で,同一区画での入室と退室の回数が一致していないICカード番号を調べる手順を示している。a,bに入れる字句の適切な組合せはどれか。 〔前日の入退室確認〕 (1) 入退室年月日が前日の日付であるレコードを全て取り出し,ICカード番号の昇順で,かつ,区画番号の同じレコードが並ぶように整列する。 (2) (1)で整列したレコードに対して,ICカード番号と区画番号が同じレコードごとに,それらの a し,その結果の値とICカード番号及び区画番号とを併せて表として記録する。 (3) (2)で記録した a した値が b ICカード番号と区画番号を出力する。
平成27年度 春期 ITパスポート試験 問87
这道题的解析和你的作答记录。
問 87
※ 编写解析时的验算未能完全确认公布答案;判定仍按 IPA 公布的答案。
错误ア
即使按区划号的值(为1则加1,为2则加2)累加,被加上的值也只由区划号决定,完全不反映该条记录是进入还是离开。合计只会等于「区划号 × 记录条数」,与进入和离开的差无关。例如在区划号为1的区划中,即使出现进入2次、离开0次这种明显不一致的情况,合计也是2,为偶数,不符合 b=「为奇数」,因而会被漏掉。而且在区划号为2的区划中,合计始终是 2 × 记录条数,必定为偶数,所以在该区划中一件不一致也抽取不出来。此外,大楼共有10个区划,但加法规则只对区划号为1和2的情况作了定义,作为步骤本身也不成立。
- イ
正解 大题A的前言〔进出管理概要〕(3)中规定,进出记录表的进出区分在进入时记录「1」,离开时记录「−1」。因此在步骤(2)中,按IC卡号与区划号相同的每组记录对进出区分的值求和(汇总)后,该合计表示 (进入次数)×1 + (离开次数)×(−1) =「进入次数 − 离开次数」。若进入与离开的次数一致,合计恰好为0;若不一致,则会留下非0的值(进入多则为正,离开多则为负)。因此 a 处填入「对进出区分的值求和」,b 处填入「不为0」,在步骤(3)中输出合计不为0的IC卡号与区划号,就能不重不漏地抽取出前一天在同一区划内进出次数不一致的员工。这就是选项イ。从合计值的符号与绝对值还能看出是哪一方多出几次,这也是这种带符号编码设计的优点。
错误ウ
进出记录表的1条记录只保存一次进入或一次离开中的一方,因此以记录为单位求「进入与离开的时刻差」这件事本身就做不到,a 的汇总操作不成立。条件 b 也不符合目的。P公司要求员工在凌晨0点之前离开公司,所以由前一天一天份的记录求得的同一区划停留时间合计不可能超过24小时,按这个标准什么也输出不了。况且停留时间的长短,本来就与进出次数是否一致是两回事。
错误エ
数记录的个数所得到的是「进入次数 + 离开次数」,无从知道其中进入了几次、离开了几次。个数的奇偶无法判定次数是否一致。例如进入2次、离开1次时次数并不一致,但个数为3是奇数,不满足 b=「为偶数」,因而抽取不出来而被漏掉。反过来,进入1次、离开1次这类正常情况个数为2是偶数,本不该输出却会被大量输出。这个基准既会漏检又会误报,与目的不符。
- 把成对的事件(进入与离开)用 +1 / −1 这样带符号的区分代码记录下来,就能仅凭合计是否为0一次性判定有无过与不足。合计为0=一一对应,非0=某一方偏多,这是设计上的常用套路。
- 汇总处理的基本形式是「排序 → 按键的组合汇总 → 只选出符合条件的行并输出」,要点在于按哪些列的组合进行分组。本题是按IC卡号与区划号的组合进行汇总,因此在步骤(1)中预先按IC卡号升序、且使区划号相同的记录相邻的方式进行排序。