JS勉強記②繰り返し処理

for

for (var i = 1; i <= 3; i++){
 console.log(i)
 }

変数iの値を1から3まで出力。

iの初期条件(i=1からスタート)、iの条件(i <= 3)、iに1をインクリメント(i+1)。

その結果をコンソールに出力し続ける。i=4になった時点で処理中止。

while

var j = 1;
 while (j <= 3) {
 console.log(j);
 j++;
}

変数jの値を1から3まで出力。

j=1を宣言。「jの値が3以下」が条件なので、jの値をコンソールに出力。

そのあとjに1をインクリメント。

また最初の処理に戻り、j=4となった時点で処理中止。

do while

var k = 1;
do {
 console.log(k)
 k++;
} while (k <= 3);

変数kの値を1から3まで出力。

k=1を宣言。kの値をコンソールに出力。そのあとkに1をインクリメント。

この処理をkの値が3以下の間繰り返す。k=4となった時点で処理中止。

MEMO:while / do whileの違い

whileは先に変数の条件を確認して、最初の宣言がその条件をクリアしていれば処理(この場合コンソールへの出力)を実施する。↑の場合もしj=4でスタートしていれば、j<=3という条件をクリアしていないので、まったく処理されず終了する。

do whileは先に処理を実施して、その処理を繰り返すかの判定に条件を使う。↑の場合もしj=4でスタートしていても、いったん「4」はコンソールへ出力される。そのあとのjへのインクリメントは中止。

演習

問題:1〜100の整数かつ偶数の値について、合計値を計算してコンソールに出力。(forを使う、偶数=2で割った余りが0)

【自分でググらず書いたコード】

for (var i = 0; i <= 100; i++) {
 if (i % 2 === 0) {
 console.log(i++);
 }
 }

i=0を宣言。iの条件は100以下。この条件下でiに1をインクリメントする。

その次に「もしiの余剰が0だった場合は」コンソールにiを出力という処理を実施。

結果:コンソールに0~100までのうち偶数のみが出力され続けた。

【正解】

var sum = 0;
for (var i = 1; i<= 100; i++) {
 if ((i % 2) === 0) {
   sum += i;
 }
}
console.log(sum);

習ってなかったsumが必要とのこと。sumという変数を合計値として扱う。

sum=0を宣言。そのあとfor分でi=1を宣言。iの条件は100以下。この条件下でiに1をインクリメントする。

その次に「もしiの余剰が0だった場合は」変数sumに変数iを加算代入。

<i=1の場合>
i=1
1 / 2 = 0あまり1
よって処理はしない

<i=2の場合>
i=2
2 / 2 = 1あまり0
sum=0(sumの初期値) + 2(=i)
sum=2

この変数sumにi=100の場合まで加算代入し続ける。その結果をコンソールに出力。

sumはMDNで調べるべきだったのね。あと基本ルールとして()の中で計算するときはさらに()で区切らないといけない。数学思い出すね。

この記事が気に入ったらサポートをしてみませんか?