共通テスト情報Ⅰ:変数・条件分岐・繰返しを追跡する
変数の更新、条件の境界、配列、集計と探索を32問で練習します。値の追跡と反例を使い、正しい答えだけでなく処理の理由を説明するための基礎単元です。
- Level
- basic
- Languages
- ja → ja
- Cards
- 32
- Markdown
- 共通テスト情報Ⅰ:変数・条件分岐・繰返しを追跡する (.md)
Flashcards (32)
| # | Front (Term / Question) | Back (Definition / Answer) | Example | Multiple-Choice Options |
|---|---|---|---|---|
| 1 | 要素数 n の配列を0始まりで番号付けすると、有効な添字はどこからどこまでか? | n > 0 のとき0から n − 1 まで。添字 n は範囲外。n = 0 なら有効な添字はない。1始まりの問題では番号付けが変わるため、問題文の定義を確認する。 | ||
| 2 | i を2から5まで1ずつ増やし、両端を含めて処理すると、処理は何回実行されるか? | 4回。i は2、3、4、5となる。整数 a から b まで両端を含み、a ≤ b なら b − a + 1 回。終点を含まない規約の繰返しと混同しない。 | ||
| 3 | x ← 1 の後、条件を先に調べる「x < 10 の間、x ← 2 × x」を実行する。終了時の x と繰返し回数は? | x は16、4回。値は1 → 2 → 4 → 8 → 16と変わる。16で条件が偽になり終了するため、終了時の値が10未満であるとは限らない。 | ||
| 4 | x ← 1 の後、「x < 10 の間、x ← 2 × x」を実行する。条件を本体の前に確認すると、条件は合計何回評価されるか? | 5回。1・2・4・8で真となって本体を実行し、16で偽となって終了する。最後の偽の判定も数えるため、本体の4回より1回多い。 | ||
| 5 | s ← 0 とし、iを1から4まで両端を含めて変え、毎回s ← s + iを実行する。最終値は? | 10。sは1、3、6、10と変わる。本体を4回実行することと、iの値を合計した結果10を混同しない。 | ||
| 6 | この単元では ← を代入、= を等しいかどうかの比較とする。x ← x + 1 と x = x + 1 はどう違うか? | 前者は現在の x に1を足した値を x に保存する操作。後者は左右が等しいかを調べる条件で、通常の整数では偽になる。記号の意味は、実際の問題に示された規約で確認する。 | ||
| 7 | 左から目標値を探す途中で、目標より大きい値を見たら未発見として終了してよいのは、どのような並びが保証されている場合か? | 配列が昇順(同じ値を含んでもよい)に並んでいる場合。その先に小さい目標値は出ない。未整列なら [9, 3]で目標3を探す場合のように、早く終了すると見落とす。 | ||
| 8 | 空でない配列の最小値を求める。最小値候補を最初の要素にした後、どんなとき候補を更新するか? | 調べた要素が現在の候補より小さいとき、その要素に更新する。例えば [4, 9, 2] なら候補は4 → 4 → 2となる。常に0から始めると、全要素が正の配列で誤る。 | ||
| 9 | 条件「得点 ≥ 60」が真かを調べる境界テストとして、59・60・61を使う理由は何か? | 境界の直前・境界上・直後を確認できるため。期待結果は順に偽・真・真。誤って「得点 > 60」と書くと、60だけが不正解になるので検出できる。 | ||
| 10 | x ← 1、s ← 0 の後、「x < 3 の間、s ← s + 1」だけを繰り返すと、なぜ終了しないか? | 条件に使うxが1のままで、x < 3がずっと真だから。sだけを変えても条件は変わらない。意図する回数に合わせてxも更新するなど、終了条件に到達する処理が必要。 | ||
| 11 | 「x ≥ 4 かつ x は偶数」という条件は、x = 2、5、8のどれで真になるか? | 8だけ。2は偶数だが4以上ではなく、5は4以上だが偶数ではない。「かつ」は両方の条件が真のときだけ真になる。 | ||
| 12 | 0始まり配列で、見つかった要素の添字を返す探索がある。「見つからない」を0で表すと何が困るか? | 先頭で見つかった添字0と区別できなくなる。例えば−1を未発見に使うか、発見したかの真偽を別に返す。未発見の値をそのまま配列の添字として使わない。 | ||
| 13 | 最大値候補をA[0]で初期化し、残りの要素だけを調べる。要素が一つの配列 [6] では、比較の繰返しを何回行う必要があるか? | 0回。最初の要素6がすでに最大値候補であり、残りの要素はない。開始添字が終了添字を超える場合は実行しない、という繰返しの規約を確認する。 | ||
| 14 | A = [4, 7, 7, 9] を左から調べ、最初の7の添字を返したい。0始まりなら答えと、発見時に必要な処理は? | 答えは1。最初に一致した時点でその添字を返すか探索を終了する。見つけるたびに添字を上書きして最後まで続けると、最後の7の添字2を返してしまう。 | ||
| 15 | A = [5, 9, 9, 2]で最大値が最初に出る添字を返したい。0始まりで、候補を添字0から始めたとき、更新条件を「現在の最大値より大きい」とする理由は? | 同じ最大値では更新せず、先に見つけた添字1を残すため。「以上」で更新すると後の9にも更新して添字2になる。最大値9を返すことと、その位置を返すことも区別する。 | ||
| 16 | 「4以上かつ偶数」ではない整数を選ぶ条件を、「または」を使って表すとどうなるか? | 「4未満または奇数」。二つの条件が同時に成立することを否定すると、少なくとも一方が成立しない条件になる。例えば2は4未満、5は奇数なので該当し、8は該当しない。 | ||
| 17 | 90点以上をA、60点以上90点未満をBにしたい。「60点以上ならB、そうでなく90点以上ならA」の順で判定する誤りは何か? | 90点以上も最初の条件を満たしてBになり、Aの分岐に到達しない。先に90点以上を判定するか、Bの条件を60点以上かつ90点未満にする。 | ||
| 18 | 正の要素を数えるcを、各要素を調べるたびに0へ戻してしまう。A = [2, 3, -1]では最後にどんな値になり、どこを直すべきか? | 最後は0となるが、正の要素は2個ある。c ← 0を要素を調べる繰返しの前へ移し、該当するときだけcを1増やす。初期化の位置で、どの範囲を集計するかが変わる。 | ||
| 19 | sを0で始め、[2, 5, 4]の各要素を順にsへ加え、その直後のsを毎回記録する。記録される三つの値は? | 2、7、11。毎回の要素そのものではなく、それまでの要素の累積合計を記録する。最後の11が配列全体の合計。 | ||
| 20 | 配列の全要素の合計を求めるとき、合計用変数 s を0で初期化するのはなぜか? | 加算を始める前の合計を0にするため。各要素 v に対して s ← s + v とすれば、処理済み要素の合計が s に保たれる。空配列も許す仕様なら、その合計は0として扱える。 | ||
| 21 | 空でない配列の最大値を求めるとき、最大値候補 m を常に0で始めるとどんな入力で失敗するか? | 全要素が負の配列。例えば [-7, -2, -5] では更新されず0を返すが、最大値は−2。m を最初の要素で初期化し、残りを比較すればこの問題を避けられる。 | ||
| 22 | 要素数 n > 0 の0始まり配列で、「i = 0から n まで、両端を含めて A[i] を読む」という処理の誤りは何か? | 最後に範囲外の A[n] を読むこと。有効な最後の添字は n − 1 なので、終点を n − 1 にするか、条件を i < n にする。要素数と最後の添字を分けて考える。 | ||
| 23 | 条件に合う要素の合計sと個数cを求め、平均s ÷ cを計算したい。c = 0ならどう扱う必要があるか? | 割り算を実行せず、「該当要素がない」場合の処理を別に定める。例えば「平均なし」と表示する。該当要素がないことと、平均が0であることは同じではない。 | ||
| 24 | x ← 5 の後、「x ≥ 1 の間、x ← x − 2」を実行する。本体の回数と終了時のxは? | 3回、−1。5 → 3 → 1 → −1と更新される。減少する繰返しでは、更新の向きと継続条件が合っているかを確認する。 | ||
| 25 | 外側を2回繰り返し、その各回で内側を3回繰り返す。内側の本体は合計何回実行されるか? | 6回。外側の1回目に3回、2回目にも3回で、2 × 3となる。内側の回数が外側の値に依存する場合には、各回の実行回数を別に求める必要がある。 | ||
| 26 | x = 2、y = 9 の値を交換したい。x ← y、y ← x ではなぜ交換できないか? | 最初の代入で元の x の値2が失われ、両方が9になる。例えば t ← x、x ← y、y ← t とすれば、元の x を一時変数 t に残して交換できる。 | ||
| 27 | A = [3, 8, 5, 8] の要素のうち5以上のものの個数を数える。個数 c を0で始めると最終値はいくつか? | 3。8、5、8の三つが該当する。値8が二度出現するので二つの要素として数える。異なる値の種類数を数える問題ではない。 | ||
| 28 | n = 12 とする。「n > 0 なら r ← 1、その条件が偽の場合だけ n > 10 なら r ← 2」を実行すると、r はいくつか? | 1。最初の条件が真なので、その後の「その条件が偽の場合」の分岐は調べない。二つの独立した if 文なら両方を実行して最後に2となるため、分岐のつながりを区別する。 | ||
| 29 | 繰返しを正しく追跡するための表には、どの時点の値を記録するとよいか? | 初期値と、各代入・各反復後の値を区別して記録する。条件を評価したときの値と真偽も残すと、更新の順序や終了判定の誤りを見つけやすい。 | ||
| 30 | x = 5 のとき、「x < 5 の間、x ← x + 1」を実行する。条件を処理前に確認するなら、代入は何回行われるか? | 0回。最初の条件が偽なので本体には入らない。処理してから条件を確認する方式とは異なる。 | ||
| 31 | 配列に負の数が一つでもあるかを調べる。フラグを偽で始め、負の要素を見たら真にする。非負の要素を見たときも偽に戻してよいか? | 戻してはいけない。[-2, 3]では、最初に発見した負の数の情報を後の3で消してしまう。一度真になったら保つか、見つけた時点で探索を終了する。 | ||
| 32 | 代入記号を ← とする。x ← 3、y ← x + 2、x ← 7 の順に実行した後、y はいくつか? | 5。y への代入時点で x は3なので、3 + 2 が保存される。その後に x を7へ変更しても、保存済みの y が自動的に再計算されるわけではない。 |