第七章 
 〜基本編〜
 繰り返し
   いきなりですが、プログラムの基本構造というのを3つに分けると・・・
  順次、選択、反復という3つの構造に分けることができるです〜
  そして今回やる繰り返しというのは、反復にあたるです〜
  ちなみに順次というのは、普通に上から下へと流れるプログラムです。
  選択というのは、条件判断のときにやったif文やswitch文です〜
   では、今回やる反復(繰り返し)とはいったいどういうものなのか
  説明していくです〜
  同じ処理を10回繰り返したいとき、これまでの考えでやると
  同じ処理を10回書かなければいけなかったです。(大変です〜

  System.out.println("連続で出力");
  System.out.println("連続で出力");
  System.out.println("連続で出力");
       :
  System.out.println("連続で出力"); ←10回目

   これは、かなり面倒くさいです〜
  それにプログラムも長くなってしまうですね!
   そこで、今回お勧めするのがこちらのfor文とwhile文の二つです〜
  これを使えば今日からあなたもプログラム上手!
  では、さっそく商品の説明を・・・あっ命令の説明です〜)

  まずは、for文
  実際にfor文を使って同じ処理を10回やるプログラムを作ってみたいと思うです〜
  商品の勧誘もそうですが、実際に見てもらった方が、
  そのすごさを分かってもらえると思うです〜
サンプルプログラム7_1
   1:
   2:
   3:
   4:
   5:
   6:
   7:
   8:
class Rei7_1{
    public static void main(String[] args){
        int i;
        for(i=0; i<10 ; i++){
            System.out.println("連続で出力");
        }
    }
}

   今回は、いつにもましてカラフルですが、for文の内部について説明するです〜
  やっぱり注目はカラフルな5行目ですね!
  if文のときにはif()を使っていたので、やっぱりfor文のときにはfor()を使うです。
  そして、処理を繰り返したいときに使うです。
   まずfor()の中で一番最初に来る紫色で書かれているところを説明するです。
  これは、変数の初期化です。
  変数の初期化と言っても、ここでの変数は制御変数です〜
  制御変数というのは、繰り返し処理をするときに使う変数です。
  この変数を元に、for文は処理されていくです。
  ここの初期化の部分は、実は変数の宣言と同時に行うことも可能です。
  ここでは、変数を0で初期化してるですね!
  ちなみに変数の宣言と同時にやるとここの部分はint i=0になるです。

   次に、for()の中で真ん中に登場する緑色で書かれているところを説明するです。
  これは、繰り返し条件を書くです。
  条件はif文でやったですね!(以上とか以下とかより大きいとか)
  その条件にあてはまっているとき繰り返すということです。
  ここでは、変数iが10より小さいとき繰り返すってことですね!
   そしてfor()の中で最後に登場する青色で書かれたところを説明するです。
  これは、制御変数の増分値を書くです。
  増分値だからといって、いつもプラスだとはかぎらないことも覚えてほしいです〜
  それは、真ん中の条件によって変わってくるです。
  ここでは、iに1を加算してるですね!

  for文の内部を言葉にすると・・・
   for(制御変数の初期化; 繰り返し条件 ; 増分値)

  for文の中では、それら3つがどのような順番で処理をしていくか説明するです〜
  1 まず最初は、やはり初期化です〜
  2 繰り返し条件にあてはまっているか見るです。
   もしあてはまって入れば { から }までの間を繰り返すです〜
   あてはまってなければループからぬけるです。
  3 そして最後に } まできたら、増分値で変数の値を増やすです。
  4 再び2に戻るです〜

  ループというのは、{ から }までの間を繰り返す処理を言うです〜
  1〜4を繰り返していくことによって繰り返し処理を実現できるのです。

  そして、while文
  while文はfor文を分解したような感じのものです。実際にみてみるです〜
サンプルプログラム7_2
   1:
   2:
   3:
   4:
   5:
   6:
   7:
   8:
   9:
class Rei7_2{
    public static void main(String[] args){
        int i = 0;
        while(i<10 ){
            System.out.println("連続で出力");
            i++;
        }
    }
}

   while文は、繰り返し条件だけを書くです。
  サンプルプログラム7_2は、7_1と同じ処理をwhile文で行っているです。
  繰り返し処理を条件しか書けないので、変数の初期化などは、
  自分で書いておかないとだめです・・・
  for文と違って不便じゃ〜んと思うかもしれないですが、実は使い道が違うのです。

  for文は、繰り返し回数が分かっているときに使う
  while文は、繰り返し回数が決まってないときに使う

   実際に繰り返し回数が決まってないというのは、どんなときかと言うですと、
  例えば-1を入力するまで繰り返すといったときです。
  では、そのプログラムを作ってみるです〜
サンプルプログラム7_3
   1:
   2:
   3:
   4:
   5:
   6:
   7:
   8:
   9:
   10:
   11:
   12:
   13:
   14:
   15:
   16:
   17:
   18:
   19:
   20:
   21:
   22:
import java.io.*;

class Rei7_3{
    public static void main(String[] args) throws IOException{
        BufferedReader br = new 
            BufferedReader(new InputStreamReader(System.in));

        System.out.print("-1を入力するまで繰り返すですよ:");
        String str = br.readLine();

        int a = Integer.parseInt(str);

        //-1でないとき繰り返す
        //-1を入力したときは終了する
        while(a != -1){
            System.out.print("-1を入力するまで繰り返すですよ:");
            str = br.readLine();

            a = Integer.parseInt(str);
        }
    }
}

  3回目に-1を入れた場合while文は2回繰り替えされるです。
  5回目に-1を入れた場合while文は4回繰り返されるですね!

   実は、このwhile文には、もう1つ兄弟みたいなものがいるのです。
  それはdo〜while文です。
  このdo〜while文は、while文と違って最低1回は繰り返す機能をもっているです。
  何が便利かと言うですと、サンプルプログラム7_3をdo〜while文を使って
  作ってみたいと思うです。
サンプルプログラム7_4
   1:
   2:
   3:
   4:
   5:
   6:
   7:
   8:
   9:
   10:
   11:
   12:
   13:
   14:
   15:
   16:
   17:
   18:
   19:
import java.io.*;

class Rei7_4{
    public static void main(String[] args) throws IOException{
        BufferedReader br = new 
            BufferedReader(new InputStreamReader(System.in));

        String str;
        int a;
        
        //-1でないとき繰り返す
        //-1を入力したときは終了する
        do{
            System.out.print("-1を入力するまで繰り返すですよ:");
            str = br.readLine();
            a = Integer.parseInt(str);
        }while(a != -1);
    }
}

   ぱっとみて、サンプルプログラム7_3よりすっきりしてるとは、思わないですかね?
  それは、1回目の入力もwhile文(do〜while文)に入っているからなのです〜
  while文は、最初に繰り返しをするかの条件判断をしているので、
  while文をやる前に入力をしておかないといけないです。
  そうしなくてもいけちゃう方法はあるですが、それはおいておくです〜
  do〜while文は、最初の説明にもあったように最低1回は繰り返されるです。
  繰り返すかどうかの条件判断が最後に行われているからそうなるのです〜。
  それとdo〜while文の場合while(条件)の右に;を書き忘れないようにしておくですね!


  今回のポイント
  @ for文の()の中は初、変数の初期化; 繰り返し条件; 増分値 を書くです〜
  A for文は、繰り返し回数が分かっているときに使うですね!
  B while文は、繰り返し回数が決まってないときに使うですね!
  C do〜while文は、最低1回は繰り返し処理をするですね!
  D 繰り返す処理のことをループと言うです〜

  TOPに戻る     Java講座に戻る