JavaScript「繰り返し」復習教材

JavaScript「繰り返し」復習教材
JAVASCRIPT・基礎文法

繰り返しのループを
ゼロから復習しよう

プログラムは「同じ処理を何度も繰り返す」ことができます。この教材では インクリメント、for文、for of文、while文を順番に学び、最後に練習問題と理解度テストで確認します。

開始 条件は true? false ループ終了 true 処理を実行 更新して繰り返す
01 ― BASICS

繰り返し処理の基本

繰り返し処理(ループ)は、「同じような処理を、決めた回数だけ何度も実行する」ための仕組みです。日常生活の「10回スクワットをする」という考え方と同じです。

ループを使わないと…

script.js
console.log("こんにちは");
console.log("こんにちは");
console.log("こんにちは");
console.log("こんにちは");
console.log("こんにちは");

同じ行を5回書くことになります。もし「100回」と言われたら、とても大変です。

ループを使うと

script.js
for (let i = 1; i <= 5; i++) {
  console.log("こんにちは");
}
実行結果こんにちは こんにちは こんにちは こんにちは こんにちは

たった3行で同じ結果になりました。回数を変えたいときは 5 の部分を書き換えるだけです。

ループの3つの種類

構文得意なこと
for「〇回繰り返す」と回数が決まっているとき
for of配列などの中身を1つずつ取り出したいとき
while「条件を満たす間ずっと」繰り返したいとき
POINT

どのループも共通しているのは「条件が true の間だけ繰り返す」という点です。条件が false になった瞬間にループは終わります。

02 ― INCREMENT & DECREMENT

インクリメントとデクリメント

ループでは「何回目か」を数える変数(カウンター)をよく使います。その値を1ずつ増やしたり減らしたりするのが、インクリメントとデクリメントです。

書き方読み方意味同じ意味の式
i++インクリメントi を 1 増やすi = i + 1
i--デクリメントi を 1 減らすi = i - 1
i += 2プラスイコールi を 2 増やすi = i + 2
i -= 3マイナスイコールi を 3 減らすi = i - 3

実際に動かしてみる

script.js
let count = 5;

count++;
console.log(count);

count--;
count--;
console.log(count);

count += 10;
console.log(count);
実行結果6 4 14

変数の中身が 5 → 6 → 5 → 4 → 14 と、書いた順番に変化していきます。

POINT

i++ のように1行で単独に書く場合、++i と書いても結果は同じです。for文では i++ の形がよく使われるので、まずはこちらを覚えましょう。

注意 ― const では使えない

値を書き換えるので、カウンター用の変数は let で宣言します。const で宣言した変数に ++ を使うとエラーになります。

例題

script.js
let stock = 3;

stock--;
console.log("残り: " + stock);
実行結果残り: 2
03 ― FOR STATEMENT

for文

for文は「決まった回数だけ繰り返す」ときにいちばんよく使う構文です。

基本の書き方

syntax
for (初期化; 条件; 更新) {
  // 繰り返したい処理
}

カッコの中は セミコロン( ; )で3つに区切られています。それぞれの役割は次のとおりです。

部分例役割実行されるタイミング
初期化let i = 1カウンター変数を用意する最初に1回だけ
条件i <= 5繰り返すかどうか判定する毎回、処理の前
更新i++カウンターの値を変える毎回、処理の後

具体例:1から5まで表示する

script.js
for (let i = 1; i <= 5; i++) {
  console.log(i);
}
実行結果1 2 3 4 5

動きを順番に追うと、i が 1 のとき表示 → i++ で 2 になる → 条件 2 <= 5 は true なのでもう一度…と続き、i が 6 になった時点で条件が false になり、ループが終わります。

配列と組み合わせる

script.js
const fruits = ["りんご", "みかん", "ぶどう"];

for (let i = 0; i < fruits.length; i++) {
  console.log(i + "番目: " + fruits[i]);
}
実行結果0番目: りんご 1番目: みかん 2番目: ぶどう

