こんにちは。ECF代表のヒガです。
本記事では初心者向けアルゴリズムの演習問題を紹介しています。日頃のプログラミング学習にご活用ください。
はじめに
アルゴリズムとは、コンピューターに行わせる計算手順のことです。自在にプログラムを作るには、プログラム言語の文法の知識とともにアルゴリズムの考え方を身につけることが必要になります。
アルゴリズム技法習得の肝は「繰り返し」の活用です。この連載では、簡単な題材で繰り返しを使うアルゴリズムの基本パターンを練習していきます。
演習問題の一覧や勉強スタイルについてのアドバイスはこちらからどうぞ。
Q016 1から指定の数までの指定倍の数を縦に表示
複数行にわたり1から指定の数の、指定倍の数を表示してください。ただし、最後の数(指定倍する前の数)はプログラムの先頭で変数に代入することで指定してください。
最終の値に「7」、倍数に「5」を指定した場合の実行例は次のとおりです。
また、今回作成するフローチャートやプログラムは、Q015をベースにしてください。つまり「掛算を繰り返す」、ということを前提にアルゴリズムを組み立ててください。
ヒント
Q015のアルゴリズムにおいて、「10倍」から「指定倍」の計算に変更します。
解答例と解説
考え方
まず最初に「何を繰り返す」かを考えます。今回の場合は
- 計算した数を表示する(改行有り)
を繰り返すことになります。
表示する数が何を表すか(どう計算するか)を考える必要があります。1から指定の数まで1ずつ増やした数をそれぞれ指定倍した数ですので、繰り返しのカウンタ変数の値を使って計算しましょう。箇条書きでまとめると、
- 最後の数を指定する(変数に代入する)
- 次の動作を1から指定の数まで繰り返す
- カウンタ変数の値×指定倍数の計算結果を表示する
- 改行する
という流れになります。
フローチャート例
Javaでの実装例
public class Q016 { public static void main(String[] args) { int n = 7; // 表示の最大値 int bai = 5; // 倍数の指定 for (int i = 1; i <= n; i++) { int ans = i * bai; // 倍数の計算 System.out.println(ans); } } }
上のフローチャートからは少しだけ処理を増やし、×指定倍数の計算は7行目で行い変数ansに代入、8行目の表示はその変数ansを表示、としました。今回は表示対象が「i × bai」という単純な計算式なので
System.out.println(i * bai); // 倍数を計算し表示
と書いてもそれほど見通しは悪くないのですが、実践でやるような少し凝ったアルゴリズムだと、変数に一度代入してからの表示、他の計算・条件式への活用の方が便利な場面が多いです。
おわりに
Q015の変数を使ったパターンでした。変数を使う意義についてはQ003を参照してください。
ただ、「倍数を表示する」という作業はたくさんのアルゴリズムで表現できます。今回も解答例とは別の方法で実現された方もいらっしゃると思います。もちろん仕様(問題文の指示)を満たしていれば正解です。解答例と違うから不正解だと思わず、逆に実行結果が一致しているから正解だと思い込まず、先入観を捨てた上で論理的に自身の解答を確認しましょう。
次回はこちらです。別のパターンで倍数を表示させてみます。
合同会社イー・シー・エフでは、子ども向けプログラミングなどの教育講座を実施しています。プログラミング教室の案内や教育教材の情報、また関連するご相談・問い合わせにつきましては下記よりご確認ください。