HOME»基本情報技術者試験掲示板»令和7年の科目B公開サンプル問題1がわかりません
投稿する

令和7年の科目B公開サンプル問題1がわかりません [5975]

 くるみんさん(No.1) 
公開された令和7年の科目Bのサンプル問題なのですが、(エ)がなぜ違うのかがわかりません。
n=5 m=15でトレースしました。
同じ値を返すとあるので4の倍数を探してるfunction1で countが2になりました。
そしてfunction2でもcountが2になります。なぜエが違うのか教えてほしいです。
1から3増やしたらのでtempNに8が入って、
jを5から15を超えない範囲で8ずつふやすので、j=5でcount1、j=13でcount2という考えをしてこういう結果になりました。
2025.07.06 19:22
電タックさん(No.2) 
FE ブロンズマイスター
小さな値だったら合っているかもしれませんが、forの増分がtempNだった場合にそれが大きい値だったら同じ結果になりますでしょうか

例えば、n=100でm=101とかでcountが3にならない気がします。
2025.07.06 19:52
電タックさん(No.3) 
FE ブロンズマイスター
n=100
>m=111
count=3
の間違え
2025.07.06 19:54
 くるみんさん(No.4) 
大きい数でしたらそうでした。
やはりこれもそれなりの具体例の数値を用意してトレースした方が良いんですかね?こうならないためにも…そういった解決策教えて欲しいです
2025.07.06 19:56
電タックさん(No.5) 
FE ブロンズマイスター
今回は増分をtempNとする回答を選ぶなら気にしたほうが良かっただけで、通常は小さい値だけで良いと思います。
2025.07.06 19:58
 くるみんさん(No.6) 
ありがとうございます
小さい値でして、あってるってなって下の選択肢もみずに(エ)としてしまいそうです。
やはりこういうこともあるので見た方が良いんですかね…妥当性を考えるとありえないということに指摘いただいて気づきました…4の倍数のカウントを考えていますし、それ以外の具体例の値も頭に入れて条件に合った妥当性のある選択肢を抽出した方が良いですかね?
2025.07.06 20:05
電タックさん(No.7) 
FE ブロンズマイスター
時間がかかってしまっては元も子もないので、時間が余っていたり見直しでささっとできるならいくつかの値でやってみるのはありかもしれませんね

私も擬似言語の構造を理解する時は指定の値ではなく小さい値を使ってやっています。
2025.07.06 20:15
 くるみんさん(No.8) 
たまたま自分の具体例値がよくなかっただけですね…
ありがとうございます。そうします!
2025.07.06 20:18
jjon-comさん(No.9) 
FE プラチナマイスター
基本情報 令和7年度 公開問題 科目B 問1
https://www.ipa.go.jp/shiken/mondai-kaiotu/sg_fe/koukai/tbl5kb0000005r9r-att/2025r07_fe_kamoku_b_qs.pdf

> それなりの具体例の数値を用意してトレースした方が良いんですかね?
> たまたま自分の具体例値がよくなかっただけですね…

良いんですかね、ではなく、必須です。
たまたま、ではなく、トレースは一つの選択肢に絞り込まれるまでさまざまな具体値を検討する手法なのです。
具体値でトレースして、合致した選択肢が見つかったらそれが正解だ、他の選択肢は合致しないはずだから検討しなくてよい、などと解説されている参考書はないんじゃないですか。

質問者はとりあえず、
・iを1から3まで1ずつ増やす
が正しいことは分かったわけですね。

質問者がトレースで(具体値による選択肢の検討で)科目Bのアルゴリズム問題に臨む人であるなら、続けておこなうのは次の3つのトレースによる検討です。
エ jをnから始めてmを超えない範囲でtempNずつ増やす
オ jをtempNからmまで1ずつ増やす
カ jをtempNから始めてmを超えない範囲で4ずつ増やす

これを終えた時点で、質問者の仮定した n=5 m=15 では エ と カ がともに同じ結果を返すことが分かる。だから、トレースでアプローチする人は、選択肢を一つに絞り込める別の具体値を検討する必要があります。
2025.07.07 00:52
yoshidaさん(No.10) 
jjon-comさん
選択肢を一つに絞り込める別の具体値はどのように検討するのでしょうか。
慣れですか?論理的なアプローチがあるなら教えて欲しいです。
2025.07.07 12:39
boyonboyonさん(No.11) 
FE シルバーマイスター
参考までに、

https://www.fe-siken.com/bbs/5969.html

をご覧になってみてください。
2025.07.07 17:24
jjon-comさん(No.12) 
FE プラチナマイスター
私も実はNo.11で紹介されたリンク先のようにトレースではない方法で解いたのですが、
具体的なデータ例の選び方には「論理的なアプローチ」があるので解説しておきます。

基本情報 平成28年 秋期 午前 問48
https://www.fe-siken.com/kakomon/28_aki/q48.html

で解説されている、限界値分析(境界値分析)によるテストを参照してください。

以下、function1() が「nからmの間にある4の倍数の数を数える」プログラムだと予想できていることが前提となります。

引数mは引数nよりも10以上大きい数とする という問題文から質問者は次のデータを想定したわけですが(分かりやすさのため 4の倍数にカッコをつけました)
5, 6, 7, (8), 9, 10, 11, (12), 13, 14, 15

このデータは有効範囲の下限も上限も4の倍数ではないため、限界値分析の知識があるならば最初のテストデータとして選ばないです。

(4),5,6,7,(8),9,10,11,(12),13,14,15,(16)
というデータは有効範囲の下限も上限も4の倍数ですが、
function2() において n=tempN=4 になり、エとカの区別がつかないのは明らか。

エ jをnから始めてmを超えない範囲でtempNずつ増やす
カ jをtempNから始めてmを超えない範囲で4ずつ増やす

そこで、限界値分析を知っている人は、値を4つ増やした次のテストデータで最初に検証を試みるでしょう。
(8),9,10,11,(12),13,14,15,(16),17,18,19,(20)

結果として、エは不可となり、カが正解となります。
2025.07.07 17:59
返信投稿用フォームスパム防止のためにスレッド作成日から40日経過したスレッドへの投稿はできません。
© 2010- 基本情報技術者試験ドットコム All Rights Reserved.

Pagetop