見出し画像

【解き筋まで図解で解説】FE令和5年科目B(基本情報技術者試験, 科目B, 擬似言語, 午後)

このNoteでは「基本情報技術者試験(FE)」令和5年度科目Bを解説します。

私の解説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 | メインループを更に繰り返す

第一問なので”ジャブ”でしたね。

擬似言語/プログラムで、合計計算でループ(for)を学び、ループ内に分岐(if)を組み込んで、奇数だけを抽出、などは私の授業の定番です。
もしやったことなければ、擬似言語化/プログラミングをやってみ下さい。”1~10のうち奇数だけを出力する”。

学習できるポイントも小粒。でも大事な基礎です。

  • 素数:常識として(小学校5年生レベル

  • プログラムの目的=出口から解きほぐす

  • 重要なメイン処理を抽出する

  • フラグの初期値を敢えてTrueにする意味

  • ループの抜け方2種類(条件, break


正答はア(maxNum, i÷jの余りが0と等しい)。


知識 | 「素数」の定義を知っておこう

「素数」の定義は大丈夫だったですかね?

「素数」とは、1より大きいの自然数のうち、1 と自身だけで割り切れる数。2, 3, 5, 7, 11・・・です。2は1と2だけで割り切れますね。3も1と3だけ、5も1と5だけ、7も1と7だけ、11も1と11だけ。

問題文に書かれてなかったので、ひょっとしたら自信ない方/知らなかった方もいるかもですね。

知らなかった方は”ちょっと不親切”と思っかもですが、「奇数」「偶数」と同じレベルで知っておいてね、な知識として覚えてください。調べたら小学校5年生で初登場とのこと。



現場での解き筋 | 出口から紐解く

プログラムを頭から見るよりは、お尻から紐解くのがお薦めです。問題文から”プログラムの目的”は分かっているので、擬似言語の出口は目的に一致するはずですから。

❶素数をリストに登録してるのが、問題文の目的通り。
❷ループを途中で強制終了してるので、”素数じゃない”って分かったので、素数検査を止めたんだな。
【空欄b】には”素数じゃない”条件が入るんだな。

これで【空欄b=割り切れた旨】だと分かり、ア/ウに解答候補を絞れます(i÷jの余りが0と等しい)。


あとは【空欄a】を考えればOK。

問題文に「~以下の全ての素数~」を見つけるのが目的なので、色んな素数を見つけたいんですね。

【空欄a】="引数(maxNum)で与えられた整数以下~"と考えて、ア(maxNum)だと確定。次節でも詳しく考えます。



コツ | メインと周回を分離する

今回は、ある数「i」が素数がであるか/ないかを、ある数「j」で割り切れた(余りが0)なら、素数”でない”/割り切れなかったら、素数”である”としてます。

素数検査(青)を、色んな数に行うためにループ(水色)しています。最初に理解したいのは、メイン処理の素数検査(青)。

もう理解できたかもですが、処理の流れをまとめますね。

メインの処理は❶❷。
❶青:ある数(i)が素数なのかを判定
❷紫:素数だったら配列に登録

❸は、メイン処理を繰り返すだけ。
❸水色:検査するある数(i)を変えて、❶❷をしていくループ。プログラム目的が”引数以下の素数を全て挙げる”なので。引数maxNum以下の数(i=2からmaxNumまで)について❶❷をします。



プログラム | 敢えて初期から「True」

普通に考えると、”~であるフラグ”は、最初はFalseにして、判定を満たしたらTrueに変更する処理をしますよね。最初から”正しい=True”って決めてるのは、日常生活的に違和感。

しかし、今回は敢えて「DivideFlag←True」と最初から真「True」。下図の緑。

素数”じゃない"判定がされなければ、そのままTrue

でも素数で”ない”判定がされたら(❸がTrue)、その場で計算を止めます(❷)。素数じゃないのが確定したんだから、これ以上の素数検査は不要になりますからね。

一度、今回とは逆に、フラグ初期値をFalseにした擬似言語を作ると、今回の方が効率が良いことが分かりますよ(今後解説Note作ってみようかな*)。



プログラム | ループの抜け方「2種類」

ループ(for, while)には、ループ処理をする条件/しない条件が書かれますね。何回やったら終了とか、見つけたら終了とか。

今回のfor文でも、回数が明記されてます。さらに”ループ途中で強制的に止める”処理(break)も書かれています。

ループの抜け方2種類が書かれていましたね。強制終了(赤)の条件が甘くて、見逃しちゃった(もっと青を実施すべきだった)ら大変ですね。条件検討もデバッグも慎重に。


なお問3では「while(True)」は、条件式がない/常にTrueなので無限ループになってて、ループ内でbreakする書き方が採用されてます。

❹While(True)~➓が無限ループ。
❼で強制的にループを抜けます(break)。

breakが必ず発動するか、条件検討とデバッグを慎重にせねば。無限ループでプログラムが動きっぱなしに💦




問02 | 関数の呼出/終了

問02は短いのでトレースが楽でした。まだ準備運動といったところかな。

学ぶポイントも問01と同じく小粒ですが、基礎。

  • 関数の呼び出しと戻り

  • 科目Aでも出た「再帰関数」は図で解く

  • 関数の引数/返り値(問04で深堀)

ここから先は

9,098字 / 31画像

メンバーシップ ¥ 500 /月

■初月無料なので、お試しください。 ■私独自の理解法や詳しい分析を公開したいです。 ■根本を丁寧に見…

【初月無料】Iパス法律/SG/AP計算/DBとSC午後2

¥500 / 月
1ヶ月無料 人数制限あり

学習方法・問題特集のNoteは全て無料提供を続けます▼ もしご覧になったNoteが有益だったり、私の志に共感されたりしましたら、サポート頂けますと励みになります▼ もちろんコメントでも結構です(・ω・▼)ノシ