今回はプログラムの基本の一つであるfor文やwhile文をつかってループを勉強しましょう
この記事を読むことで
- ループとは何かがわかります
- for文とwhile文の使い分けができます
- ループの注意点がわかります
ループとは
プログラムを書いていると何度も同じ処理を繰り返す場面がしばしばあります
そんなときに、何度も同じ処理書いてもよいのですが、あまり効率の良い方法ではありません
例えばサイコロを3回振って出た目の数を最後に足し上げるというプログラムとします
繰り返しを使わずに書くとこのような感じになります
もちろん、この程度であればこれでも問題ありませんが無駄が多いのは見ればわかると思います
このように、同じ処理を決まった回数繰り返すときはfor文をつかうとすっきりします
for文の書き方は後程説明しますので、全体を見比べていただけたらと思います
随分スリムになりました
コードが長くなるとその分複雑になり、あとで修正を加えないといけないという事態になったときにその手間はさらに大きくなります
こういったループを使うことで、コードがすっきりするだけでなく、思わぬエラーも減らせるというメリットもあります
繰り返し処理が必要な場合は積極的に活用していきたいですね
for文の使い方
for ( let 変数=初期値; 条件式 ; 変数への処理) {処理内容}
という書き方になります
for文では普通、カウント用の変数を用意して、その変数の数字を一定数ずつ変化させ(よくあるのは1ずつ足していく)
条件式がtrueであり続ける限り、処理内容を繰り返し
変数がその条件式の数字から外れfalseとなったときに処理を止めるという仕組みです
先ほどのサイコロを3回振るというプログラムでいうと、
for (let i = 0 ; i< 3 ; i ++) {繰り返し}
カウンタ用の変数をiとして初期化し0を最初に代入する
i++で{}内の処理が終わったときに変数iの数値に1を足す
i<3の条件を満たす限りこの処理を繰り返すので
処理1週目はi = 0、2週目はi =1、3週目はi=2、4週目はi=3となりi<3の結果がfalseとなるため処理は行われずにfor文は終了となります
このような処理を行って3回同じ処理を繰り返しているのです
while文の使い方
for文はループする最大の回数が決まっている場合に使用したり、カウンタ用の変数を用いて、配列と一緒に使うと配列番号を一つずつ変化させて順番にデータを抽出するという使い方をするなど、配列と非常に相性がよいです
では、回数が決まっていない場合やわからない場合はどうでしょうか。
条件を満たすまでずっとループさせたいときは少し工夫がいります(できないわけではないです)
そのようなときはwhile文を使うとよいでしょう
では、while文の書き方です
while (条件){処理}
シンプルですね
例えばサイコロを3回振って、合計した数字が4で割り切れたら終了するというプログラムを作ってみましょう
こんな感じです
keyという条件用の変数を用意し、keyが0であるかぎり{}内を繰り返すようにしました
ifの条件式であるtotal%4===0の意味は、%はあまりを出す演算子ですのでtotalの変数に入っている数字を4で割ったあまりが0になるとき、つまり4で割り切れるとき、いわゆるtotalが4の倍数になるときkey=1としてkeyに1を代入してループを終了させています
keyはフラグの役割ですね
という感じで、運が悪いと延々つづきますので回数は読めません
このような時にwhile文を使うとよいでしょう
ループ文の注意点
1点特に気を付けてほしいことがあります
それは、「無限ループ」です
延々そのプログラムが走り続けるというまさに最悪の状態ですね…
時折、思ったような結果が得られず無限ループが起こることがあります
わたしも何度かchromeをそっと閉じました
ループですので、どんなにやっても条件を満たさないようなプログラムを書いてしまうと、そこから抜け出せなくなることがありますので注意をしましょう
ということで、
- 繰り返し処理を使って無駄を省く
- コードを短くすることで処理を単純化する
- 回数が決まっているときはfor文を使う
- 回数が決まっていないときはwhile文を使う
- 無限ループに注意する
以上の内容を今日は勉強しました
みなさんだんだんプログラムっぽくなってきましたね
ではまたがんばりましょう!
あ、ここまでのまとめで次回は「数字当てゲームをつくる」という内容を書こうと思います
動画にもしていますのでよければYoutubeも見てください
ちょっと長いのですが、見ていただくとこれまで勉強したことがすこし頭の中で整理できると思います
ということで今度こそまたね!
コメント