【解き筋解説】FE令和7年科目B(基本情報技術者試験, 科目B, 擬似言語, 午後)
このNoteでは「基本情報技術者試験(FE)」令和7年度科目Bを解説します。
今回は「自分で値を設定してトレース」が大きなポイントでした。問02では、樹形図を描き出し、自分で新たな値を設定してトレースする自発行為が必要でした。また問04で[i+j-1]のように、ループカウンタを小細工するのも良い学びチャンスでした。
私の解説Noteは、”正解を理解する””不正解も理解する”って普通の復習には終わらせません。
”現場の限られた時間での解き筋”、”数学/科目Aの知識”、”科目Bの主題であるトレースの訓練”、”擬似言語/プログラミングの手口”など、まで図解でしっかり解説します。
FE科目Bの本試験は20問なのに、公開問題はたったの5問。しかも年に1回だけ公開。新FEになって、サンプル(20問)+令和5~7(5問×3回=15問)で25問しかありません。
数少ない公開問題を無駄にしないために、一度不合格になって”学習に使える問題がもうない!”って方のために、深い復習を提案したくて一所懸命作りました。
このNoteは、私がIT専門学校で授業したことを基に作成しています。IT専門学校でFEは第一目標として、カリキュラムが構築されています。何も知らずに入学しても、1年生10月にはFE合格していきますよ。実績ある教育ノウハウを詰め込んだので、少しでも信頼して頂けたら嬉しいです。
少しでも学習のお役に立てたら嬉しいです。
それでは始めましょう!
>全Noteへのリンク(FE節)
※科目Aのテーマ別対策、科目B対策、旧FE午後(セキュリティ)など沢山作りました!
【NOTICE】著作権を侵害には即座に法的措置をしています。人格否定もブロックなどの自衛手段を行います。私は1個人であり、公人ではありません。プライベート時間の全てを費やして作成してきました。ご理解頂ける方のみ、ご活用されると嬉しいです🫠
問01 | 解釈が必要な問題
第一問にしては、ちょっと難しめでした。
いつもはもっと基礎的で、最悪でも選択肢を全部試せば正解できる程度の印象でしたが。今回は、全部試すのは面倒でした。数学的な考察をして絞り込む必要がありました。
問01は”何をやっているか”の解釈が必要な問題。
とはいえ、function2()に私は数学的/プログラム的な意義を見出せなかったので、て意味があるのかは微妙に思います。良い問題とは思えません(最後の節で3引数にして意義を見出します)。
正答はカ。
iを1~3(≦)まで1ずつ増やす
jをtempN~m以下(≦)まで4ずつ増やす
下図左function1()が4の倍数を数える目的を、右function2()でも実現するアルゴリズムを考えるのが解き筋です。

解き筋❶ | function1()の動作を考える
「i mod 4 ==0」の時に「count←count+1」で数えてるので、4の倍数の個数を数えてますね。数える範囲はfor文「iをn~mまで」。
func1()が「nからmまでの4の倍数の個数を数える」だと理解します。

”4の倍数を数えている”って解釈をしないと、function2()のトレースを正面からやるのはとても面倒になります(1敗)。ア~カの6通りもありますからね。
解き筋❷ | function2()の動作を考える
【空欄a】より前に、【空欄b】から考えます。
「count←count+1」が"4の倍数を数えてる"部分と目星。

青:「1ずつ増やす」は消せます。➡×
例えば、4は数えて良いけど、5は数えちゃダメなのに。count+1が必ず実行されますから。
緑:「4ずつ増やす」は良さそう。ただしtempNが4の倍数なら。➡候補△
紫:tempNとnの双方が4の倍数なら良さそう。緑より成立ハードル高いですね。➡×寄りの△として一応残す。
解き筋❸ | では最初のfunction1()から
【空欄b】で絞れたので、真っ当に【空欄a】から考えます。
簡単な引数でトレースして、正しい動作をする選択肢を見出します。
n=1, m=11を想定。問題文の「引数mは引数nよりも10以上大きい数とする」条件を満たす一番簡単な例で。
【空欄a】がアイウの場合(iを1~2まで+1ずつ)。

【空欄a】ループが終わり、tempN=3になりました。
次は、再度【空欄b】ループで、4の倍数が数え上げられているか確認。

残念。アイウは消せます。【空欄a】はエオカ。
なお【空欄b】候補はウカorアエだったので、カorエ。
【空欄a】がエオカ(実質カエ)の場合。

今回はtempN=4、前回はtempN=3でしたね。期待。
【空欄b】周りのループを再度確認。

カだけが4の倍数を数えられてます。良かった。正答はカ。
他の入力でもちゃんと動くか確認して見て下さいね。
(n=2, m=12)➡tempN=4
(n=3, m=13)➡tempN=4
(n=4, m=14)➡tempN=4
(n=5, m=15)➡tempN=8
あたり。ざっくりで良いですからね。
※問題文の「引数mは引数nよりも10以上大きい数とする」条件を忘れずに。
コツ | 条件は余裕を持たすのもアリ
【空欄a】では、色んなnとmを考える必要がありました。
n=1から考えたのは、簡単だから。m=11から考えたのは、問題文「引数mは引数nよりも10以上大きい数とする」の条件より。
私は本試験ではn=1, m=12で考えるかも。条件は余裕をもって満たしておきたい気持ちがあります。”以上””より大きい"や"以下""未満"って不安になります。でもあまり余裕持つとループ回数が増えてトレースがどんどん面倒になりますね。
選択肢アエカのbも「mを超えない範囲」って、”m以下(≦)”って意味ですもんね。私は、一瞬”m未満(<)”って思っちゃいました。普通に空欄aと同じで「まで」でいいじゃん、と。
本試験では、一旦勘で解答して、後で戻って取り組むのが良いかも。まともにトレースすると時間がかかるんで、
選択肢を見ると、【空欄a】が2通り、【空欄b】が3通り、合計6通り。面倒ですね。”4の倍数”に気づいたら、b側「1ずつ増やす」を消せるので減らせますが。順番通りに【空欄a】から絞れないのもイジワルな印象でした。
将来 | 意味あるプログラムへ
function2()は、
❶最初のループでtempNの初期値を4の倍数に調整して、
❷次のループで+4ずつして4の倍数を数えてます。
そりゃ4の倍数になりますよ。何に意味があるんですかね。
そう考えると、そもそもfunction1()にも意味があったが疑問が湧きます。
第三の引数pを設けて、”nからmまでのpの倍数の個数を数える”なら、数学的用途には使えそうです。これなら個人的には意味があるかなぁと。
問02 | 2段階の確認方針
”(12÷5の商)+1通り”とかワケ分かんなかったですね。
問題文に、12円の時にどんな答えになるか書かれています。
数学的な法則は一旦置いといて、”分かっている答えがでるように合わせ込んだ方が速い”です。
ここから先は
メンバーシップ
¥ 500 /月
学習方法・問題特集のNoteは全て無料提供を続けます▼ もしご覧になったNoteが有益だったり、私の志に共感されたりしましたら、サポート頂けますと励みになります▼ もちろんコメントでも結構です(・ω・▼)ノシ