配列の番号(インデックス)は 0から始まるので、let i = 0 でスタートし、i < fruits.length(要素数より小さい間)を条件にします。

デクリメントで逆順にする

script.js
for (let i = 3; i >= 1; i--) {
  console.log(i);
}
console.log("スタート!");
実行結果3 2 1 スタート!

大きい数から始めて i-- で減らし、条件を i >= 1 にすればカウントダウンになります。

注意 ― 無限ループ

更新の部分を間違えて i-- と書いてしまうと、i がいつまでも 5 以下のままで条件が false になりません。これを無限ループといい、ブラウザが固まる原因になります。「条件がいつ false になるか」を必ず確認しましょう。

例題

script.js
let total = 0;

for (let i = 1; i <= 4; i++) {
  total += i;
}

console.log(total);
実行結果10

1 + 2 + 3 + 4 の合計が total に貯まっていきます。

04 ― FOR OF STATEMENT

for of文

for of文は、配列などの中身を1つずつ取り出して繰り返す構文です。番号(インデックス)を自分で管理しなくてよいのが特徴です。

基本の書き方

syntax
for (const 変数 of 配列) {
  // 取り出した要素を使う処理
}

「配列 の中から(of)1つずつ取り出して、変数に入れる」と読むと分かりやすいです。

具体例

script.js
const fruits = ["りんご", "みかん", "ぶどう"];

for (const fruit of fruits) {
  console.log(fruit);
}
実行結果りんご みかん ぶどう

fruit という変数に、要素が先頭から順番に入ります。fruits[i] のような書き方が不要なので、コードがすっきりします。

for文と for of文 の比較

項目for文for of文
取り出せるもの番号(インデックス)中身(要素そのもの)
カウンターの管理自分で書く自動
向いている場面回数指定・番号が必要なとき配列の中身を全部使うとき
POINT

for of は文字列にも使えます。for (const c of "abc") と書くと、1文字ずつ取り出せます。

注意 ― for in と間違えない

似た名前に for in がありますが、こちらは中身ではなく番号(キー)が取り出されます。配列の中身を使いたいときは for of を使いましょう。

例題

script.js
const prices = [100, 250, 400];
let total = 0;

for (const price of prices) {
  total += price;
}

console.log("合計: " + total);
実行結果合計: 750
05 ― WHILE STATEMENT

while文

while文は「条件が true の間、ずっと繰り返す」構文です。何回繰り返すかあらかじめ決まっていないときに向いています。

基本の書き方

syntax
while (条件) {
  // 条件が true の間、繰り返される処理
}

if文とよく似た形ですが、if文が「1回だけ実行」なのに対し、while文は「条件が false になるまで何度も実行」します。

具体例

script.js
let i = 1;

while (i <= 3) {
  console.log(i);
  i++;
}
実行結果1 2 3

for文では3つの要素が1行にまとまっていましたが、while文では「初期化」を前に、「更新」を中に自分で書きます。この3つが揃っている点は for文と同じです。

注意 ― 更新を忘れると止まらない

もし i++ を書き忘れると、i はずっと 1 のままなので条件 i <= 3 が永遠に true になり、無限ループになります。while文を書いたら「条件が false になる日は来るか?」を必ず確認しましょう。

回数が決まっていない例

script.js
let money = 1000;

while (money >= 300) {
  money -= 300;
  console.log("1個買った。残り" + money + "円");
}
実行結果1個買った。残り700円 1個買った。残り400円 1個買った。残り100円

「何個買えるか」は事前に分かりませんが、「300円以上ある間は買い続ける」という条件で表現できます。こうした場面が while文の得意分野です。

3つの使い分けまとめ

こんなとき使う構文
「5回繰り返す」など回数が決まっているfor
配列の中身を全部使いたいfor of
終わる回数が分からない・条件次第while

例題

script.js
let count = 3;

