Ruby初級(計算、each文、ハッシュ、メソッド、既存メソッド、条件分岐、繰り返し文、おみくじ)をざっと書いてみた。

#最初の頃に学んだRubyの基礎的な部分を書いてみました。 
投稿慣れするために簡単に書いてみました。説明不足すみません。

#環境構築で悩まれている方はAWScloud9
最初に私も環境設定ですごく進みが悪く時間を浪費しました。
最初はなんでもいいのでとりあえず動かしてみましょう。

###以下のコードは作ったfileにコピペした後に、ターミナルを開いて $ ruby qiita.rbとすると結果が表示されます。
- ファイル名はご自身の好きな名前で大丈夫です。
- 最後の.rbがRubyのファイルという意味になります。
- ターミナル開いたらcdコマンドでご自身で作った作業しているfileへ移動後に$ ruby ファイル名.rb しないとエラーになります
- #はコメントアウトなので一緒にコピペして大丈夫です。

# いろんな計算
小数点とかいじってみてください。

```ruby:qiita.rb
#計算
puts 1+1
puts 2-1
puts 3*2
puts 10/3
puts 10.0/3
puts 10%3
```
# each文
- scoresに数字を入れ、sum=0と定義してあげます。
- each分でscoresの中から１つずつ取り出してあげてscoreに入ります。
- １つずつeach文のdo〜endの中にある式が実行され、なくなるまで繰り返します。
- each文が終了後、endの下が実行されて合計のsumの数値が出ます。
 
```ruby:qiita.rb
# each文 足し算
# scores = (1..10).to_a
# ↑↓同じ意味。コメントアウトを変えて試してみよう。
scores = [1,2,3,4,5,6,7,8,9,10]
sum = 0
scores.each do |score|
  sum = sum + score
  puts "現在のスコア"
  puts sum
end
puts "合計"
puts sum

```
# ハッシュ
- ハッシュの利点は名前=>金額のように、各要素を関連つける事ができるという点にあります。
- 下の例では名前がキー(key)、金額がバリュー(value)と言います。
- コピペ後、数字や文字を変えてアレンジしてみましょう。例えばテストの成績や、お野菜の値段


```ruby:qiita.rb
money={"rafael"=>"5億","tokaionair"=>"8億","hikakin"=>"10億"}
puts money["rafael"]
```

# メソッド
- 簡単にいうとメソッドとは処理の塊のことです(意味をしっかり知りたい方は調べましよう)
- プログラムを書いていると何度か繰り返すものが出てきます。なので同じ処理をまとめておく事で見やすくもなります。

```ruby:qiita.rb
puts "おはよう"
puts "お疲れ様"
puts "また明日"
puts "おはよう"
puts "お疲れ様"
puts "また明日"
```
これではめんどくさいし見にくい。
greetという塊を作ってあげる。greetと呼んであげたら処理の塊が出てくる。
実行して確認してみましょう。

```ruby:qiita.rb
def greet
    puts "おはよう"
    puts "お疲れ様"
    puts "また明日"
end
greet
greet
```
# 引数, 戻り値(返り値)
- 平均を求めるメソッドaverageを作る。実行してみる。

 
```ruby:qiita.rb
def average
    (10+15+20)/3
end
puts average
```
しかしこれだと、数値を変えたい時に面倒になります。何度averageを呼んでも同じ数字しか返ってきません。そこで好きな数字を指定して平均を求めます。
これで拡張も簡単になりました。

```ruby:qiita.rb
def average(a,b,c)
    #abcを戻り値
    (a+b+c)/3
end
#渡してあげる数値を、引数という
puts average(10,15,20)
puts average(25,5,50)
```
#いろんな既存のメソッドを使おう
####sample, length, push
- コピペして試してみてください。コメントに簡単な説明あります。

```ruby:qiita.rb
omikuji = ["大吉","中吉","小吉"]
# ランダム表示。簡易的なおみくじができます。
puts omikuji.sample
#中の個数表示
puts omikuji.length
#最後に追加する。omikuji.pushの前後にomikuji.lengthを置くと実行した時に追加されてるかわかりやすいです。
omikuji.push("末吉")
puts omikuji.length
```

##floor(切り捨て), ceil(繰り上げ), round(四捨五入)

```ruby:qiita.rb
a= 78.5
##切り捨て
puts a.floor
##繰り上げ
puts a.ceil
##四捨五入
puts a.round
```

##downcase, upcase, !(破壊的メソッド)
全部コピペして実行すると文字の変化がわかりやすいです。

```ruby:qiita.rb
user = "Suzuki"
puts user
#小文字にする
puts user.downcase
#大文字にする
puts user.upcase
puts user
#破壊的メソッド
puts user.upcase!
# #破壊的メソッドによりuserの中身を大文字に書き換えてしまう。
puts user
```

#条件分岐　if文
- if〜endまでが一括りです。aとbに数値を入れてあげます。
- 条件を満たしてないので,a > bは実行されません。
- 次はelseで条件分岐され、bは🅰️よりお大きいので実行されます。
- しかし、今の条件だと同じ数値の時でも２番目がputsされますので、最後に条件を増やしています。


```ruby:qiita.rb
a = 10
b = 11

if a > b
    puts"aはbより大きい"
end

if a > b
    puts "aはbより大きい"
else
    puts "bはaより大きい"
end

#もし数字が同じ場合、上記だとおかしくなる。条件を増やす。
if a > b
    puts "aはbより大きい"
elsif a < b
    puts "bはaより大きい"
else
    puts "aとbは等しい"
end
#等しい時は、a == b 違う時は、a != b を使う。
```

#繰り返し文 (timesメソッド, while文)

```ruby:qiita.rb
# 繰り返し文(timesメソッド)
10.times do
    puts "helo"
end
```

#####doの後の||で囲われているのはブロック変数と言います。提示されているdo〜endの中で使う事ができます。試しにendの下に同じくputsするとエラーになります。
この機会にエラー文を読んでみましょう。

```ruby:qiita.rb
#3回繰り返し取り出してputsします。
omikuji = ["大吉","中吉","小吉"]
3.times do |i|
    puts omikuji[i]
end
```
↓こうすると取り出した回数が表示されます。
ブロック変数の中はご自身でわかりやすく変えれます。

```ruby:qiita.rb
omikuji = ["大吉","中吉","小吉"]
3.times do |num|
   puts num 
end
```

#繰り返し文(while文)
- 条件式を満たさなくなるまで繰り返します
- aは最初０で、１０ずつ足されます。100になると終わる。

```ruby:qiita.rb
#繰り返し文(while文)
a=0
while(a <= 100)
  puts a
  a = a+10
end
puts a
#while文を抜けた後にputsすると１１０
```

##while文を使って大吉が出るまでおみくじ引こう
- 上での紹介した.sampleメソッドを使いランダム表示させる。
- ランダムに引いたおみくじをresult(結果)に入れてあげる。
- while文に条件を書いてあげる。(!=は上でやりました)慣れたら好きに変えてみてください。
 

```ruby:qiita.rb
omikuji = ["大吉","中吉","小吉"]
result = omikuji.sample
while(result != "大吉")
#while〜endの中の条件を大吉が出るまで繰り返し引き直す処理
    puts result
    result = omikuji.sample
end
puts result
# わかりやすくする為、whileを抜けたらputsで大吉を表示する。

```

#####誤字脱字あったらごめんなさい。
#####今回書いてみて、振り返りになりとても良かったので自分なりにまとめてみるのは凄くいいと思いました。
#####どなたかのお役に立てば幸いです。