Sun~sun~Flower's

〜ITエンジニアとして日々前向きに生きていくノウハウブログ〜

MENU

【初心者向け】【Ruby】if・while文とワンライナーの書き方について

f:id:mTakata:20200509221329j:plain

こんにちは。

当ページにアクセスしてくださり、ありがとうございます。

 

この記事は、プログラミング言語「Ruby」についての記事になります。

【目次】

問題.1

以下のコードの2行目以降を、ワンライナーで書き直してください。

```Ruby
   
1
str = "is this a pen?"
2 if str.include?("?")
3 puts "yes, it is."
4 end
```
ワンライナーの説明


何行にも書かれたコードを一つにまとめて、読みやすくすることです。

例えば、

```Ruby
   
1
if message == "プログラミング楽しい"
2  puts "その調子で頑張れ!"
3 end
```

上記のように3行のコードで成り立つif文でも、「ワンライナー」という方法をとると

```Ruby
   
1 puts "その調子で頑張れ!" if message == "プログラミング楽しい"

```

このように書き方は変わりますが、1行で書けるようになります。

 

メリットは、

❗️コードが、スッキリして読みやすくなる 

一つしか思いつきませんでしたが(すみません)、職場で開発になると何百行ものコードが書かれていることもあるので、これが書けるのと書けないとで、コードの量・読みやすさが変わります。

 

覚えておいて損しない書き方です。

 

次の記事にも、「ワンライナー」について書いています。

 

【関連記事】

www.sunsunflowers.com

模範回答 

```Ruby
   
1
str = "is this a pen?"
2 puts "yes, it is." if str.include?("?")
```

解説していきます。

 

①「is this a pen?」という文字列を予め「str」という変数に格納します。

 

②if文を上記に記載したワンライナーの書き方に沿って書きましょう。

【条件式が正しい場合の処理】 if 【条件式】

ワンライナーは基本的に上記のような書き方です。

問題.2

fizzbuzzと言われる問題があります。

 

これは、1から100まで数を数える時に、3の倍数なら「fizz」、5の倍数なら「buzz」、ただし15の倍数なら「fizzbuzz」。

 

それ以外はその数を答えるものです。

例)
1
2
Fizz
4
.
.

これを実現するコードを記述してください。


ただし、elsifは利用使用しないものとします。

模範回答 

```Ruby
   
1 puts "その調子で頑張れ!" if message == "プログラミング楽しい"
2 num = 1
3
4 while num < 101
5 str = ""
6
7 if num % 3 == 0
8 str = str + "fizz"
9   end
10  if num % 5 == 0
11    str = str + "buzz"
12  end
13  if str == ""
14    str = str + num.to_s
15  end
16
17  puts str
18  num += 1
19 end
```

解説していきます。 

①1から100まで数える用に変数numを用意し、初期値1を格納します。

 

②そして、while文を使います。

 

while文がある事で、

while 【条件式】の結果が、false(正しくない、当てはまらない。という意味です)になるまで、処理を繰り返すことが出来ます。

ちなみに、while文はこれからよく使う構文です。(他の言語でも出てきます)

 

もしここで理解できなくても、これからプログラミングしていく上でたくさん出てきますので、安心してください(笑)

 

段々理解できるようになってきます。

 

③今回の問題で言いますと、このwhile文の中でやろうとしている事は、

 

if文を使って、変数numが、

3の倍数→strに「fizz」を格納

 

5の倍数→strに「buzz」を格納

 

どちらも当てはまらない→strにnum(to_sを使い文字列に変換)を格納

 

15の倍数→こちらは、3と5の倍数でもあるので、strに「fizzbuzz」が格納されています。

上記のようにif文を使い分けて記述します。

 

そして、最後にnum += 1 してカウントすることを忘れないようにしてください。

 

④これで、num100を超えるまでwhile内の処理を繰り返します。

 

問題は以上となります、if文とwhile文は必須の知識なので、頑張って理解して頂ければとおもいます。

 

参考になれば幸いです。

 

最後まで読んでいただき、ありがとうございました。