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〕
○整数型: calcX(整数型: inData)
整数型: num, i
num ← inData
for (i を 1 から 3 まで 1 ずつ増やす)
num ← [ a ]
endfor
return num
〔プログラム2〕
○整数型: calcY(整数型: inData)
整数型: num, i
num ← inData
for ([ b ])
num ← [ a ]
endfor
return num
| 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 ずつ増やす |
- ア 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 ずつ増やす
答えと解説
✓ これが正解エ num + 2 × i i を 2 から 6 まで 2 ずつ増やす
解説
増える分が2ずつ大きくなるので、numに2かけるiを足します。
まず一つ目の関数の動きから、空欄の式を決めます。変数numは1から3、7、13と変わっており、増えた分は順に2、4、6です。繰返しの回数を数える変数iは1、2、3と進むので、増えた分はちょうど2かけるiにあたります。したがって空欄の式は、numに2かけるiを足すものです。次に二つ目の関数を見ると、numは1から5、13、25と変わり、増えた分は4、8、12です。同じ式を使うのですから、iが2、4、6と進めばつじつまが合います。つまり繰返しは、iを2から6まで2ずつ増やす形になります。引数として渡した値がどう変わるかを一段ずつ書き出し、表の欄を上から順に当てはめて確かめるのが近道です。よって適切な組合せは、numに2かけるiを足す式と、2から6まで2ずつ増やす繰返しです。
ほかの選択肢の解説
- ア 2 × num + i i を 1 から 7 まで 3 ずつ増やす:式を2かけるnumに足すiとしています。一つ目の関数で確かめると、はじめの一回は2かける1に1を足して3となり合いますが、次は2かける3に2を足して8となり、7にはなりません。一回だけ合わせて決めると取り違えるので、一段ずつ確かめます。
- イ 2 × num + i i を 2 から 6 まで 2 ずつ増やす:こちらも式を2かけるnumに足すiとしているので、二回目で合わなくなります。繰返しの側だけを見て選ぶのではなく、まず式を一段ずつ当てはめて最後まで合うかどうかを確かめるのが確実です。
- ウ num + 2 × i i を 1 から 7 まで 3 ずつ増やす:式のほうは合っていますが、繰返しをiが1から7まで3ずつ増える形としています。それではiが1、4、7と進み、増える分は2、8、14となって、5、13、25という変わり方に合いません。iの進み方まで含めて確かめる必要があります。
関連用語
出典:令和4年度 ITパスポート試験 問96(改変:原典の図表をテキストに書き起こした)
解説は当サイト独自のもので、IPA(独立行政法人情報処理推進機構)とは関係ありません。
関連問題
- 令和8年度 問67:
整列に 関する 問題 (引数) - 令和8年度 問85:
素数に 関する 問題 (引数) - 令和6年度 問85:
基数に 関する 問題 (引数) - 令和6年度 問62:
配列に 関する 問題 (引数) - 令和5年度 問64:
引数に 関する 問題 (引数)
同じ分野の問題
誤りを見つけたら報告する