while (count > 0) {
  console.log(count);
  count--;
}
console.log("終了");
実行結果3 2 1 終了
06 ― PRACTICE

練習問題

コードの続きをノートに書いてみましょう。解答は最後の「08 解答・解説」で確認できます。

練習問題 1
for文を使って、1 から 10 までの数字を順番に表示しよう。
script.js
// ここにfor文を書いてみよう
練習問題 2
for文とデクリメントを使って、5 から 1 まで逆の順番で表示しよう。
script.js
// ここにfor文を書いてみよう
練習問題 3
for of文を使って、配列 animals の中身を1つずつ表示しよう。
script.js
const animals = ["いぬ", "ねこ", "うさぎ"];

// ここにfor of文を書いてみよう
練習問題 4
while文を使って、1 から 5 までの合計(15)を計算して表示しよう。
script.js
let i = 1;
let total = 0;

// ここにwhile文を書いてみよう
07 ― CHECK YOUR UNDERSTANDING

理解度テスト

全6問です。正しいと思う選択肢に丸をつけましょう。解答は「08 解答・解説」にあります。

Q1
i++ はどんな意味ですか?
  • A. i を 1 増やす
  • B. i を 1 減らす
  • C. i を 2 倍にする
Q2
for文の3つ目の部分(i++ の位置)は、いつ実行されますか?
  • A. 繰り返しが始まる前に1回だけ
  • B. 1回分の処理が終わるたび
  • C. ループが終わったあとに1回だけ
Q3
for (let i = 0; i < 3; i++) の中の処理は、何回実行されますか?
  • A. 2回
  • B. 3回
  • C. 4回
Q4
配列の「中身そのもの」を1つずつ取り出せるのはどちらですか?
  • A. for of文
  • B. for in文
Q5
次のコードを実行すると、何が表示されますか?
let i = 1; while (i <= 3) { console.log(i); i++; }
  • A. 1 2 3
  • B. 1 2 3 4
  • C. 何も表示されない
Q6
while文の中でカウンターの更新(i++ など)を書き忘れると、どうなりますか?
  • A. 1回だけ実行されて終わる
  • B. 無限ループになる
  • C. エラーになって何も実行されない
08 ― ANSWER KEY

解答・解説

練習問題の解答

練習問題 1 の解答例
for (let i = 1; i <= 10; i++) {
  console.log(i);
}

1から始めたいので初期化は let i = 1、10まで表示したいので条件は i <= 10 にします。

練習問題 2 の解答例
for (let i = 5; i >= 1; i--) {
  console.log(i);
}

逆順にするポイントは3つです。大きい数からスタートし、条件を >= にし、更新をデクリメント i-- にします。

練習問題 3 の解答例
for (const animal of animals) {
  console.log(animal);
}

for of なら番号を管理する必要がなく、変数 animal に「いぬ」「ねこ」「うさぎ」が順番に入ります。

練習問題 4 の解答例
while (i <= 5) {
  total += i;
  i++;
}
console.log(total);

合計を貯める total += i と、カウンターを進める i++ の両方が必要です。i++ を忘れると無限ループになります。

理解度テストの解答

Q1. 正解: A

++ はインクリメントで、値を1増やします。i = i + 1 と同じ意味です。

Q2. 正解: B

更新の部分は、{ } の中の処理が1回終わるたびに実行されます。そのあと条件が再チェックされます。

Q3. 正解: B (3回)

i は 0 → 1 → 2 と変化して3回実行され、i が 3 になると条件 i < 3 が false になり終了します。

Q4. 正解: A

for of は要素そのものを取り出します。for in はキー(番号)を取り出すので用途が異なります。

Q5. 正解: A

i が 1・2・3 のときに表示され、4 になると条件 i <= 3 が false になってループが終わります。

Q6. 正解: B

条件がいつまでも true のままなので、繰り返しが終わらなくなります。これが無限ループです。

JavaScript 繰り返し処理 復習教材 ― インクリメント / for文 / for of文 / while文