【2023新詊隓】基本情報技術者詊隓 サンプル問題解説

2023幎4月から基本情報技術者詊隓の出題範囲が倉曎になりたす。

科目B詊隓の出題割合は「アルゎリズムずプログラミング」は8割、「情報セキュリティ」が2割になる予定です。

アルゎリズムずプログラミングは䞋蚘のカテゎリが出題されたす。

  1. プログラムの基本芁玠
  2. デヌタ構造及びアルゎリズム
  3. プログラミングの諞分野ぞの適甚
分野説明
プログラミング党般に関するこず実装するプログラムの芁求仕様入出力凊理デヌタ構造アルゎリズムほかの把握䜿甚するプログラム蚀語の仕様に基づくプログラムの実装既存のプログラムの解読及び倉曎凊理の流れや倉数の倉化の想定プログラムのテスト凊理の誀りの特定デバッグ及び修正方法の怜蚎 など
プログラムの凊理の実装基本芁玠に関するこず型倉数配列代入算術挔算比范挔算論理挔算遞択凊理繰返し凊理手続・関数の呌出し など
デヌタ構造及びアルゎリズムに関するこず再垰スタックキュヌ朚構造グラフ連結リスト敎列文字列凊理 など
プログラミングの諞分野ぞの適甚に関するこず数理・デヌタサむ゚ンス・AI などの分野を題材ずしたプログラムなど
情報セキュリティの確保に関するこず情報セキュリティ芁求事項の提瀺物理的及び環境的セキュリティ技術的及び運甚のセキュリティマルりェアからの保護バックアップログ取埗及び監芖情報の転送における情報セキュリティの維持脆匱性管理利甚者アクセスの管理運甚状況の点怜 など

これに向けお、IPAでは倉曎郚分のサンプル問題が掲茉されおいたす。

科目Bサンプル問題

埓来の過去問では察策できない範囲ですので、今回はサンプル問題を甚いお解説及び詊隓察策をしおいきたす。

その他サンプル問題の解説

基本情報技術者詊隓
【詊隓察策】基本情報技術者詊隓 新方匏解説
基本情報技術者詊隓
基本情報詊隓 サンプル問題 テクノロゞ
【2023新詊隓】基本情報技術者詊隓 サンプル問題(科目A詊隓)
基本情報技術者詊隓
基本情報詊隓サンプル問題 マネゞメント&ストラテゞ
【2023新詊隓】基本情報技術者詊隓 サンプル問題(科目A詊隓) マネゞメント&ストラテゞ

蚭問を解く前に

疑䌌蚀語では凊理の蚘述方法が独特で、「〇」や「」などの蚘号を甚いお凊理を衚珟したす。

どの蚘号が䜕の凊理を瀺しおいるか把握しおおかないず蚭問が正しく理解できたせん。

たずは䞋蚘の衚をしっかり頭に入れおおきたす。これはサンプル問題の埌ろのペヌゞに蚘茉されおいる公匏な説明。

蚘述圢匏説明
○手続名又は関数名手続又は関数を宣蚀する。
型名: 倉数名倉数を宣蚀する。
/* 泚釈 */
// 泚釈
泚釈を蚘述する。
倉数名 ← 匏倉数に匏の倀を代入する。
手続名又は関数名(匕数, 
)手続又は関数を呌び出し匕数を受け枡す。
if (条件匏 1)
凊理 1
elseif (条件匏 2)
凊理 2
elseif (条件匏 n)
凊理 n
else
凊理 n  1
endif
遞択凊理を瀺す。
条件匏を䞊から評䟡し最初に真になった条件匏に察
応する凊理を実行する。以降の条件匏は評䟡せず察応
する凊理も実行しない。どの条件匏も真にならないず
きは凊理 n  1 を実行する。
各凊理は0 以䞊の文の集たりである。
elseif ず凊理の組みは耇数蚘述するこずがあり省
略するこずもある。
else ず凊理 n  1 の組みは䞀぀だけ蚘述し省略する
こずもある。
while (条件匏)
凊理
endwhile
前刀定繰返し凊理を瀺す。
条件匏が真の間凊理を繰返し実行する。
凊理は0 以䞊の文の集たりである。
do
凊理
while (条件匏)
埌刀定繰返し凊理を瀺す。
凊理を実行し条件匏が真の間凊理を繰返し実行す
る。
凊理は0 以䞊の文の集たりである。
for (制埡蚘述)
凊理
endfor
繰返し凊理を瀺す。
制埡蚘述の内容に基づいお凊理を繰返し実行する。
凊理は0 以䞊の文の集たりである。

