次のプログラムの実行した際の表示結果を答えよ。
(1)x = 3
(2)y = 4
(3)goukei = x + y
(4)表示する("合計は",goukei,"です。")
答えと解説を見る
答え合計は7です。
解説変数xとyに入っている値を足し、その結果を別の変数に保存します。
xが3、yが4なら、合計は7になります。
(1)x = 3
(2)y = 4
(3)goukei = x + y
(4)表示する("合計は",goukei,"です。")
答え合計は7です。
解説変数xとyに入っている値を足し、その結果を別の変数に保存します。
xが3、yが4なら、合計は7になります。
(1)x = 1
(2)x = 2
(3)表示する("現在のxの値は", x, "です。")
答え現在のxの値は2です。
解説代入文は、右辺を計算してから左辺の変数へ保存します。
同じ変数へ後から代入すると、前の値は新しい値に置き換わります。
(1)x = 1
(2)y = 2
(3)tmp = x
(4)x = y
(5)y = tmp
(6)表示する("現在のxの値は", x, "です。")
(7)表示する("現在のyの値は", y, "です。")
答え現在のxの値は2です。 現在のyの値は1です。
解説二つの変数を交換するときは、一方の値を一時変数に退避します。
退避せずに上書きすると、最初の値を失ってしまいます。
(1)x = 10
(2)x = x + 1
(3)表示する("現在のxの値は", x, "です。")
答え現在のxの値は11です。
解説右辺のx+1を計算した結果を、同じxへ代入します。
読み出しは代入前に行われるので、xは元の値より1大きくなります。
(1)Data = [3, 5, 9]
(2)表示する("Data[0]は", Data[0])
(3)表示する("Data[1]は", Data[1])
(4)表示する("Data[2]は", Data[2])
(5)表示する("Dataは", Data)
答えData[0]は3 Data[1]は5 Data[2]は9 Dataは[3, 5, 9]
解説配列の添字が0から始まる場合、最初の要素はData[0]です。
添字を一つずつ増やすと、配列の先頭から順に参照できます。
(1)Data = [3, 5, 9]
(2)Data[0] = 4
(3)表示する("現在のDataは",Data)
答え現在のDataは[4, 5, 9]
解説Data[0]へ4を代入すると、配列の先頭要素だけが4になります。
配列全体の値が同じになる操作ではありません。
(1)表示する(Matrix[0, 0])
(2)表示する(Matrix[0, 1])
(3)表示する(Matrix[1, 2])
答え1 2 6
解説添字は0から始まり、Matrix[行, 列]の順に位置を指定します。
Matrix[0,0]は1、Matrix[0,1]は2、Matrix[1,2]は6なので、1、2、6の順に表示されます。
(1)x = 7
(2)もし x < 10 ならば:
(3)| 表示する("xに10を加える。")
(4)⎿ x = x + 10
(5)表示する("xの値は", x)
答えxに10を加える。 xの値は17
解説x=7では条件x<10が成り立つため、まず「xに10を加える。
」と表示します。
続いてxを7+10=17へ更新し、分岐の外で「xの値は17」と表示します。
(1)x = 7
(2)もし x > 10 ならば:
(3)| 表示する("xは10より大きいです。")
(4)そうでなければ:
(5)⎿ 表示する("xは10以下です。")
答えxは10以下です。
解説x>10が偽のときは、xが10以下であることが分かります。
else側では、その条件に対応する処理が行われます。
(1)x = 7
(2)もし x > 10 ならば:
(3)| 表示する("xは10より大きいです。")
(4)そうでなくもし x > 5 ならば:
(5)| 表示する("xは5より大きく10以下です。")
(6)そうでなければ:
(7)⎿ 表示する("xは5以下です。")
答えxは5より大きく10以下です。
解説条件を上から順に調べ、最初に真になった分岐だけを実行します。
7は10より大きくありませんが、5より大きいので中央の分岐です。
(1)age = 【外部からの入力】 #19と入力
(2)is_student = 【外部からの入力】 #Yesと入力
(3)もし age <= 18 ならば:
(4)| 表示する("25%の割引")
(5)そうでなければ:
(6)| もし is_student == "Yes" ならば:
(7)| | 表示する("20%の割引")
(8)| そうでなければ:
(9)⎿ ⎿ 表示する("割引なし")
答え20%の割引
解説年齢条件で対象外になった後、学生かどうかを調べます。
19歳の学生なら、学生向けの20%割引の条件に該当します。
(1)age = 【外部からの入力】 #19と入力
(2)is_student = 【外部からの入力】 #Yesと入力
(3)もし age <= 18 or age >= 65 ならば:
(4)| price = 1200
(5)そうでなくもし age <= 25 and is_student == "Yes" ならば:
(6)| price = 1500
(7)そうでなければ:
(8)⎿ price = 1800
(9)表示する(price, "円です。")
答え1500円です。
解説19歳は最初の「18歳以下または65歳以上」に当てはまりません。
次の「25歳以下かつ学生」が成立するためpriceへ1500が直接代入され、「1500円です。
」と表示されます。
割引率を計算する処理はありません。
(1)i を 1 から 5 まで 1 ずつ増やしながら繰り返す:
(2)⎿ 表示する("今のiは", i)
(3)表示する("繰り返し終了")
答え今のiは1 今のiは2 今のiは3 今のiは4 今のiは5 繰り返し終了
解説iは1、2、3、4、5と変化し、各回で現在のiを1行ずつ表示します。
5回の繰り返しが終わると、ループの外にある「繰り返し終了」を最後に1回だけ表示します。
(1)sum = 0
(2)i を 1 から 5 まで 1 ずつ増やしながら繰り返す:
(3)| sum = sum + i
(4)⎿ 表示する("現在の合計は", sum)
(5)表示する("最終的な合計は", sum)
答え現在の合計は1 現在の合計は3 現在の合計は6 現在の合計は10 現在の合計は15 最終的な合計は15
解説変数iを毎回加えるなら、1、2、3、4、5を順番に合計します。
累積値は1、3、6、10、15と変化します。
(1)Tokuten = [5, 7, 8, 4]
(2)sum = 0
(3)i を 0 から 要素数(Tokuten) - 1 まで 1 ずつ増やしながら繰り返す
(4)⎿ sum = sum + Tokuten[i]
(5)average = sum / 4
(6)表示する("4人の平均点は", average, "点です")
答え4人の平均点は6点です
解説合計を求めるループでは、各値をsumへ加えます。
5+7+8+4は24で、4個の平均は6です。
(1)count = 0
(2)i を 1 から 10 まで 1 ずつ増やしながら繰り返す:
(3)| もし i % 3 == 0 ならば:
(4)⎿ ⎿ count = count + 1
(5)表示する("3の倍数の個数は", count)
答え3の倍数の個数は3
解説1から10までにある3の倍数は3、6、9の三つです。
条件が成り立つたびにcountを1増やすため、最後は「3の倍数の個数は3」と表示します。
(1)max_value = 0
(2)i を 1 から 5 まで 1 ずつ増やしながら繰り返す:
(3)| number = 【外部からの入力】
(4)| もし number > max_value ならば:
(5)⎿ ⎿ max_value = number
(6)表示する("最大値は", max_value)
答え最大値は9
解説max_valueは0から始まります。
5で5、8で8へ更新され、3では変わらず、9で9へ更新され、最後の2でも変わらないため、「最大値は9」と表示されます。
(1)i を 1 から 9 まで 1 ずつ増やしながら繰り返す:
(2)| j を 1 から 9 まで 1 ずつ増やしながら繰り返す:
(3)⎿ ⎿ 表示する(i, "×", j, "=", i * j)
答え1×1=1 1×2=2 ︙ 1×9=9 2×1=2 2×2=4 ︙ 9×8=72 9×9=81
解説二重ループでは、外側の値を固定したまま内側を一周します。
行と列の組合せを作るので、九九のような表を生成できます。
(1)sum = 0, i = 0
(2)i < 5 の間繰り返す:
(3)| i = i + 1
(4)| sum = sum + i
(5)⎿ 表示する("現在のsumは", sum ,", iは", i)
(6)表示する("最終的なsumは", sum)
答え現在のsumは1, iは1 現在のsumは3, iは2 現在のsumは6, iは3 現在のsumは10, iは4 現在のsumは15, iは5 最終的なsumは15
解説while文は条件が真の間だけ続きます。
iを1から増やしながら足すと、1+2+3+4+5で15になります。
(1)Tokuten = [79, 55, 69, 80, 32]
(2)Gouhi = [" ", " ", " ", " ", " "]
(3)i を( ア )繰り返す:
(4)| もし( イ )ならば:
(5)| ⎿ Gouhi[i] = "合格"
(6)| そうでなければ:
(7)⎿ ⎿ Gouhi[i] = "不合格"
( ア )
1.0 から 要素数(Tokuten) まで 1 ずつ増やしながら
2.0 から 要素数(Tokuten) - 1 まで 1 ずつ増やしながら
3.1 から 要素数(Tokuten) まで 1 ずつ増やしながら
4.1 から 要素数(Tokuten) - 1 まで 1 ずつ増やしながら
( イ )
1.Tokuten[i] >= 60
2.Tokuten[i] <= 59
3.Gouhi[i] == "合格"
4.Gouhi[i] == "不合格"
答えア 2.0 から 要素数(Tokuten) - 1 まで 1 ずつ増やしながら イ 1.Tokuten[i] >= 60
解説5要素の添字は0~4なので、iは0から要素数(Tokuten)−1まで動かします。
各Tokuten[i]が60以上なら同じ位置のGouhi[i]を「合格」にし、それ以外を「不合格」にするため、アは選択肢2、イは選択肢1です。
(1)Tokuten = 【外部からの入力】
(2)Dosu = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] #配列を初期化
(3)i を 0 から 要素数(Tokuten) - 1 まで 1 ずつ増やしながら繰り返す:
(4)| もし Tokuten[i] == 100 ならば:
(5)| | index = ( ア )
(6)| そうでなければ:
(7)| ⎿ index = ( イ )
(8)⎿ Dosu[index] = Dosu[index] + 1
(9)表示する("度数分布は", Dosu)
1.ア 9 イ Tokuten[i] % 10
2.ア 9 イ Tokuten[i] ÷ 10
3.ア 10 イ Tokuten[i] % 10
4.ア 10 イ Tokuten[i] ÷ 10
答え2.ア 9 イ Tokuten[i] ÷ 10
解説0から9の10個の区間へ得点を分類するなら、得点を10で割った整数部分を添字として使えます。
90点台や100点は最後の区間へまとめます。
(1)Array = 【外部からの入力】
(2)i を 0 から ( ア ) まで 1 ずつ増やしながら繰り返す:
(3)| j を 0 から ( イ ) まで 1 ずつ増やしながら繰り返す:
(4)| | もし Array[j] > Array[j + 1]ならば:
(5)| | | tmp = Array[j]
(6)| | | Array[j] = Array[j + 1]
(7)⎿ ⎿ ⎿ Array[j + 1] = tmp
(8)表示する("バブルソート後:", Array)
( ア )
1.要素数(Array)
2.要素数(Array) - 1
3.要素数(Array) - 2
4.要素数(Array) - 3
( イ )
1.要素数(Array) - i
2.要素数(Array) - i - 1
3.要素数(Array) - i - 2
4.要素数(Array) - i - 3
答えア 3.要素数(Array) - 2 イ 3.要素数(Array) - i - 2
解説要素数をnとすると、全体の走査はi=0~n−2のn−1回で十分なので、アは要素数(Array)−2です。
i周目には右端側のi個が確定しており、jとj+1を比べる最後のjはn−i−2となるため、イは要素数(Array)−i−2です。
(01)Array = 【外部からの入力】
(02)target = 【外部からの入力】
(03)found = -1
(04)iを 0 から 要素数(Array) - 1 まで 1 ずつ増やしながら繰り返す:
(05)| もし ( ア )ならば:
(06)⎿ ⎿ found = i
(07)もし ( イ ) ならば:
(08)| 表示する(target, "は配列の", found, "番目の要素です")
(09)そうでなければ:
(10)⎿ 表示する(target, "は配列の中に存在しません")
( ア )
1.Array[i] == target
2.Array[i] != target
3.Array[i] >= target
4.Array[i] <= target
( イ )
1.found == -1
2.found != -1
3.found == 0
4.found != 0
答えア 1.Array[i] == target イ 2.found != -1
解説Array[i]がtargetと等しいとき、その添字iをfoundへ保存するので、アは選択肢1です。
foundは−1で始まり、見つかれば0以上の添字に変わるため、発見済みを判定するイはfound != −1、つまり選択肢2です。
1.5 * 整数(乱数())
2.5 * 整数(乱数()) + 1
3.整数(5 * 乱数())
4.整数(5 * 乱数()) + 1
答え4.整数(5 * 乱数()) + 1
解説0以上1未満の乱数に5を掛けて整数部分を取り、1を加えると1〜5になります。
整数部分は0〜4のいずれかです。
(1)dosu = [0, ... ,0] #すべての要素が0,十分な要素数
(2)toss = 20, set = 100
(3)i を 1 から set まで 1 ずつ増やしながら繰り返す:
(4)| count = 0
(5)| j を 1 から toss まで 1 ずつ増やしながら繰り返す:
(6)| | もし 乱数() < 0.5 ならば:
(7)| ⎿ ⎿ count = count + 1
(8)⎿ ( ア )
(9)表示する("結果:", dosu)
1.dosu[j] = count
2.dosu[i] = count
3.dosu[count] = count
4.dosu[count] = dosu[count] + 1
答え4.dosu[count] = dosu[count] + 1
解説各セットで表が出た回数をcountに数え、dosu[count]を1増やします。
countを添字にすることで、「表がn回だったセットが何回あったか」を度数分布として集計できます。
(01)Birthdays = [] #空の配列
(02)found = 0 , count = 0
(03)( ア ) の間繰り返す:
(04)| day = ランダム日付()
(05)| count = count + 1
(06)| もし Birthdays に day が含まれている ならば:
(07)| | ( イ )
(08)| そうでなければ:
(09)⎿ ⎿ 要素追加(Birthdays, day)
(10)表示する("同じ誕生日が見つかるまでの回数:", count)
( ア )( イ )
1.found = 0
2.found = 1
3.found == 0
4.found == 1
答えア 3.found == 0 イ 2.found = 1
解説新しい値を既存配列へ追加する前に、同じ値があるかを調べます。
重複が見つかったらフラグを1にし、重複なしのときだけ追加します。
(01)営業終了時刻 = 900
(02)現在時刻 = 0
(03)利用時間 = 0 #利用時間が0ならば利用可能状態
(04)待ち客数 = 0 #現在の待っている人数
(05)総待ち時間 = 0 #複数人いる場合重複して数える
(06)顧客数 = 0 #来客者数全体
(07)現在時刻 < 営業終了時刻 の間繰り返す:
(08)| もし 乱数() < 0.1 ならば:
(09)| | 待ち客数 = 待ち客数 + 1
(10)| ⎿ 顧客数 = 顧客数 + 1
(11)| もし 利用時間 > 0 ならば:
(12)| ⎿ 利用時間 = 利用時間 - 1
(13)| もし ( ア ) ならば:
(14)| | 利用時間 = ランダム整数(2, 6)
(15)| ⎿ 待ち客数 = 待ち客数 - 1
(16)| もし 待ち客数 > 0 ならば:
(17)| ⎿ 総待ち時間 = 総待ち時間 + 待ち客数
(18)⎿ 現在時刻 = 現在時刻 + 1
(19)表示する("本日の来客者数:", 顧客数)
(20)表示する("平均待ち時間", 総待ち時間 / 顧客数)
( ア )
1.待ち客数 > 0
2.利用時間 == 0
3.待ち客数 > 0 and 利用時間 == 0
4.待ち客数 > 0 or 利用時間 == 0
答え3.待ち客数 > 0 and 利用時間 == 0
解説待ち行列に客がいて、かつATMが空いているときに次の客の処理を開始します。
平均待ち時間は、待ち時間の合計を客数で割って求めます。