【アルゴリズム入門 Q005】横と縦に並べる(二重ループ)

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

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

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

はじめに

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

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

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

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

Q005 横と縦に並べる(二重ループ)

文字「●」を縦、横に四角形に敷き詰めるように表示させてください。ただし、並べる行数、列数はプログラムの先頭で変数に代入することで指定してください。

行数に「5」、列数に「5」を指定した場合の実行例は次のとおりです。

ヒント

Q003では横に並べる繰り返しがありました。この「横に並べる繰り返し」を何行も繰り返すことで実行結果を得ることができます。

ただし、改行するタイミングはしっかり見極めましょう。

解答例と解説

考え方

繰り返しの中に繰り返しがある「二重ループ」の例です。

まず最初に「何を繰り返す」かを考えます。今回の場合は小さな繰り返し大きな繰り返し(小さな繰り返しを繰り返す)があることに気がつくでしょうか。

小さな繰り返しは、各行について、

  • 文字'●'を表示する

の繰り返しです。この繰り返しを行数分繰り返すのが大きな繰り返しです。つまり、

  • 「文字'●'を表示する」の繰り返し

を繰り返す、ということです。二重ループですね。

箇条書きでまとめると、

    1. 行数と列数(繰り返し回数)を指定する
    2. 次の動作を行数分繰り返す
      1. 次の動作を列数分繰り返す
        1. 文字'●'を表示する
      2. 改行する

という流れになります。ここで2.2の「改行する」を忘れてしまうと、1行に表示されてしまいますので間違いです。

フローチャート例

Javaでの実装例

public class Q005 {
    public static void main(String[] args) {
        int row = 5;  // 行(縦方向)の数
        int col = 5;  // 列(横方向)の数
        
        for (int i = 0; i < row; i++) {        // 行ループ
            for (int j = 0; j < col; j++) {    // 列ループ
                System.out.print('●');
            }
            System.out.println(); // 列ループが終われば改行
        }
    }
}

プログラムの流れは上のフローチャートと見比べれば理解しやすいでしょう。列ループが終わったタイミングで改行だけを出力するのを忘れないようにしましょう。

おわりに

基本的なアルゴリズムの大多数は、この二重ループをしっかりマスターできればその応用で理解することができます。小さな繰り返しがあり、それが繰り返される。この構造をすぐに見つけられるよう、これからもじっくり練習していきましょう。

次回はこちらです。

【アルゴリズム入門 Q006】2つの文字を交互に並べる(条件分岐と繰り返し)
こんにちは。ECF代表のヒガです。 本記事では初心者向けアルゴリズムの演習問題を紹介しています。日頃のプログラミング学習にご活用ください。 はじめに アルゴリズムとは、コンピューターに行わせる計算手順のことです。自在にプログラムを作るには、...

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

ECFエデュケーション

 

タイトルとURLをコピーしました