READ THE CONDITIONS条件を読み、
条件を読み、
値を追って確かめる。
5授業から1問ずつ。初期値・実行順・終了条件を読み、処理を追って答えます。
独自の基礎問題です。科目B全範囲の模擬試験ではありません。問題・全誤答解説・復習・記録保存も完全無料、追加課金なし。
CHECK YOUR UNDERSTANDING
自作問題アルゴリズムの基礎・5問チャレンジ
問題の条件を読み、自分の答えを考えます。間違えても大丈夫。考え方を確かめてから、もう一度挑戦できます。
問題と解説を読む
先に自力で考えてから、解答を開いてください。
初期値x=3。y ← x + 2、x ← y × 2の順に実行。最後のxは?
10
yに5を代入した後、xに5×2を代入する。
- 3:初期値のままではなく、最後の文で更新します。
- 5:5はyへ格納した値です。次のxの更新も追います。
- 6:最初のxを2倍していません。先にyを計算します。
同じ処理の最後のyは?
5
後のxの更新は、すでに格納したyの値を変えない。
- 3:yには初期値xそのものではなくx+2を格納します。
- 10:10に変わるのはxです。
- 12:yを現在のx+2へ自動更新する処理はありません。
初期値xだけを0へ変え、同じ二文を実行。最後のxは?
4
0+2をyへ、2×2をxへ順に格納する。
- 0:先にyを2へ更新するので、xは0のままではありません。
- 2:2は途中のyです。最後に2倍してxへ格納します。
- 10:10は初期値3のときの結果です。
初期値x=4で同じ二文を実行。最後のyは?
6
代入は参照関係の固定ではなく、右辺を評価した値の格納。
- 4:yへは4+2を格納しています。
- 12:12に更新されるのはxです。
- 14:後のx=12に連動してyが14になることはありません。
上の選択処理でscore=80のラベルは?
A
80以上の条件に境界値80を含む。以降のelseifは評価しない。
- B:最初の80以上が真なので、Bへは進みません。
- C:80は最初の条件を満たします。
- AとBの両方:ifとelseifの選択では最初に真の枝だけを実行します。
score=79のラベルは?
B
80以上は偽、60以上は真。
- A:79は80以上ではありません。
- C:79は60以上なのでBへ進みます。
- 未定義のまま:Bの枝でラベルを格納します。
score=60のラベルは?
B
60以上に境界値60を含む。
- A:60は80以上ではありません。
- C:60以上には60も含まれます。
- AとBの両方:この例は一つの枝を選ぶ処理です。
score=59のラベルは?
C
二つの条件がともに偽なのでelseへ進む。
- A:59は80以上ではありません。
- B:59は60以上ではありません。
- 未定義のまま:どちらも偽の場合、elseでCを格納します。
n=3で上のwhileが終了したとき、totalは?
6
1+2+3。終了判定時のi=4を加えない。
- 3:3は本体の回数。合計値は1+2+3です。
- 4:4は終了時のi。合計値とは別です。
- 10:10は停止時のi=4まで加えた値。この例では4を加えません。
n=0に変更したとき、本体の実行回数は?
0
最初の1≦0が偽。前判定のwhile本体は一度も実行しない。
- 1:whileは先に条件を判定し、1≦0は偽です。
- 3:3回はn=3の条件です。
- 6:n=0では本体へ入りません。
n=1に変更したとき、終了時のiは?
2
1回加算した後にiを2へ更新し、次の判定が偽になる。
- 0:iの初期値は1で、減らす処理はありません。
- 1:一度加算した後にiを1増やします。
- 3:2≦1が偽なので、そこから増やしません。
n=4に変更したとき、最後のtotalは?
10
i=4を含む4回の加算。繰返し回数と合計値を分ける。
- 4:4は回数。1+2+3+4を計算します。
- 6:6はn=3の合計。この例では4も加算します。
- 15:15は5まで加えた値。5≦4は偽です。
要素番号1からのa={8,3,5}。更新前のa[2]の値は?
3
要素番号が1から始まるというこの例の条件では、a[2]は二つ目の3。
- 2:2は指定した番号で、その場所の値は3です。
- 5:5はa[3]の値です。
- 8:8はa[1]の値です。
i=2でa[i] ← a[1] + a[i]。更新後のa[2]は?
11
更新前のa[1]=8とa[2]=3を加えてa[2]を11にする。
- 3:3のままではなく、右辺の計算結果で更新します。
- 5:番号を足すのではなく、二つの要素の値8と3を足します。
- 13:13はi=3とした別の条件の結果です。
初期配列を同じ{8,3,5}に戻し、i=3で同じ一文を実行。a[3]は?
13
更新先をa[3]へ変えたので8+5。
- 5:a[3]は8+5の結果で更新します。
- 11:11はi=2のときの計算です。
- 16:16はi=1で8を二度読む場合です。
初期配列に戻し、i=1で同じ一文を実行。a[1]は?
16
右辺の二つのa[1]はともに更新前の8。評価後に16を格納。
- 8:右辺で8+8を評価し、16に更新します。
- 11:11はa[1]とa[2]を足した場合です。
- 24:右辺の途中で左辺を更新して足し直す処理ではありません。
a={4,7,4}、番号は1から。先頭から4を探して最初の一致で終了。返す番号は?
1
最初の一致で終了するため、最後の一致3ではなく1。
- 0:1番目で一致するので未発見の0ではありません。
- 3:3番目にも4がありますが、最初の一致で既に終了します。
- 4:4は探した値。返すのは要素番号です。
同じ配列で7を探す。a[i]とtargetの値の比較回数は?
2
1番目の不一致、2番目の一致の2回だけ値を比較。
- 1:1番目では不一致。2番目の比較も必要です。
- 3:2番目で一致して終了し、3番目は比較しません。
- 7:7は探す値で、比較回数ではありません。
同じ配列で9を探す。未発見なら0を返す約束の場合、戻り値は?
0
全要素と比較して不一致。0はこの例で定義した未発見の戻り値。
- 3:3はこの条件での値比較回数。戻り値とは別です。
- 4:要素数の次の番号を返す約束ではありません。
- 9:9は検索対象の値。この例は未発見なら0を返します。
同じ手順を空の配列に適用して4を探す。値の比較回数は?
0
要素がないので値の比較は0回。ループの条件確認とは区別。
- 1:比較する要素がないので、一度も値を比較しません。
- 3:3要素の配列とは入力条件が違います。
- 4:4は探した値で回数ではありません。