hamablog

プログラミング学習についてのアウトプットと日記です

Progate Ruby学習

内容

レッスン1

・put “ “ 文字列にコンソールに出力。’ ‘ でも可。

 

・#コメント

 

・計算 puts 2 + 3  5

       puts 2 * 3  6

       puts 6 / 2   3

       puts 5 % 3  2

 

・文字列の連結 puts “あ” + “い”  あい

 

・変数に代入

  name = “join”  変数nameにjoinを代入

  変数名は数字スタートはNG user_nameとふたつはアンダーバーでつなげる

 

・自分自身に代入の省略

 x = x + 10   x += 10

 

・変数に文字列を代入

 puts “#{変数名}”  シングルクォーテーションNG

 

・数字と文字列は足し算できない

 age = 19

 puts age + “歳です”     エラー    puts = “#{変数名}歳です”  19歳です

 

・if文 if 条件式

     処理

     End

 

・比較演算子

  score = 86

   puts score < 90   true

   puts score < 30   false

  puts score == 86  true

   puts score != 86 false

   puts score != 50 true

   name = “join”

   puts name == “join”   true

 

・条件分岐

 if 条件式

  trueのときの処理

  else

   falseのときの処理

  end

 

   if 条件式1

   条件式1がtrueのときの処理

  elsif 条件式2

   条件式1がfalseで条件式2がtrueのときの処理

  else

    条件式1も条件式2もfalseのときの処理

  End

 

・かつ &&

 

・または||

 

レッスン2

・配列

  names = [“taro”, “ziro”, “keiko”]

 puts  “私の名前は#{names[1]}です”  私の名前はziroです

 

・each 繰り返し処理の文

  配列.each do |変数名|

     処理

  end

 ここの変数名はeach分の中でしか使えない。

each文の外につくった変数は文の中でも使える。

 

・ハッシュ 複数の要素をまとめて管理する方法

      それぞれの値にキーという名前をつけて管理

 {“キー1” => 値1, “キー2” => 値2}

  {:キー1=> 値1, :キー2=> 値2}ともできる。この書き方をシンボルという。

 {キー1: 値1, キー2:値2} シンボルの省略形

 

nil なにもないという意味。条件分岐ではfalseと同じ扱いをできる

 

レッスン3

・メソッド 複数の処理をひとつにまとめたもの。

 定義     def メソッド名

        処理

        end

  呼び出し メソッド名

 

・引数 メソッドに与える追加情報

 def メソッド名(引数名1, 引数名2)

  引数名1, 2をふくんだ処理

 end

  メソッド名(引数1に代入する値1, 引数2に代入する値2)

 

・return 戻り値 呼び出しもとで受け取る処理結果 処理を終了させるのでこれ以降の処理は実行されない。

 

・キーワード引数 多くなった引数を管理しやすくするため呼び出し元でも名前をつける

 def メソッド名(引数1:, 引数2:, 引数3:)

 

 呼び出し メソッド名(引数1:値1, 引数2:値2, 引数3:値3)

 

レッスン4

・「もの」を生成する仕組み

 クラス 設計図 この中でメソッドを定義できる(インスタンスメソッド)

   attr_accessorクラスに情報を持たせる

  class クラス名

  attr_accessor インスタンス変数(シンボル:name)

   attr_accessor インスタンス変数(シンボル :price)

  def メソッド名(引数)

    処理

  end

  end

 

 インスタンス 設計図をもとにつくった「もの」

    変数名= クラス名.new

     クラスからインスタンスを生成し、変数に代入

  変数名.インスタンス変数= 値

   インスタンス変数に値をセット

  puts 変数名.インスタンス変数

     値を出力

    変数名.メソッド名(引数に代入する値)

   メソッドの出力

 

 ステップ

 クラスを用意→からのインスタンスを生成→からのインスタンスに情報を入れ込む

 

・self self.インスタンス変数とすることでインスタンス変数を扱える

  class クラス名

  attr_accessor インスタンス変数(シンボル:name)

   attr_accessor インスタンス変数(シンボル :price)

  def メソッド名

    #{self:インスタンス変数}処理

  end

  end

 

  変数名= クラス名.new

  変数名.インスタンス変数= 値

  変数名.メソッド名        インスタンス変数に値が代入された処理結果

 

・initialize インスタンスを生成した直後に処理を実行できるメソッド

      クラス名.newでインスタンスを生成した直後に処理を実行

  class クラス名

  attr_accessor インスタンス変数(シンボル:name)

   attr_accessor インスタンス変数(シンボル :price)

  def initialize(引数)

    処理

  end

  end

 

  変数名= クラス名.new(引数)  処理結果

 

 def initialize

    self.インスタンス変数=値

  end

 puts 変数名.インスタンス変数   インスタント変数に値を代入した結果

 

 このメソッドをつかうと、変数名.メソッド名をわざわざ出力しなくてよい

 

・require クラスを別ファイルに読み込み

     クラスの生成と処理のファイルを分ける

 require “./ファイル名”

 

・gets.chomp 入力を受け付ける。このコードが実行されるとコンソールが待機状態になり、エンターキーが押されるまで入力された文字列を変数に代入できる。

 

 gets.chomp.to_i 文字列を数値に変換

 

 

 

レッスン5

・継承 あるクラスをもとにして、新しいクラスをつくること

  class 子クラス< 親クラス

   子クラスに追加したい処理

    end

 

・オーバーライド 親クラスのメソッドと同じ名前のメソッドを子クラスで定義すると上書きできる。

 

・super オーバーライドしたメソッドのなかで親クラスと重複する要素を呼び出す

 super(name: name, price: price)

 

・Dateクラス Rubyがあらかじめ用意しているクラスでrequireで読み込むと用意されたクラスが読み込まれる。

require “date”

 date1 = Date.new(2014, 7, 31)

 puts date1.sunday?              false

 

 今日の読みとり date1 = Date.today

 

・クラスメソッド クラス名に対して呼び出すメソッドDate.today クラス名.メソッド名

 def クラス名.メソッド名 で定義できる。

 def クラス名.メソッド名

  真偽値で返す処理

 end

 

 

 

 

感想

レッスン2

所要時間1時間

さくさく進めました

Javascriptと似ている

最後総合問題があり、理解を確かめられたのがよい

 

 

 

レッスン3

所要時間40分

 作業が少なくて楽

 Rnbyはjavascriptとくらべてカッコやないから楽

 やるならRubyからの方がいい?

 戻り値などの概念がより明確になった

 

レッスン4

 所要時間 2時間20分

 指示されている意味がよくわからないなか、とりあえず指示通りにコードをつくる

 Initializeのメリット?

 最後の方は今までの知識を動員しての課題だったため難易度が高かった。

 

レッスン5

 所要時間1時間40分

 レッスン4を理解していないとできない。逆にレッスン4の復習になる。

 レッスン4のあとすぐに行うと記憶が新しいので早く終わる。