プログラミングをする上で繰り返し文を使うことは日常茶飯事です。
Rubyにはさまざまな繰り返し文が用意されていますが、for文は指定した範囲で繰り返し処理を行うときによく使われます。
- for文の基本的な使い方が知りたい
- for文の処理を途中でスキップする方法が知りたい
- for文の処理を途中で終了する方法が知りたい
という方に向けて、この記事ではfor文について以下の内容を解説していきます。
【基礎】繰り返し文とは
【基礎】for文の使い方
【発展】nextの使い方
【発展】breakの使い方
【発展】redoの使い方
for文の基本から応用まで解説していきますので、初学者の方は参考にしていただけたら幸いです!
for文の使い方
繰り返し文とは
実際にfor文の説明に入る前に「繰り返し文とは何か?」という基礎的な説明をしておきましょう。
繰り返し文とは、ある一定のルールに沿った処理をループさせることです。
例えば1から1000までの数字を順番に表示させようと思ったとき、手動で一つ一つプリントさせるのは手間ですよね。
そんな時に、繰り返し文を使えば自動でそれを行ってくれるのです。
そして、どの言語でも大体用意されている代表的な繰り返し文がfor文やwhile文となります。
for文の基本的な使い方
それではfor文の基本的な書き方について見ていきます。
先程、ある一定のルールに従ってループさせると説明しましたがそのルールとは、
「どこから、どこまでをループさせる」
と与えるのが一般的です。
そしてそのルールを示すものをプログラミングではオブジェクトと呼びます。
それを踏まえた上で、for文の構文を見てみると、以下のようになります。
for 変数 in オブジェクト do #doは省略しても良い 処理 end
こうなります。
doはfor文では、省略することもできますが、他の繰り返し文などによっては省略できないこともあるので初心者のうちはつけておけば間違いないでしょう。
そして実際にオブジェクトにどんな値を渡せるかというと、配列や範囲オブジェクトなどが一般的です。
一つずつみていきましょう。
array = [1,2,3,4,5] for i in array do puts i end
[実行結果]
1 2 3 4 5
このように、配列を渡すと、一回目の処理に1、二回目の処理に2と、配列が終わるまで繰り返していることがわかります。
次に範囲オブジェクトを見てみましょう。
for i in 1..5 do puts i end
[実行結果]
1 2 3 4 5
範囲オブジェクトとはこのように範囲を指定します。
因みに、中の..の数によって、以上以下、以上未満が決まります。
1..5は1以上5以下、1…5は1以上5未満です。
これがfor文の基本的な使い方です。
次項ではそんなfor文を制御する方法を見ていきましょう。
nextで処理をスキップ
nextメソッドは名前の通り処理をスキップして次の処理に向かう事ができるメソッドです。
1から5までの数字を表示させたいんだけど、4って縁起が悪いから表示させたくない。
そんなときは、
for i in 1..5 do if i == 4 next end puts i end
1 2 3 5
このように指定してあげれば、4だった場合はnextでputsの処理がスキップされていることがわかりますね。
breakで処理を終了する
次はbreakメソッドについてみていきましょう。
breakメソッドとは、ある条件を満たしたらそこで強制的にそのループから抜けるためのものです。
例えば1から5までの数値を表示させたいけど、もし途中で4に出会って(今回は確実に出会うんだけど)しまったらそこでそのループを抜けたいという時に使います。
実際にコードをみてみると、
for i in 1..5 do if i == 4 break end p i end
1 2 3
4に出会ってしまったため、そこでループが終わっていますね。
redoでルールを無視する
最後にredoメソッドについてみていきましょう。
こちらは、ある条件を満たしたら、与えられたオブジェクト(ルール)を無視できるというものです。
実際に見てみましょう。
for i in 1..5 do if i == 4 i = 5 redo end p i end
1 2 3 5 5
解説すると、iが4のときiに5を代入していますね。
なので、4が表示されるところに5が表示されています。
そして本来であればiに5が入って表示されたらプログラムは終わるはずですが、次にまた5が表示されています。
ここがredoのミソですね。
つまり、iに4が入ったときにiに5が代入され、その後条件式を無視して、5を表示したためループは終わりません。
そして本来の5がその後出力されループが終わるという挙動になっていますね。
少しイメージしづらいですが使いこなすととても使いやすいのでマスターしてみましょう!
まとめ
今回はfor文の使い方やそのループを制御する方法を解説させていただきました。
これらは基本であり、今後ずっと使っていくものですので、わからないままにしておかずマスターしてしまいましょう!それでは!!