前回の記事(擬似言語④)はこちら
■
また、ITパスポートの擬似言語を初回から勉強したい方はこちら↓
■
今回はITパスポート試験問題、令和5年問64を解説していきます。合計を求めるアルゴリズムということで、前回の問60のバブルソート(整列)よりは易しめの問題かと思います。
解説を動画で視聴したい方は、下記をご参照ください。
目次
ITパスポート試験令和5年問64 問題文
関数sigmaは、正の整数を引数maxで受け取り、 1からmaxまでの整数の総和を戻り値とする。プログラム中のaに入れる字句として、適切なものはどれか。
〔プログラム〕
○整数型: sigma(整数型: max)
整数型: calcX ← 0
整数型: n
for (nを 1 から max まで 1 ずつ増やす)
【 a 】
end for
return calcX
ア calcX ← calcX × n
イ calcX ← calcX + 1
ウ calcX ← calcX + n
エ calcX ← n
冒頭文の解説
それでは、非常に大切な冒頭文を確認していきます。
関数sigumaは正の整数を引数maxで受け取り、1からmaxまでの整数の総和、つまり総合計を戻り値にします。
プログラムの中の5行目の【a】に入れる字句として適切なものはどれか、ということで選択肢ア~エが用意されています。
プログラム文の解説
それではプログラムを見ていきましょう。
1行目~3行目
まず1行目、冒頭に「〇」が付いていますので、関数(または手続き)の宣言となります。ここでは、整数型の関数sigmaを宣言しています。さらに関数sigmaは整数型のmaxという変数を引数で取ることがわかります。
2行目は、これはcalcxという整数型変数の宣言です。ここに「←0」と書いてありますが、これはcalcxに0を代入する意味です。代入とは実際には値の上書きに相当します。また、今回のように、宣言時に代入することを初期化といいます。いずれにしても、calcxは最初は0からスタートということになります。
3行目は、整数型nという変数を宣言してます。
4行目~7行目
続いて4行目~7行目は、繰り返しのfor文です。繰り返しのfor文では、4行目のforの括弧内の条件を満たすまで、forとendforで囲まれた部分を繰り返します。つまり、ここでは5行目の【a】を繰り返すということです。
そして7行目は、繰り返しが終わった後、変数calcxを戻り値として戻す、ということですね。この関数では、戻り値は1からmaxまでの整数の総和にならなければなりません。
では、5行目のfor文の条件を見てみましょう。
nを1からmaxまで1ずつ増やす
ということで、maxの回数分、5行目のaを繰り返すわけです。
そして、maxの回数分、aを繰り返した時にcalcxの値が1~maxまでの総和になっている選択肢が正解となります。
選択肢をみる
このような問題では、maxに簡単な値を入れて、それぞれの選択肢をaに入れてみるのが一番はやい方法となります。
ここでは、max=3を代入してみましょう。そうすると、for文を3回繰り返した後のcalcxの値は 1+2+3=6になる選択肢が正解です。
選択肢ア
calcX ← calcX × n
こちら、1回目は calcxの初期値は0ですから、0に何回nを掛けても、0のままです。よって不適切です。
選択肢イ
こちら、1回目はcalcx(値は0)に1をプラスするので、calcxは1となります。2回目はcalcx(値は1)に1をプラスするので、calcxは2となります。3回目はcalcx(値は2)に1をプラスするので、calcxは3となります。したがって、6ではないので不適切です。
選択肢ウ
こちら、1回目はcalcx(値は0)にn=1をプラスするので、calcxは1となります。2回目はcalcx(値は1)にn=2をプラスするので、calcxは3となります。3回目はcalcx(値は3)にn=3をプラスするので、calcxは6となります。したがって、こちらが適切です。
選択肢エ
こちら、1回目はcalcx(値は0)にn=1を代入するので、calcxは1となります。2回目はcalcx(値は1)にn=2を代入するので、calcxは2となります。3回目はcalcx(値は2)にn=3を代入するので、calcxは36となります。したがって、6ではないので不適切です。
まとめ
このような問題が出た場合は、引数に簡単な数字を入れてみて試してみるのが一番手っ取り早い解法になります。
ぜひ復習して、何も見ずに解けるようになってください。
※次回は、令和4年問78 10進9桁の整数の数値を入力として受け取り、そのチェックデジットを出力する関数を記述する問題を解いていきます。