【アルゴリズム入門 Q015】1から指定の数までの10倍の数を縦に表示

アルゴリズム アルゴリズム

こんにちは。ECF代表のヒガです。

本記事では初心者向けアルゴリズムの演習問題を紹介しています。日頃のプログラミング学習にご活用ください。

はじめに

アルゴリズムとは、コンピューターに行わせる計算手順のことです。自在にプログラムを作るには、プログラム言語の文法の知識とともにアルゴリズムの考え方を身につけることが必要になります。

アルゴリズム技法習得の肝は「繰り返し」の活用です。この連載では、簡単な題材で繰り返しを使うアルゴリズムの基本パターンを練習していきます。

演習問題の一覧や勉強スタイルについてのアドバイスはこちらからどうぞ。

【プログラミング初心者向け】アルゴリズム入門 演習問題集 〜 繰り返しをマスターしよう!
こんにちは。ECF代表のヒガです。 プログラミング初心者向けアルゴリズム演習問題の連載記事まとめです。日頃のプログラミング学習、講義、研修等での演習にご活用ください。 「繰り返しアルゴリズム」をマスターしよう アルゴリズムとは、コンピュ...

Q015 1から指定の数までの10倍の数を縦に表示

複数行にわたり1から指定の数の10倍の数を表示してください。ただし、最後の数(10倍する前の数)はプログラムの先頭で変数に代入することで指定してください。

「7」を指定した場合の実行例は次のとおりです。

ヒント

Q014とほぼ同じアルゴリズムですが、表示のときに10倍の計算が必要になります。

解答例と解説

考え方

まず最初に「何を繰り返す」かを考えます。今回の場合は

  • 計算した数を表示する(改行有り)

を繰り返すことになります。

表示する数が何を表すか(どう計算するか)を考える必要があります。1から指定の数まで1ずつ増やした数をそれぞれ×10した数ですので、繰り返しのカウンタ変数の値を使って計算しましょう。箇条書きでまとめると、

  1. 最後の数を指定する(変数に代入する)
  2. 次の動作を1から指定の数まで繰り返す
    1. カウンタ変数の値×10の計算結果を表示する
    2. 改行する

という流れになります。

フローチャート例

Q014との違いは表示の部分のみです。カウンタ変数iに×10した数の表示となっています。

Javaでの実装例

public class Q015 {
    public static void main(String[] args) {
        int n = 7; // 表示の最大値
        
        for (int i = 1; i <= n; i++) {
            int ans = i * 10; // 10倍の計算
            System.out.println(ans);
        }
    }
}

上のフローチャートからは少しだけ処理を増やし、×10の計算は6行目で行い変数ansに代入、7行目の表示はその変数ansを表示、としました。今回は表示対象が「i × 10」という単純な計算式なので

System.out.println(i * 10); // 10倍を計算し表示

と書いてもそれほど見通しは悪くないのですが、実践でやるような少し凝ったアルゴリズムだと、変数に一度代入してからの表示、他の計算・条件式への活用の方が便利な場面が多いです。

おわりに

コンピューターが一番得意なこと、プログラムで一番やりたいことと言えば、何らかの計算の繰り返しです。全社員の給料の項目を計算したり、注文した複数商品の税込合計額を計算したり、複数キャラクターの画面内での表示位置を計算したりします。これらはすべて「何らかの計算の繰り返し」なのです。

今回の問題はその「何らかの計算を繰り返し」について最も素朴なアルゴリズムとなっています。計算がからんでくると、毎回の考え方で示している「何を繰り返すか」のところが段々難しくなってきますが、まずは問題文をしっかり読んで理解することが大切です。

次回はこちらです。

【アルゴリズム入門 Q016】1から指定の数までの指定倍の数を縦に表示
こんにちは。ECF代表のヒガです。 本記事では初心者向けアルゴリズムの演習問題を紹介しています。日頃のプログラミング学習にご活用ください。 はじめに アルゴリズムとは、コンピューターに行わせる計算手順のことです。自在にプログラムを作るには...

合同会社イー・シー・エフでは、子ども向けプログラミングなどの教育講座を実施しています。プログラミング教室の案内や教育教材の情報、また関連するご相談・問い合わせにつきましては下記よりご確認ください。

ECFエデュケーション
タイトルとURLをコピーしました