䞊の衚は正しいのですが、いたいち内容が掎みにくいのでサンプルを付けながらかみ砕いでご説明したす。

蚘述圢匏サンプルコヌド解説
○手続名又は関数名〇export(敎数型:number)
敎数型:ret
ret ← number + 1
return ret
サンプルではexportずいう名称の関数を定矩しおいたす。
匕数でnumberずいう敎数型の倀を受け取っお、1を足しおretに代入するずいうものです。
〇からreturnたでが䞀぀のかたたりです。
型名: 倉数名敎数型:ret関数のサンプルで既に蚘茉しおいたすが、倉数の宣蚀です。
凊理で䜿う「箱」を先に準備しおおくむメヌゞですね。
/* 泚釈 */
// 泚釈
/* これはテストコヌドです */
// サンプル問題
泚釈を蚘述したす。泚釈ですので、凊理には関係なくコメントなどが蚘述できたす。
倉数名 ← 匏ret ← number + 1定矩枈みの倉数に匏や倀を代入したす。
手続名又は関数名(匕数, 
)〇export(敎数型:number)
敎数型:ret
ret ← number + 1
return ret

敎数型:temp
敎数型:result
temp ← 10
result ← export(temp)
手続又は関数を呌び出し匕数を受け枡したす。
export関数を䞊の方で宣蚀しお、倪字にした郚分で呌び出しおいたす。
関数の呌び出し埌は呌び出された関数の内郚の凊理が実行されたす。
if (条件匏 1)
凊理 1
elseif (条件匏 2)
凊理 2
elseif (条件匏 n)
凊理 n
else
凊理 n  1
endif
敎数型:temp
文字列:ret
temp ← 1

if(temp が 0)
ret ← 0が入っおいたす
else if(temp が 1)
ret ← 1が入っおいたす
else
ret ← その他の倀が入っおいたす
endif
if文は䞊から順番に条件匏を確認しおいき、条件が合臎しおいた堎合に䞭の凊理が実行されたす。
どれかの条件に䞀臎した堎合にはそれ以倖の凊理は実行されたせん。

どの条件にも合臎しなかった堎合はelseの䞭の凊理が実行されたす。
elseの条件匏に぀いおは蚘茉がなくおも問題ございたせん。
while (条件匏)
凊理
endwhile
敎数型:temp
temp ← 1

while(temp が5より小さい)
temp ← temp + 1
endwhile
条件匏に合臎するたで䞭の凊理を繰り返したす。
whileは最初に条件匏の刀定が行われるため、サンプルの堎合は
temp=2
temp=3
temp=4
ここたで繰り返し凊理を終えたす。
do
凊理
while (条件匏)
敎数型:temp
temp ← 1

do
temp ← temp + 1
while(temp が5より小さい)
条件匏に合臎するたで䞭の凊理を繰り返したす。
doは凊理埌にに条件匏の刀定が行われるため、サンプルの堎合は
temp=2
temp=3
temp=4
temp=5
ここたで繰り返し凊理を終えたす。
for (制埡蚘述)
凊理
endfor
敎数型:temp

for(tempを1から3たで増やす)
tempを出力
endfor
制埡蚘述の条件が完了するたで繰り返し凊理を行いたす。
サンプルコヌドですず、たで出力しお繰り返し凊理を終了したす。

おすすめ参考曞

いわるゆ猫本。こちらはむラストが倚くずおも芋やすいので、初孊者の方に特にお勧めです。

広い詊隓範囲をこの本でしっかりカバヌしおから問題集などに取り組むず理解が進むず思いたす。

私は応甚情報技術者詊隓たでこのシリヌズにお䞖話になりたした。

プログラムの基本芁玠 問

基本的なプログラムに぀いお、疑䌌蚀語を利甚した出題です。

基本情報技術者詊隓 サンプル問
基本情報技術者詊隓 サンプル問

解答矀

ア (age が 4 以䞊) and (age が 9 より小さい)
ã‚€ (age が 4 ず等しい) or (age が 9 ず等しい)
り (age が 4 より倧きい) and (age が 9 以䞋)
゚ age が 4 以䞊
オ age が 4 より倧きい
カ age が 9 以䞋
キ age が 9 より小さい

解答

カ

解説

さっそく「〇」が登堎しおいたす。これは関数ですので、プログラムの党䜓構成は䞋蚘の通りになりたす。

基本情報技術者詊隓 サンプル問解説
基本情報技術者詊隓 サンプル問解説

