ひとつの変数について, ある範囲の値をすべてとらせるためには, for文を使って繰り返せばよいことを前回学んだ. たとえば, i を0から10まで変えながら何かの処理を行うには,
とすればよいのだった. こうすると,for(i=0; i<=10; i++){ 何かの処理; }
の順に処理が行われる.iが0 iが1 … iが10
これを行うプログラムが二重ループで,iが0, jが0 --- まずiを0に固定して計算開始 iが0, jが1 --- jを増やす iが0, jが2 … iが0, jが5 --- jが一巡したので, iを増やすときがきた iが1, jが0 --- jはまた0に戻って次の一巡を始める iが1, jが1 iが1, jが2 … iが10, jが4 iが10, jが5
となる. 外側のループがiをひとつ固定し, 内側のループがそのiに対してjを一巡させているわけだ.for(i=0; i<=10; i++){ for(j=0; j<=5; j++){ 何かの処理; } }
まず, i が0に固定される. で, 内側のjのループが始まる. jの初期値も0だが, ループの継続条件「j<i」は この時点で既に成立していない. したがって,内側のループは一度も繰り返すことなく終了して, 次のiの値にすすむことになる. 以下, こうなる:
List 6-4がこのような順序で動くことを理解してもらいたい.iが1, jが0 --- iが1になってjのループ開始するが一回でおわり iが2, jが0 --- iが2にふえて, jのループ開始 iが2, jが1 --- jが一巡した iが3, jが0 --- iが3にふえて, jのループ開始 iが3, jが1 iが3, jが2 --- jが一巡した iが4, jが0 --- iが4にふえて, jのループ開始 iが4, jが1 iが4, jが2 … iが9, jが7 iが9, jが8 --- jが一巡した, さらにiもループ終了