学習の書き留め プログラミング勉強中

プログラミングで学んだことを日記として残して行こうと思います

チェリー本のまとめ コツコツと。。。

チェリー本のまとめ 2-1

rubyの基礎知識
文字列
数値
真偽値と条件分岐
メソッドの定義

rubyの基礎知識

まず、全てがオブジェクトとなっている
!? そもそもオブジェクトとは
オブジェクトとは、とても簡単に言うと、関連する変数(値)とメソッド(動作)をまとめて、そのまとまりに名前を付けたもの。関連する変数やメソッドを1つのオブジェクト内で宣言してまとめてしまうことで、管理しやすくするのがオブジェクト指向

メソッドの呼び出しは「オブジェクト.メソッド(引数1, 引数2, ...)←ない場合は省略可」でできる
コメントは「#」で行う
変数やメソッド、クラスにつける名前を識別子といい、スネークケースで区切ることが多い。予約語は使うことができない。
!? 予約語とは
予約語とはあらかじめ意味が決まっている名前のこと、class,ifがこれに当たる。
変数の宣言と代入は「変数名 = 式や値」で同時に行う。

文字列

rubyで文字列を作る方法は「''」「""」のどちらかで囲う。「""」では式展開が使える。
どちらを使うべきか、はどちらでもいいらしい。企業によって決めれている場合もあるため社内規定に従うか、独学ならやりやすいやり方でいいと思います。

数値

数値は言葉の通りです。一応_を入れても無視されるので 100_000_000のようにわかりやすく区切りに使うといいかもしれません。
四則演算は「+」「-」「/」「*」で計算ができ、「%」で余り、「**」でべき乗が出せる。

真偽値と条件分岐

rubyでは真偽値は
falseまたはnilであれば偽
それ以外はすべて真
と言う性質がある。他の言語を知らないので、どう違うかがわかりません。。。
&&がかつ ||がまたわ でかつの方が優先順位が高い。
if文は

if 条件A
  # 条件Aが真だった場合の処理
elsif 条件B
  # 条件Bが真だった場合の処理
else 
  # それ以外の条件の処理
end

と記述する。気をつけなければいけないのは、上から順に処理がされるため、条件Aが真だった場合、条件Bは実行されない。つまり、上の方に細かい条件を書く必要がある。

メソッドの定義

メソッドの定義は

def メソッド名(引数1, 引数2, ...)
  # 必要な処理
end

と記述する。

FizzBuzzプログラム

FizzBuzz問題という有名な問題があるらしい。
3で割り切れる引数を渡すとFizzをかえす
5で割り切れる引数を渡すとBuzzをかえす
15で割り切れる引数を渡すとFizz Buzzをかえす
それ以外の数値はその数値を文字列に変えてかえす

def fizz_buzz(n)
  if n % 3 == 0 && n % 5 == 0
    "Fizz Buzz"
  elsif n % 3 == 0
    "Fizz"
  elsif n % 5 == 0
    "Buzz"
  else
    n.to_s
  end
end

# n = gets.chomp.to_i
# fizz_buzz(n)

20.times do |i|
  i += 1
  puts "#{i}: #{fizz_buzz(i)}"
end

という感じになりました。 実際はtimesをつかわないように書いてあるけれど、せっかくなので使いました。
%を使い、余りが0の時に該当する文字列をかえすこと、また、15の時は最初に記述しないと、FizzかBuzzを返してしまうので注意。

まとめ

今日の進んだところは基礎の当たり前に近い内容だったかもしれない。でも、当たり前を当たり前にしない。
初心者だからこそ、こういうところを不器用でも言葉にしていく。