Open2

JavaScript学習記録4 つみあげトレーニングブック5章

kamimura sorakamimura sora

5章_処理を繰り返す

01_for文による繰り返し

繰り返しとは

順次、条件分岐、繰り返し
この繰り返しを使うと同じ処理を何度も実行する
フローチャート上では繰り返しの開始部分と終了部分を角を落とした四角形で書く

指定した数だけ処理を繰り返す

for文 繰り返しの開始時に一度だけ実行される初期化式
   繰り返しを続けるかどうかを判断する条件式
  繰り返しのたびに実行する事後処理の三つを記号;で区切って書きカッコで囲む
初期化式で繰り返しの回数を数えるためのカウンタと呼ばれる変数に0を代入する
カウンタにはiという変数が使われる

c5_1_1.js
for (let i = 0; i < 3; i++){
    console.log('ペテロはイエスを知らないと言う', i);
}
console.log('ニワトリが鳴く');
console.log(walks[1]);

繰り返しの度カウンタiの値が1ずつ増えていっている
カウンタの値が「i < 3」という条件式に当てはまらなくなったところで繰返しが終了している
比較演算子「<」「<=」の違いに注意

c5_1_1.js
for (let i = 0; i <= 3; i++){
    console.log('ペテロはイエスを知らないと言う', i);
}

for-of文の書き方

繰り返しの中で各要素を取り出して処理を行う

c5_1_2.js
let targets = ['マトA', 'マトB', 'マトC'];
for (let i = 0; i < 3; i++){
    console.log(`${targets[i]}に手裏剣を投げた`);
}

各要素に対して処理を行いたい場合のために、for-of文がある
配列の要素の数だけ繰り返す
↑のプログラムをfor-of文に置き換える

c5_1_3.js
let target = ['マトA', 'マトB', 'マトC'];
for (let target of targets) {
    console.log(`${target}に手裏剣を投げた`);
}

繰り返しの中に繰り返しを書く

繰り返しの中に繰り返しを書いて入れ子状にすることによって多重のループを作る事もできる

c5_1_4.js
let consonants = ['', 'k', 's', 't', 'n'];
let vowels = ['a', 'i', 'u', 'e', 'o'];
for (let consonant of consonants){
    for (let vowel of vowels){
        console.log(`${consonant}${vowel}`);
    }
}

外側のfor-of文が子音の配列consonantsを一回処理する間に、
内側のfor-of文が母音の配列vowelsを5回繰り返している

kamimura sorakamimura sora

02_while文による繰り返し

while文の書き方

while文 処理を行う条件だけを指定して繰り返し処理が実行できる

c5_2_1.js
let password = '';
while (password !== '川'){
    password = prompt('山?: ');
}
console.log('入ってよし');

prompt関数により文字列の入力が求められ’川’が入力されるまで三行目の処理が繰り返される
繰り返しを抜けると文字列’入ってよし’が表示される

後判定のdo...while文

前判定 条件を判定してから繰り返しの処理を行う
後判定 繰り返しの処理を行ってから条件を判定する
後判定→最初から条件が成立していない場合でも必ず繰り返しの処理が実行される
後判定の繰り返しを行うためにdo...while文を使う

c5_2_2.js
do {
    console.log('せめて一度だけでも');
}
while (false)

無限ループを描いてしまった場合

while文は条件式がtrueである限り繰り返し処理を続ける→無限ループが発生

c5_2_3.js
let tsumami = 'shiokara';
while (tsumami !== ''){ //この条件がfalseになることはない
    console.log('sake');
    console.log('tsumami');
}