「業務の効率化のためのプログラミング入門」というシリーズの記事です。
前回は値に応じて違う行動を起こす「条件分岐」について学びました。
今回は同じ処理を反復させる「繰り返し」について解説します。
繰り返し
人間にとっては退屈な繰り返しの単純作業であっても、プログラムにお任せすれば高速かつ正確に処理してくれます。そんな繰り返し処理をプログラムで実装するにはどうしたらいいのでしょうか?
繰り返しは、前回学んだ条件分岐と同じぐらいプログラムを書く上で重要な文法です。しっかり今回の記事でマスターしていきましょう。
for文
繰り返し処理にはいくつか種類があり、それぞれひとつずつ紹介していきます。
まずは一番使用頻度が高いfor文からご紹介します。
文法の紹介
for (初期化;条件式;変化式) {
}
いきなり初期化、条件式、変化式と見慣れない概念が出てきました。
一旦、このあたりの難しい概念は忘れて、for文の動作をサンプルコードで確認してみましょう。まずはシンプルに以下のようなコードを書いたときの出力をみていきましょう。
function main() {
for (let i = 0; i < 10; i++) {
console.log(i + ": 繰り返し確認")
}
}
実行結果
0: 繰り返し確認
1: 繰り返し確認
2: 繰り返し確認
3: 繰り返し確認
4: 繰り返し確認
5: 繰り返し確認
6: 繰り返し確認
7: 繰り返し確認
8: 繰り返し確認
9: 繰り返し確認
for文の中に書いたログ出力処理が10回(0~9のカウント)実行されていることが分かります。
つまり、for文の中の処理を10回実行したい場合は以下のように定義すれば良いということになります。
for (let i = 0; i < 10; i++)
for文の中の条件式部分に繰り返し回数と同じ10という数字が入っていますが、その数字を5に変えれば5回、3に変えれば3回実行されます。実際のプログラムfor文を使うときの大半がこの条件式をが変わるだけでで利用されており、初期化・変化式部分は同じということがほとんどです。
なので、プログラムを学び始めた方は難しく考えすぎず「条件式の部分の数字の回数分、処理が繰り返される」ぐらいで覚えておくのが良いと思います。
それでもfor文を詳しく知りたい
それでも「どのような仕組みでfor文が動いているのか気になる」という方向けの解説です。
このサンプルコードを使って説明します。
// for (初期化; 条件式; 変化式)
for (let i = 0; i < 10; i++) {
// 処理
}
- 初期化部分の式が実行され、変数iに0が格納される
- 条件式がtrueならばfor文内の処理を実行する
- 変化式を実行して変数iに1を足す
- 2に戻り、条件式がtrueであるか確認します
以降2がfalseになるまで処理が実行されます。
ちなみに、条件式については前回if文で解説しました。
while文
つぎは、while文を紹介します。for文と比べると利用する機会は少ないですが、欠かせない文法です。ぜひwhile文もマスターしておきましょう。
文法の紹介
while (条件式)
for文と比べると条件式だけのシンプルな構成です。実際にサンプルコードで動作を確認してみましょう。
function main() {
let i = 0
while (i < 3) {
console.log(i + ": 繰り返し確認")
i++
}
}
実行結果
0: 繰り返し確認
1: 繰り返し確認
2: 繰り返し確認
while文の中に書いたログ出力処理が3回(0~2のカウント)実行されていることが分かります。while文の条件式がtrueの間、while文内の処理が実行されます。
無限ループ
while文を紹介するうえで避けて通れないのが無限ループです。
「while文の条件式がtrueの間、while文内の処理が実行される」ということを踏まえて、次のようなコードはどんな動作をするでしょうか?
function main() {
while (true) {
console.log("繰り返し確認")
}
}
こちらのコードを実際に実行すると、ログがずーっと流れて終了しない状況になると思います。
これが無限ループと呼ばれる状態です。プログラムの実行が意図せずループして終わらない状態はなるべく避けなければいけません。
(実査にこのような状態になった場合はエディタの「停止」ボタンを押してください)
do-while文
最後にご紹介するのがdo-while文です。あまり利用する機会は少ない文法ですので、簡単に解説します。
文法紹介
do {
} while (条件式)
サンプルコードと動作を見てみましょう。
function main() {
let i = 0
do {
console.log(i + ":繰り返し確認")
i++
} while (i < 5)
}
実行結果
0:繰り返し確認
1:繰り返し確認
2:繰り返し確認
3:繰り返し確認
4:繰り返し確認
do-while文は繰り返し処理の終了判断が処理実行のあとなのでwhile文と違い少なくとも、処理が必ず1回は実行されることが保証されています。
まとめ
今回は、繰り返し処理をご紹介しました。
実は、今回ですべてを紹介しきれていません。これから先の章で解説する内容が前提に含まれているので、後ほどの章でまた改めて残りの分はご紹介します。