Ruby 基礎

#Rubyの基礎
##文字列
**文字列**はクォーテーション（ ' もしくは " ）で囲みます。また、クォーテーションは必ず半角で記述しなければいけない。

**例）** 

```ruby
puts 'Yukihiro Takayama'
puts "Yukihiro Takayama"
puts Yukihiro Takayama #この場合エラーが発生！！
```

###putsとは
先ほど出てきた**puts**というのは、Rubyの「命令」の一つです。「コンソールにputsのあとの値を出力せよ」という命令で、コンピュータがそれを実行します。
なお、putsの後には「半角スペース」をあける必要があります。

###コメント
行の先頭に「#」を書くと、その行が**コメント**になります。**コメント**にすると、その行は実行されません。
コメントは、プログラミングに関するメモを残したりするのに便利です。

###文字列の連結
文字列同士に**「+」**記号を用いると、文字列同士を**連結**することができます。

**例）**

```ruby
puts "Yukihiro" + "Takayama"
```
**出力結果**

```
YukihiroTakayama
```



##数値
**数値**を出力する際、**数値**は文字列と違いクォーテーションで囲みません。
**数値**は足し算や引き算といった計算が可能です。足し算には「+」、引き算には「-」の記号を用います。


**例）**

```ruby
puts 2
puts 2 + 3
puts 7 - 4
```
**出力結果**

```
2
5
3
```

###文字列と数値の違い
プログラミングの世界では**「文字列と数値は別物」**です。例えば文字列の**"3"**と数値の**3**をコンピュータは別物として扱います。
**5 + 2**は**7**になりますが、**"5 + 2"**は文字列と認識されるので、そのまま**「5 + 2」**と出力されます。

###掛け算・割り算・余りの計算
**掛け算**は**「*」(アスタリスク)**、**割り算**は**「/」(スラッシュ)**という記号を用います。また**「%」**を用いると、**割り算の余り**を計算できます。

```ruby
puts 3 * 5
puts 6 / 2
puts 9 % 2
```
**出力結果**

```
15
3
1　# 9割る2は、4余り1
```

##変数
変数とは、値を入れておく箱のようなもの。

**例）**

```ruby
name = "Yukihiro"
変数名　= 代入する値
```

この例でいうと、**name**という変数**（箱）**の中に**"Yukihiro"**という文字列**（値）**を代入している。

また、プログラミングの中の**「=」**は**「等しい」**という意味ではありません。
プログラミングの中の**「=」**は**「左の変数に右の値を入れる」**という意味で、これを**代入**といいます。

###変数の使い方

**例）**

```ruby
name = "Yukihiro"
puts name # name変数を出力
```
**出力結果**

```
Yukihiro
```

この例のように**「Yukihiro」**という値が代入された変数**name**を出力すると、「Yukihiro」という値が出力されます。

####文字列の入った変数
変数を呼び出すと代入した値に「置き換わる」ので、文字列が入った変数は文字列とまったく同じように扱うことができます。
例えば文字列の連結であれば、文字列の入った変数と文字列の連結も、変数同士の連結も可能です。

**例）**

```ruby
message = "こんにちは、"
name = "Yukihiro"
puts message + name
```
**出力結果**

```
こんにちは、Yukihiro
```

####数値の入った変数
同様に、数値が入った変数なら、数値と同じように扱うことができます。
変数と数値の計算も、変数同士の計算も可能です。

###変数を使う理由
実際のプログラムの中には多くの値が登場します。プログラムを書く時は、それらの値を間違いのないように、そして値の変更に対応しやすいようにすることが求められます。それを助けるための一つの仕組みが変数だからです。
**変数を使うメリット**
・変更に対応しやすい
・何の要素かわかりやすい

###変数のルール
・変数を使うのは、必ず変数を定義（変数名 = 値）した後でなければ出来ません。
これはプログラムが上から順に実行されるからです。

・変数には、何の値が代入されているかわかりやすい変数名をつけましょう。
name="Yukihiro"の例を見ると、「Yukihiro」というただの文字列が「名前」を表している、ということが変数名から想像できます。

・変数名は自由に決めることができますが、Rubyではいくつか命名のルールがあります。
特に、2語以上を組み合わせた変数名をつけるときは、アンダーバー（_）を用いるということは重要なルールとなります。
**例）**   **user _name**

###変数の更新
変数は、一度代入した値を変更することもできます。
一度値を代入した変数に、その後再び値を代入すると、後に代入した値で変数の中身が上書きされます。

**例）**

```ruby
number = 7
puts number
number = 9
puts number
```
出力結果

```
7
9
```

すでに定義している変数numberの値に3を足したいときは、numberに3を足して、再びnumberに代入することで実行できます。

**例）**

```ruby
number = 2
puts number
number = number + 3
puts number
```
出力結果

