ITパスポート試験の令和6年公開問題より、問81~問85(テクノロジ系)の解答解説を掲載します。
テキストではなく、動画解説を希望される方は下記YouTubeをご覧ください。
目次
【問81】正規化 -データベース
問題
一つの表で管理されていた受注データを、 受注に関する情報と商品に関する情報に分割して、 正規化を行った上で関係データベースの表で管理する。
正規化を行った結果の表の組合せとして、最も適切なものはどれか。 ここで、同一商品で単価が異なるときは商品番号も異なるものとする。 また、発注者名には同姓同名はいないものとする。
解答
エ
解説
「受注データを、 受注に関する情報と商品に関する情報に分割」との問題文の指示により、
「受注表」と「商品表」に分けることを考えます。
・受注表の主キー→受注番号
受注番号に紐づくもの
→発注者名、商品番号、個数
・商品表の主キー→商品番号
商品番号に紐づくもの
→商品名、単価
※なお、「受注番号に紐づくもの」とは、
ユニーク(一意)である受注番号が決まると、自然に決定する項目のことです。
【問82】ISMSクラウドセキュリティ認証 -セキュリティ
問題
ISMSクラウドセキュリティ認証に関する記述として、適切なものはどれか。
ア 一度認証するだけで、複数のクラウドサービスやシステムなどを利用できるようにする認証の仕組み
イ クラウドサービスについて、クラウドサービス固有の管理策が実施されていることを認証する制度
ウ 個人情報について適切な保護措置を講ずる体制を整備しているクラウド事業者などを評価して、事業活動に関してプライパシーマークの使用を認める制度
エ 利用者がクラウドサービスへログインするときの環境、 IPアドレスなどに基づいて状況を分析し、リスクが高いと判断された場合に追加の認証を行う仕組み
解答
イ
解説/他の選択肢
ア→SSO(シングル・サイン・オン)の説明です。
ウ→プライバシーマーク制度の説明です。
エ→リスクベース認証の説明です。
d→× パターンロック認証のこと
【問83】確率 -基礎理論
問題
1から6までの六つの目をもつサイコロを3回投げたとき、 1回も1の目が出ない確率は幾らか。
解答
エ
解説
(1)サイコロを1回投げて1が出ない確率は5/6
(2) (1)が3回続けて起きる確率は
5/6×5/6×5/6 = 125/216
【問84】マルチホップ -ネットワーク
問題
IoTエリアネットワークでも利用され、IoTデバイスからの無線通信をほかのIoTデバイスが中継することを繰り返し、リレー方式で通信をすることによって、広範囲の通信を実現する技術はどれか。
ア GPS
イ MIMO
ウ キャリアアグリゲーション
エ マルチホップ
解答
エ
解説/他の選択肢
ア GPS
→Global Positioning Systemと訳され、人工衛星のネットワークによる世界的規模の測位システムです。カーナビなどで使われています
イ MIMO
→Multi-Input Multi-Outputと訳され、同時に複数のアンテナを利用してデータの送受信を行うことで、データ通信速度の向上や通信容量を拡大させる無線通信技術のことです
ウ キャリアアグリゲーション
→電波(搬送波)を2本分まとめて利用して大容量のデータを転送する技術のことです
【問85】擬似言語 -アルゴリズムとプログラミング
問題
関数 binaryToIntegerは,1桁以上の符号なし2進数を文字列で表した値を引数binaryStrで受け取り、その値を整数に変換した結果を戻り値とする。 例えば, 引数として“100”を受け取ると,4を返す。 プログラム中の a, b に入れる字句の適切な組合せはどれか。
[プログラム]
001○整数型: binaryToInteger (文字列型: binaryStr)
002 整数型: integerNum, digitNum, exponent, i
003 integerNum←0
004 for (i を 1 から binaryStr の文字数まで 1ずつ増やす)
005 digitNum ← binaryStr の末尾からi番目の文字を整数型に変換した値
006 // 例: 文字“1”であれば整数値1に変換
007 exponent ← 【 a 】
008 integerNum←【 b 】
009 end for
010 return integerNum
解答
エ
解説
●本問の考え方
——————————————————
1:本問は2進数を10進数に変換するプログラムである
2進数を10進数に変換する際のアルゴリズムは次のとおり
①2進数各桁の数値(0or1)に各桁の重みを乗じ、各桁の整数(10進数)での値を求める
②求めた各桁の値を合計する
2:今回のような問題の場合、実際にカンタンな数値を入れて考えることを推奨する
ここでは、問題文に例示があるように
・引数:“100”(→2進数を文字列で表した値)
・戻り値:4 (→整数=10進数) とする
——————————————————-
●以下より解説(本文)開始
4行目、forループの繰り返し条件は
「i を 1 から binaryStr の文字数まで 1ずつ増やす」
今回、引数は”100”なので、 binaryStrの文字数は3
よって forループの継続条件は
「iを1から3まで 1ずつ増やしながら3回ループを実行する」となる
続いて、3回実行するforループの実行内容が5行目~8行目(6行目はコメントなので無視)
●以下、ループ1回目を実行する
まず5行目は、binaryStrの末尾から1番目の文字を整数型に変換した値(”100”の末尾の0)をdigitNumに代入する
続いて7行目、aの選択肢には「2の(i-1)乗」が入る
↓↓【aに「2の(i-1)乗」が入る理由】↓↓
———————————————————
※7行目の空欄aの候補は
「(2のi乗)-1」 または 「2の(i-1)乗」の2つしかない
これらの候補の内容から、空欄aでは2進数の各桁の重みを計算すると推定できる
2進数の重みは
1桁目は、2の0乗=重みは1
2桁目は、2の1乗=重みは2
3桁目は、2の2乗=重みは4
以上のように、各桁の重みは「2の(i-1)乗」で計算できる。よって「2の(i-1)乗」が適切
———————————————————
続いて8行目、2進数の桁の重み(=exponent)に、その桁の数値(digitNumのこと、2進数の場合は1or0)をかけることで、その桁の10進数としての値を求める
1回目のdigitNumの値は0であるから、これに「桁の重み1」をかけても0
この0を各桁の10進数に変換した値を合計するintegerNumに加える必要がある
よってbには
integerNum + digitNum × exponent が入る
上記は0+0×1=0 よって、8行目ではintegerNumに0を代入することになる
●実行2回目
5行目と7行目までの流れは前回と同じ
8行目では、これまでのintegerNumの値(0)に、新たに求めた”100”の中央の0(digitNum)に桁の重み(2)を掛けたものを加える
よってbは integerNum + digitNum × exponent のため
0+0×2=0
今回もintegerNumに0を代入することになる
●実行3回目
5行目と7行目までの流れは前回と同じ
8行目では、これまでのintegerNumの値(0)に、新たに求めた”100”の1番左の1(ditidigitNum)に桁の重み(4)を掛けたものを加える
よってbは integerNum + digitNum × exponent のため
0+1×4
今回、integerNumに4を代入することになる
以上でforループ終わり 10行目でintegerNum の値である4を戻り値とする