どぼじょのIT学習ブログ

高専卒土木女子がIT業界を目指してお勉強。

Ruby入門 part3

Ruby入門進めていきます💪

目次

1.変数

これまでに文字列と数値を扱ってきましたが、今度は変数について勉強します!
また、変数には「ローカル変数」「グローバル変数」「インスタンス変数」などの種類がありますが、本日は「ローカル変数」についてやります🌝
変数への代入はnum = 10str = "Hello"という使い方をします。これは、numという名前の変数に10という数値を代入したり、strという名前の変数にHelloという文字列を代入しています。
実際に数値を使ってみます🧮
gist.github.com
結果は以下のとおりです。
f:id:mistyrinth:20181109183035p:plain

また、このようなローカル変数には名前をつけるときのルールがあります。

  1. 1文字目は英小文字(a,b,cなど)かアンダーバー(_)
  2. 2文字目以降は英数文字(a,b,A,B,1,2,など)かアンダーバー(_)
  3. 予約語は使用できない

3つめの予約語とは、classdefcaseなど、既に別の用途で使われているものです。被るのはだめですね。

また、変数に別の変数を代入することも可能です✨
gist.github.com
結果は以下のとおりです。
f:id:mistyrinth:20181109192121p:plain
もちろん、文字列同士ではなくても、変数に「数値を代入した変数」を代入することもできます😊
数値を代入した変数は、そのまま数値とみなして、四則演算もできます!

変数に数値を代入し、1ずつ増加させていくこともあります。
その場合、num = num + 1ということになるのですが、このように変数が自分自身を代入することを自己代入といいます。
num = num +は、num += 1という表し方ができます。
+1に限らず、自己代入は変数 = 変数 + 式のとき変数 += 式と表すことができます。
足し算の+=の他にも、-=/=など、四則演算全般で使うことができます💪

さらに、多重代入というものもあります。これは、変数と代入する値の組み合わせが多いときに使われます。
わざわざstr1 = "cat"、str2 = "dog"、str3 = "rabbit"…などと書かなくても、まとめて1行に書くことができます!
書き方は変数1, 変数2, 変数3 =値1, 値2, 値3という書き方になります。
実際にやってみましょう😎

gist.github.com 
結果は以下のとおりです。
f:id:mistyrinth:20181109194444p:plain
ひとつひとつ書いたら4行になるところが、1行にまとまりましたね👏

2.定数

今度は定数についてです。
まず定数の名前の付け方のルールを確認します!

  1. 1文字目は英大文字(A,B,Cなど)
  2. 2文字目以降は英数文字(a,b,A,B,1,2,など)かアンダーバー(_)
  3. 予約語は使用できない

大文字で始まる予約語には、BEGINENDといったものがあります。
さらに、Rubyで元々定義されている定数もあります👀
これらを「組み込み定数」といって、STDINENVDATAなどがあります。

定数名を確認したところで、実際に使ってみましょう〜💻

gist.github.com
結果は以下のとおりです。
f:id:mistyrinth:20181109200223p:plain

3.条件分岐

3-1. if文

Rubyではif文の構成は以下のとおりです。

if 条件式 then
    条件式が真(true)の場合に実行する処理
    条件式が偽(false)の場合に実行する処理
end

試しに「20歳以上ならお酒が飲めます」というプログラムを書いてみます!
同じif文を2つ書いていて、1つめは年齢を30歳、2つめは年齢を17歳に設定しています。

gist.github.com

それぞれ異なる結果になりました!😆🎉
f:id:mistyrinth:20181109202009p:plain

3-2. 疑似変数

先程、真(true)の場合とか偽(false)の場合と説明しましたが、厳密には真と偽には以下のように定義されています。

- 真:falseとnil以外の全て
- 偽:falseとnil

そして、true、false、nilには以下のような意味を持ちます。

- true:条件式が成立する
- false:条件式が成立しない
- nil:何もオブジェクトが代入されていない

