完全無料全講座・全機能が無料追加課金なし
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は探した値で回数ではありません。

← 授業一覧に戻る