ITパスポート試験 - 令和4年 - 問96
関数calcXと関数calcYは,引数inDataを用いて計算を行い,その結果を戻り値とする。関数calcXをcalcX(1)として呼び出すと,関数calcXの変数numの値が,1 → 3 → 7 → 13 と変化し,戻り値は13となった。関数calcYをcalcY(1)として呼び出すと,関数calcYの変数numの値が,1 → 5 → 13 → 25 と変化し,戻り値は25となった。プログラム中のa, bに入れる字句の適切な組合せはどれか。
〔プログラム 1〕
〔プログラム 2〕
〔プログラム 1〕
〔プログラム 2〕
| a | b | |
| ア | 2 × num + i | i を 1 から 7 まで 3 ずつ増やす |
| イ | 2 × num + i | i を 2 から 6 まで 2 ずつ増やす |
| ウ | num + 2 × i | i を 1 から 7 まで 3 ずつ増やす |
| エ | num + 2 × i | i を 2 から 6 まで 2 ずつ増やす |
答え : エ
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › アルゴリズムとプログラミング
解説 :
この問題は,擬似言語のfor文を読み解き,変数の変化パターンから空欄の式や繰り返し条件を推測する問題です。
まず [ a ] を求めます。calcX(1) では num が 1→3→7→13 と変化しています。選択肢「2×num+i」を試すと,1回目は 2×1+1=3 で合っていますが,2回目は 2×3+2=8 となり期待値の7と合いません。一方「num+2×i」を試すと,1回目は 1+2×1=3,2回目は 3+2×2=7,3回目は 7+2×3=13 と,すべて一致します。よってaは「num+2×i」です。
次に [ b ] を求めます。calcY では num が 1→5→13→25 と変化しており,同じ式「num+2×i」を使ってこれを実現するには,iがどんな値をとればよいか逆算します。1回目は num=1+2×i=5 なので i=2,2回目は i=4,3回目は i=6 となり,iは 2→4→6 と変化しています。これは「iを2から6まで2ずつ増やす」というfor文に対応します。
以上から,aは「num+2×i」,bは「iを2から6まで2ずつ増やす」となり,答えは「エ」です。
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › アルゴリズムとプログラミング
解説 :
この問題は,擬似言語のfor文を読み解き,変数の変化パターンから空欄の式や繰り返し条件を推測する問題です。
まず [ a ] を求めます。calcX(1) では num が 1→3→7→13 と変化しています。選択肢「2×num+i」を試すと,1回目は 2×1+1=3 で合っていますが,2回目は 2×3+2=8 となり期待値の7と合いません。一方「num+2×i」を試すと,1回目は 1+2×1=3,2回目は 3+2×2=7,3回目は 7+2×3=13 と,すべて一致します。よってaは「num+2×i」です。
次に [ b ] を求めます。calcY では num が 1→5→13→25 と変化しており,同じ式「num+2×i」を使ってこれを実現するには,iがどんな値をとればよいか逆算します。1回目は num=1+2×i=5 なので i=2,2回目は i=4,3回目は i=6 となり,iは 2→4→6 と変化しています。これは「iを2から6まで2ずつ増やす」というfor文に対応します。
以上から,aは「num+2×i」,bは「iを2から6まで2ずつ増やす」となり,答えは「エ」です。