どうも、Yutaです。最近力試しにpaizaのスキルチェック問題に挑戦してみたのですが、どうもつまずくことが多いことに気がつきました。
そのため、改めてpaizaラーニングでRuby入門編を受講して基礎固めを結構。
忘れないうちにアウトプットしようと思い、今回の記事を書きました。
最低限おさえておきたい3つのループ処理
for inによるループ処理
まずはどのプログラミング言語でも目にすることが多いfor inから。
for inの構文は以下の通り。繰り返し処理を記述する部分はインデントを必ず行ってください。
カウンタ変数を設定しなかったり、処理の最後にendをつけないとエラーになるので注意。
また、カウンタ変数は基本的になんでもいいけれど、
- i
- j
- k
の上記3つを使うのが慣習となっているらしいので、この機会に覚えておくといいですね。
繰り返す範囲を表すには、
0..3
のようにドット2つを使って範囲を指定します。プログラミングの世界では、はじまりは1ではなく0からなので、このように書くことが多いです。
この場合、
- 0
- 1
- 2
- 3
の合計4回処理が繰り返されることになりますね。
whileによるループ処理
続いてwhileをみていきましょう。まずは構文の確認から。
for inが指定した範囲を繰り返し処理するのに対して、whileは条件式が成立している間だけ処理を繰り返すという点が違いますね。
whileでは条件式を成立させるために、処理を行う前にカウンタ変数を初期化させなければなりません。
繰り返し処理の後には、カウンタ変数を更新するための式を記述しましょう。こうしないとループ処理が成立しません。
例えば、5から1に向かってカウントダウンさせる処理はこのようになります。
eachによるループ処理
eachは主に配列で使うことが多いメソッドですね。まずは構文を見ていきましょう。
for in やwhileと違って、eachメソッドはdoを省略することができません。これは、doからendまでが繰り返し処理を行う範囲(ブロックスコープ)として定義されているためです。
doを書き忘れるとエラーになりますが、実は中括弧を使えば代替可能。でも基本的にはdoを使えば間違いないので、予備知識程度に覚えておくといいかも。
配列の要素の後に
.each
とつけることで、カウンタ変数の i に配列の要素を渡します。
渡されたカウンタ変数をputsメソッドなどを使えば、配列の要素分だけ表示させることができます。
また、for inやwhileと同じように、特定範囲の数字を順番に表示させることも可能。
こんな感じで数字を表示させることができるので、いろいろなことに応用できそうですね。