学習日記

プログラミング学習のアウトプット用日記

今日の復習

  • ネスト構文のループ脱出

→積が30未満の九九の生成
 
for(var i=1;i<=10;i++){
 for(var j=1;j<10;j++){
  var k=i*j
  if(k>30){break;}
  document.write(k+'&nbsp');
 }
 document.write('<br/>');
}

 

処理の流れをSourcesで確認したのでそれもアウトプット 

 

処理の流れ

var i = 1

i <= 10

(1 <= 10)

true

① var j = 1

j < 10

(1 < 10)

true

var k = i*j

(1 = 1 * 1)

k > 30

(1 > 30)

true

document.write(k+'&nbsp');

(htmlに1とスペースが出力)

② j++

(2 = 1 + 1)

j < 10

(2 < 10)

true

var k = i*j

(2 = 1 * 2)

k > 30

(2 > 30)

true

document.write(k+'&nbsp');

(htmlに2とスペースが出力)

j++

 

②の処理に戻りループが続く

 

j++

(9 = 9 + 1)

j < 10

(10 < 10)

false

 

③  document.write('<br/>');

(下段に改行)この時点で1の段が終了

i++

(2 = 1 + 1)

i <= 10

(2 <= 10)

true

var j = 1

(①の処理からループを繰り返し③に入る)

i++

(3 = 2 +1)

その後もループを繰り返し積が30になった時点で

ネストからループを抜け処理していく。

 

結果:

1 2 3 4 5 6 7 8 9 
2 4 6 8 10 12 14 16 18 
3 6 9 12 15 18 21 24 27 
4 8 12 16 20 24 28 
5 10 15 20 25 30 
6 12 18 24 30 
7 14 21 28 
8 16 24 
9 18 27 
10 20 30 

 

  • ラベルを利用してネスト構造を抜けたあと全体の出力を停止させる。

→積が30を超えた時点で出力を停止

 

kuku :← ラベル名:

for (var i = 1; i < 10; i ++) {

  for (var j = 1; j < 10; j ++) {

   var k = i * j if (k > 30) { break kuku; }← break ラベル名;

   document. write( k + '&nbsp');

  }

 document. write('< br />');

}