7-2 擬似言語

令和4年度公開問題  問78

関数 checkDigit は,10進9桁の整数の各桁の数字が上位の桁から順に格納された整数型の配列 originalDigit を引数として,次の手順で計算したチェックデジットを戻り値とする。プログラム中のaに入れる字句として,適切なものはどれか。ここで,配列の要素番号は1から始まる。

解答 イ

例がなければ,自分で作成する。
手順(1)の結果,配列originalDigitの要素の値の合計jを45とする。
※手順(2)の注釈より,2桁を超えることはない。
手順(2)で4+5=9を求めればよい。

k ← j ÷ 10 の商で「十の位」の4が求まる。
「一の位」の5をどのように求めるかを考える。
j - 10 × kで5が求まる。
よって,j ← k + (j - 10 × k)

令和6年度公開問題  問85

関数binaryToIntegerは,1桁以上の符号なし2進数を文字列で表した値を引数binaryStrで受け取り,その値を整数に変換した結果を戻り値とする。例えば,引数として“100”を受け取ると,4を返す。プログラム中のa, bに入れる字句の適切な組合せはどれか。

解答 エ

2進数100を10進数4に基数変換する場合を考える。
2進数から10進数への基数変換は,各桁に2進数の重みを掛けて足す。
22+0×21+0×20=4

ここで,binaryStrの末尾から処理をしている。
【 a 】では,2進数の重みを求めている。
繰返し1回目:20
繰返し2回目:21
繰返し3回目:22
iは1から始まっているので,2の(i - 1)乗。ウかエ。

【 b 】では,各桁に2進数の重みを掛けて足している(累計している)。
繰返し1回目:0+20
繰返し2回目:0+21
繰返し3回目:0+22
integerNum + digiNum × exponent
よって,エ。

(参考)
累計の式は,integerNum = integerNum + □