元Webデザイナー兼コーダーの備忘録

ウェブデザインやプログラミング、ブログのカスタマイズなどについてアウトプットしています。

 メニュー

» HTML入門のまとめはこちらです。

構造化プログラミング:順次・反復

プログラムの基本構文は分かるが、どのようにコードに落とし込んだら良いのか悩んでいる方がいましたら、本記事を参考にしてみてください。プログラムを3つの構造に整理します。そのうちのいずれかになるようにコードを考えます。今回は、順次と反復について考えます。サンプルコードは、Javaで記述しています。

構造化プログラミング

プログラムを3つの制御構造に整理します。

  1. 順次(逐次)
    • 上から順に処理する
    • 上からコードを書くと順次処理になるので、難しく考えなくて良い。
  2. 分岐(if文、swithc文)
    • 条件を満たすかどうかで、その先の処理が枝分かれする。
  3. 反復(for文、while文)
    • 条件が満たされる間、同じ処理を繰り返す。

この3つの構造に当てはまるように、コードを考えます。

順次

順次とは、記述された順に上から実行する処理です。

反復

合計を求めるプログラムを例に、反復の考え方を見ていきます。

合計を求めるプログラム(1)

例えば、3つの数字の合計を求めるプログラムについて考えます。以下は、3つの変数を全て足してから変数sumに代入するやり方です。

/* Sample.java */
class Sample {
  public static void main(String[] args) {
    int x = 10, y = 20, z = 30;
    int sum = x + y + z;
    System.out.println("x + y + z = " + sum);
  }
}

ごく普通に足し算をして、合計を求めています。

合計を求めるプログラム(2)

以下は、変数sumに変数を1回ずつ足していくやり方です。

/* Sample.java */
class Sample {
  public static void main(String[] args) {
    int x = 10, y = 20, z = 30;
    int sum = 0;

    sum = sum + x;  // イ
    sum = sum + y;  // ロ
    sum = sum + z;  // ハ

    System.out.println("x + y + z = " + sum);
  }
}

1回、1回、変数sumに変数x、y、zを足して、変数sumに代入しています(イ、ロ、ハの部分)。わざわざ1回、1回、足さなくても良いと思うかもしれませんが、こちらの方が良い場合があります。例えば、数値を10個足す場合を考えると、(1)の考え方だと変数を10個用意しないといけません。これは、冗長で面倒です。記述ミスもあり得ます。

/* (1)の考え方 */
class Sample {
  public static void main(String[] args) {
    int x1 = 1, x2 = 2, x3 = 3, x4 = 4, x5 = 5, x6 = 6, x7 = 7, x8 = 8, x9 = 9, x10 = 10;
    int sum = x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 + x9 + x10;
    System.out.println("x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 + x9 + x10 = " + sum);
  }
}

(2)の考え方だと繰り返し(反復)処理として、以下のように書けます。

/* (2)の考え方 */
class Sample {
  public static void main(String[] args) {
    int[] x = new int[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

    int sum = 0;
    for(int i = 0; i < x.length; i++){
      sum = sum + x[i]; // ニ
    }

    System.out.println("x[0] + x[1] + x[2] + x[3] + x[4] + x[5] + x[6] + x[7] + x[8] + x[9] = " + sum);
  }
}

イ、ロ、ハは、「2つの変数を足して、変数sumに代入する」という処理で、同じ処理を3行書いています。この部分を(2)では、変数を配列で用意してfor文にすることで、1行で書いています(二の部分)。このコードでは10回足していますが、配列の要素数を100個にしても、同じコードで100回足すことができます。(1)の方法で書くよりも変更箇所が少なく済みます。

まとめ

構造化プログラミングの順次と反復について、簡単ではありますが書きました。順次、分岐、反復の形になるようにプログラムを整理して、コードに落とし込めると良いです。今回のコードで、反復処理のありがたみを感じられたのではないでしょうか。

» 構造化プログラミング:概要

» 構造化プログラミング:分岐

» HTML入門のまとめはこちらです。