つまり厳密には、nilは偽になりますし、単なる数値は真になります。
ややこしいですが、ごちゃまぜに理解しないように注意ですね〜🔥

3-3. 関係演算子

今度は、条件式に使える関係演算子を紹介します✨

書き方 意味
a == b bはaと等しい
a != b bはaと等しくない
a > b bはaより小さい
a < b bはaより大きい
a >= b bはa以下
a <= b bはa以上

3-4. 論理演算子

続いて、関係演算子よりもちょっと複雑な演算子を紹介します。

書き方 意味 別の演算子
a && b aとbが共に真の場合に真 and
a || b aとbの少なくとも1つが真の場合に真 or
!a aが真の場合に偽、aが偽の場合に真 not

3-5. else

先程のお酒が飲める年齢かどうかのプログラムでは、真の場合の処理も偽の場合の処理も1つずつでした。
以下のようにelseを使うと、より沢山の処理を書くことができます!

if 条件式 then
    条件式が真(true)の場合に実行する処理1
    条件式が真(true)の場合に実行する処理2
else
    条件式が偽(false)の場合に実行する処理1
    条件式が偽(false)の場合に実行する処理2
end

今回は17歳の例だけで書いてみました。なので、偽(false)の場合の処理が実行されます。
gist.github.com

結果は以下のとおりです。
f:id:mistyrinth:20181109210003p:plain

3-6. elsif

今度は条件式が偽の場合に、次の条件式にいくパターンです。
他のプログラミング言語だとelse ifとかになるやつですが、Rubyではelsifです。

if 条件式1 then
    条件式1が真(true)の場合に実行する処理
elsif 条件式2 then
    条件式1が偽(false)かつ条件式2が真(true)の場合に実行する処理
else
    全ての条件式が偽(false)の場合に実行する処理
end

こうやって条件式を沢山追加していくこともできます!

3-7. unless文

if文と似たものとして、unless文というものがあります。unless文は、条件式が偽のときに実行される処理を記述します🖊

unless 条件式 then
    条件式が偽(false)の場合に実行する処理
end

また、if文と同じくelseが使えます。(elsifはif文で書くことができるので使えません)
unless文を使ういい例が思いつかないのですが、例えば「合計3000円を超えなければ買う!」のように、「○○でなければこうする!」みたいなケースがあるかもしれませんね🙂

3-8. case文

elsifを使った複雑な条件分岐は、case文を使って分かりやすく表現することができます。

case 対象オブジェクト
when 値1 then
    値1と一致する場合に行う処理
when 値2 then
    値2と一致する場合に行う処理
when 値3 then
    値3と一致する場合に行う処理
else
    どの値にも一致しない場合に行う処理
end

ちなみに、thenは省略可能です👌
あんまりうまい例が思いつかないのですが、試しに書いてみます!!

gist.github.com

結果は以下のとおりです。
f:id:mistyrinth:20181109221402p:plain

これ絶対もっと複雑なプログラム書けるようになったほうが楽しいやつですよね〜🤨
早く変数にいろいろな数式書いたりして楽しみたいです😊

3-9. 条件演算子

条件式の結果によって異なる値を返す演算子があります。「条件演算子」と呼び、?で表します。
使い方は以下のとおりです。

条件式 ? 真の時の値 : 偽の時の値

注意点ですが、?:も半角で、両側に半角スペースがあります!ぱっと見ると全角に見えることもあるのですが、半角スペースです😐

gist.github.com
これを実行すると以下のようになります。
f:id:mistyrinth:20181109222845p:plain
17歳なのでまだお酒がのめません。

3-10. 式修飾子

最後に、式修飾子というものを学習します。
if文を、if修飾子を使って以下のように書き換えることができます😊

真の時に実行する式 if 条件式

gist.github.com
真の時だけ式を実行します。結果は以下のとおりです。
f:id:mistyrinth:20181109223521p:plain

なお、同様にunless修飾子というものもあります😇

本日はここまで!