```
2
5
```
「=」の右側のnumberは値に置き換わり、計算された結果が、左のnumberに代入されています。

####省略した書き方
「number = number + 3」といった書き方は、「number += 3」と省略することができます。

###変数展開

**例）**

```ruby
age = "25"
puts "Yukihiroは#{age}歳です"
```
出力結果

```
Yukihiroは25歳です。
```

変数の値を文字列の中に含める方法があります。
上の例のように文字列の中で、#{変数名}とすることで、変数を代入している値に置き換えて、文字列に含めることができます。
これを**「変数展開」**と呼びます。

変数展開は文字列の連結と役割としては同じですが、1つ異なる点があります。
実は、数値と文字列を足し算で連結することはできません。
しかし上の例のように変数展開を用いると、数値の入った変数も問題なく文字列に含めることが可能です。

####変数展開の注意点
変数展開をする際は注意点があります。
実はダブルクォーテーションを使った文字列の場合しか変数展開はされません。シングルクォーテーションの場合は、変数展開が行われず、そのまま文字列として出力されてしまうので注意が必要。

##条件分岐（if文)
if文を用いると「もし○○ならば●●を行う」という条件分岐が可能になります。ifの後ろに条件式を書き、それが「成り立つ」場合、処理を実行します。また、処理はifとendで囲みます。

```
if 条件式
　　処理
end
```
**例）**点数が80より高いとき、「よくできました」と表示する。

```ruby
score = 94
if score > 80
puts "よくできました"
end
```
出力結果

```
よくできました
```

「score > 80」の部分は「変数scoreの値が80より大きい」という条件になります。
変数scoreにはいま94が代入されているので、この条件は成り立ち、処理が実行されています。
ちなみに、条件式が成り立たない場合は処理が実行されません。
この場合で言うと、

```

```

となります。

###真偽値
真偽値とは、条件式が成り立つか成り立たないかを表す値のこと。
真偽値にはtrueとfalseという2つの値しか存在しません。
条件式は、成り立つと「true」、成り立たなければ「false」という真偽値に置き換わります。

**例）**

```ruby
score = 94
puts score > 80
```
出力結果

```
true
```
この場合、条件式が成り立つので**true**の値が出力されました。

```ruby
score = 38
puts score > 80
```
出力結果

```
false
```
この場合は、条件式が成り立たなかったので**false**の値が出力されました。

###比較演算子
条件式に使った「>」は比較演算子と呼ばれる記号です。
「a < b」は、aの方がbより小さいときtrue, 大きいときfalseになります。

**比較演算子の記号**

```
a < b   aがbより小さいときtrue

a <= b  aが小さいまたは等しいときtrue

a > b　 aがbより大きいときtrue

a >= b  aが大きいまたは等しいときtrue

a == b  aとbが等しいときtrue

a != b  aとbが異なるときtrue
```

###条件が成り立たないときの処理
ifにelseを組み合わせると「もし〇〇なら●●を行う、そうでなければ■■を行う」という処理ができるようになります。
if文の条件がfalseの場合、elseの処理が実行されます。

```
if 条件式
　　 処理
else
     処理 （条件式がfalseのとき実行）
end
```

**例）**

```ruby
score = 60
if score > 80
  puts "よくできました"
else
  puts "がんばりましょう"
end
```
出力結果

```
がんばりましょう
```

###条件を追加する
elsifを用いると「もし◯◯だったら●●を行う、そうでなくもし△△であれば▲▲を行う、いずれでもなければ■■を行う」という条件分岐ができます。

```
if 条件式１
　　 処理
elsif 条件式２
     処理 （条件式１がfalseで、
　　　　　　　条件式２がtrueのとき実行）
else
     処理
end
```


**例）**

```ruby
score = 77
if score > 80
  puts "よくできました"
elsif score > 60
  puts "まずまずです"
else
  puts "がんばりましょう"
end
```
出力結果

```
まずまずです
```

＊elsifは必要な数だけ並べることができますが、複数の条件に合致したとしても、実行されるのは最初に合致した条件の処理のみです。

###条件を組み合わせる
複数の条件を組み合わせることができます。
まずは「かつ」についてです。
「かつ」は「&&」で表します。「条件1 && 条件2」は「条件1かつ条件2」という意味で、複数の条件がすべてtrueならtrueになります。

**例）**

```ruby
score = 68
if score <= 80 && score > 60
puts "まずまずです"
end
```
出力結果

```
まずまずです
```


次は「または」を表す記号です。
「または」は「||」で表します。「条件1 || 条件2」は「条件1または条件2」という意味です。この場合は、複数の条件のうち一つでもtrueならtrueになります。


**例）**

```ruby
score = 68
if score <= 80 || score > 60
puts "まずまずです"
end
```
出力結果

```
まずまずです
```
##おわり
[Ruby 基礎（配列について）](https://qiita.com/y-takayama/items/54c1a7b299af767d62ef)