7-2 擬似言語
令和4年度公開問題 問78
関数 checkDigit は,10進9桁の整数の各桁の数字が上位の桁から順に格納された整数型の配列 originalDigit
を引数として,次の手順で計算したチェックデジットを戻り値とする。プログラム中のaに入れる字句として,適切なものはどれか。ここで,配列の要素番号は1から始まる。
- (1) 配列 originalDigit の要素番号1~9の要素の値を合計する。
- (2) 合計した値が9より大きい場合は,合計した値を10進数の整数で表現したときの各桁の数字を合計する。この操作を,合計した値が9以下になるまで繰り返す。
- (3) (2)で得られた値をチェックデジットとする。

- ア j ← j - 10 × k
- イ j ← k + (j - 10 × k)
- ウ j ← k + (j - 10) × k
- エ j ← k + j
解答 イ

例がなければ,自分で作成する。
手順(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進数の重みを掛けて足す。
1×
22+0×
21+0×
20=4
ここで,binaryStrの末尾から処理をしている。
【 a 】では,2進数の重みを求めている。
繰返し1回目:
20
繰返し2回目:
21
繰返し3回目:
22
iは1から始まっているので,2の(i - 1)乗。ウかエ。
【 b 】では,各桁に2進数の重みを掛けて足している(累計している)。
繰返し1回目:0+
0×20
繰返し2回目:0+
0×21
繰返し3回目:0+
1×22
integerNum + digiNum × exponent
よって,エ。
(参考)
累計の式は,integerNum = integerNum + □