個人メモ　Progate Ruby Ⅰ(2)

##6.変数の基本


・変数…値を入れておく箱のようなもの。
変数は「変数名＝値」で定義する。



```
animal = "あざらし"
↳変数名 　↳代入する値
```

###[注意]
・プログラミングの「=」
⇒「等しい」という意味ではない。

・では、プログラミングの「=」は何か？
⇒「左の変数に右の値を入れる」と言う意味。
この流れを「代入」と言う。

```
index.rb                    置き換えのイメージ

animal = "あざらし"    　 →  animal =  "あざらし" 
puts animal              →  puts "あざらし" 
     ↳変数animalが値("あざらし")に置き換わる
```

```
>_コンソール
あざらし　　　　
```


##[注意]

```
animal="あざらし"                    >_コンソール
                
*1.puts  animal                       あざらし
*2.puts "animal"                      animal
```

変数は*2のようにダブルクォーテーションで囲むと
文字列として認識されるため変数として扱う場合は囲まない。

##7.変数を使ってみよう

####プログラムは上から順に実行されていく
⇒変数を使う場合は必ず変数名を定義する。


●文字列の入った変数

・変数を呼び出すと代入した値に「置き換わる」
・文字列が入った変数は文字列と同じように扱える

```
message ="私が"　　　　　　　　　　　
puts message + "あざらしだぞ"　
animal = "カワウソです"

puts message + animal
```
```
>_コンソール

私があざらしだぞ
私がカワウソです
```

●数値の入った変数
                                                                      
```
　　  number1 = 20                     　　 
 puts number1 + 3                             
     number2 = 15                                  
 puts number1 + number2 
```

```
>_コンソール

23
38
```

##8.変数の役割と注意点
  
●なぜ変数を使うのか？
・プログラムの中には多くの値が存在する。
・プログラムを書く際に正確性や柔軟性が求められる。
⇒この2点を解決する仕組みの１つが変数。

●変数の役割
⇒同じ要素を繰り返し使える
⇒変更に対応しやすい
⇒何の要素か分かりやすい

```
・変数を使用しない場合

index.rb

puts "私がゴマフアザラシです"
puts "私がアゴヒゲアザラシです"
puts "私がタテゴトアザラシです"
puts "私がバイカルアザラシです"
```

「私が」の部分を「実は私」に置き換える場合、
三箇所全て変更しなければならない。

```
・変数を使用する場合

index.rb

text = "実は私"
puts = text + "ゴマフアザラシです" 
puts = text + "アゴヒゲアザラシです"
puts = text + "タテゴトアザラシです"
puts = text + "バイカルアザラシです"
```

「私が」の部分を「実は私」に置き換えるなら代入する
文字列を変更するだけで良い。

●分かりやすい変数名
⇒変数には何の値が代入されているか
判断できる変数名をつける

```
○ animal = "あざらし"
×   I am = "あざらし"
```
●変数名のルール
⇒Rubyにはいくつかの命名ルールがある。
＊基本は自由。

[注意]
2語以上を組み合わせた変数名を付けるときは、
アンダーバー(_)を用いること。

Ex. Spotted_seal など。

＊以下は悪い例
・1seal 　　 　× 数時開始
・zarashi   　　△ ローマ字
・あざらし　 △ 日本語

##9.変数の更新(1)
●変数の値を変更する

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

```　　　　　　　　　　
 index.rb　　　　　　　 >_コンソール　　　　　　　
 number = 1                 
 puts number             1
 number = 7
 puts number             7
                         ⇖上書きされた変数の値が出力される。
```

⇒プログラムは上から順に実行されるため、中身が上書きされる。

##10.変数の更新(2)
●自分自身に代入する

「既に定義されている変数numberの値に3を足したい」場合
どのようにすれば良いか？

回答：

```
                                  >_コンソール
number = 2
puts number 　　　　　　　　　　　　　　　2

number = number + 3
puts number                            5
```
上のコードのようにnumberに3を足して、再びnumberに代入する。「=」の右側のnumberは値に置き換わり、計算された結果が左のnumberに代入される。

⇒自分自身に代入する場合も同様、プログラムは上から順に
実行されるため、中身が上書きされる。

##応用(省略形)

```
基本形                          省略形
x = x + 7                      x += 7
x = x -  7                     x - = 7
x = x * 7                      x * = 7
x = x / 7                      x / = 7
x = x % 7                      x % = 7
```

##11.変数展開

●変数展開

変数を文字列に含める

 #{変数名}
⇒変数展開…変数の値を文字列の中に含める方法。

#[注意]

ダブルクォテーションを使った
文字列の場合にしか変数展開されない。
⇒シングルクォテーションはNG

```
"" = 〇　
'' = ×
```

```
ex.カワウソの場合

animal = "カワウソ"
puts "こんにちは#{name}さん"

>_コンソール上

こんにちはカワウソさん
```

●変数展開のメリット：

```

index.rb(☆)

age = 25
puts age + "歳です"
　　 (数値) (文字列)
---------------------
>_コンソール上

×エラー発生!!

--------------------------------------------------------
index.rb(★)

age = 25
puts "#{age}歳です"

---------------------
>_コンソール上

25歳です
```

●変数展開

解説：
☆のように数値と文字列を
足し算で連結することはできない。
しかし、★のように変数展開を用いると
数値の入った変数も問題なく文字列に
含めることが可能。
⇒変数を文字列に含める場合は、
基本的に変数展開を使うようにすること。