if文が䞊んでいるので条件匏に合臎した堎合に䞭の凊理が実行されたす。

問題文に戻っお条件を確認したす。こういう時は衚にするず分かりやすいです。

幎霢入堎料
3歳以䞋100円
4歳9æ­³300円
10歳以䞊500円

たず条件に入れるべきは真ん䞭の「4歳9歳」であるこずが分かりたす。

では解答矀のなかで4歳9歳が察象ずなる条件を探したす。ポむントは「より倧きい・小さい」ず「以䞊・以䞋」です。

「より倧きい・小さい」はよりの郚分の数字は含みたせん。

「以䞊・以䞋」はの郚分の数字は含みたす。

敎理するず解答矀はこのようになりたす。

基本情報技術者詊隓 サンプル問解説
基本情報技術者詊隓 サンプル問解説

4歳から9歳ずいう条件を満たしおいるのは「カ」だけですね。

プログラムの基本芁玠 問

こちらも疑䌌蚀語を利甚した出題です

基本情報技術者詊隓 サンプル問
基本情報技術者詊隓 サンプル問

解答矀

ab
アarray の芁玠数  leftarray[left]
ã‚€array の芁玠数  leftarray[right]
りarray の芁玠数  left  1array[left]
゚array の芁玠数  left  1array[right]

解答

り

解説

配列にはから5の倀が蚭定されおいたす。

配列芁玠の䞊び順を逆にするずいうこずなので、䞋蚘のように箱が5぀䞊んでいるむメヌゞです。

これを1぀ず぀内偎に移動しながら凊理を繰り返しおいきたす。「芁玠数÷2の商」すなわち真ん䞭かその手前に来たら凊理終了です。

基本情報技術者詊隓 サンプル問解説
基本情報技術者詊隓 サンプル問解説

たずは最初にaに入れる倀を考えたす。rightにはその名の通り、入れ替える「右偎の箱」を代入する必芁がありたす。数字は『5』ですね。

では5を䜜り出すにはどうすればいいか考えるために、珟圚倉数に入っおいる倀を敎理しおみたす。

arrayの芁玠数5

left1

「右偎の箱」を瀺す5を䜜るには、arrayの芁玠数 - left +1ずいう蚈算匏が必芁になりたす。これであれば、leftが䞀぀進んで2になった時も右偎の箱も぀進んで4になりたすね。

次にbに入れる倀を考えたす。箱の䞭身を入れ替えるのでarray[right]ずarray[left]を入れ替えればいいのですが、array[right]にarray[left]の倀を代入した時点で倀が曎新されおしたいたすので、䞀床tmp(temporaryの略でよく䜿う)に代入したす。

元々入れたかったのはarray[left]ですので、tmpの倀を代入する必芁がありたす。

よっお答えはりになりたす。

プログラムの基本芁玠 問

デヌタ構造及びアルゎリズムの問題です。短方向リストのむメヌゞが぀かめないず少し難しい気がしたす。

アルゎリズムに぀いお問われおいる通り、䞀぀䞀぀コヌドを远っおいく必芁がありたす。

基本情報技術者詊隓 サンプル問
基本情報技術者詊隓 サンプル問

解答矀

ab
ア未定矩curr
む未定矩curr.next
り未定矩listHead
゚未定矩でないcurr
オ未定矩でないcurr.next
カ未定矩でないlistHead

解答

ア

解説

単方向リストでデヌタを保持しおいるので、各箱で持っおいるデヌタは「自分に栌玍された文字列」ず「次のリストの参照先」になりたす。

基本情報技術者詊隓 サンプル問解説
基本情報技術者詊隓 サンプル問解説

listHeadは先頭のデヌタの参照先なので、空であればいた登録しおいるデヌタが先頭ずいうこずになり自分の参照先を登録したす。

なのでaは「未定矩」が入りたす。

listHeadが未定矩でなければすでにリストは存圚しおいるこずになるので、登録したいデヌタは『䞀番最埌に箱を远加しお登録する』必芁がありたす。while分で凊理しおいる内容は「䞀぀䞀぀りリストを蟿っおいき、次が無かったら繰り返し凊理を終了する」ずいうものなので、この繰り返しを抜けた埌にその次の箱䞀番最埌にデヌタを登録したす。

登録すべきデヌタはcurrに代入されおいるので、これをprev.nextに代入する必芁がありたす。

ちなみに curr は current(珟圚登録しようずしおいるデヌタ)ずいう意味の略だず思われたす。

コメントを残す