mkkon’s diary

プログラミング学習日記

Ruby基礎

はじめに

プログラミング学習を開始してから気がつけばもう1ヶ月以上経過していました。毎日少しずつ分かることが増えていきますが、カリキュラムを進める度にわからない用語が出てきて調べて、の繰り返しで時間もかかります。 自分用の忘備録としてと、練習のためMarkdown記法で書いてみました。不慣れなため読みにくいかもしれません。

Ruby基礎文法

文字列

" " or ' ' で囲む。" " + " " で文字の連結

メソッド

処理をまとめたもの

lengthメソッド

.length で文字列の文字数

数値

"10"は文字列、10 は数値

to_sメソッド

.to_s 数値を文字列に

to_iメソッド

.to_i  文字列を数値に

記述そのもの

式展開

#{ 式 } で文字列の中に連結できる。全体の文字列は" "で囲む。' ' では文字として出力される。

演算子

< > + −など

代数演算子

計算に使う演算子 + - ※ / % は割った余り

代入演算子

= 代入する 変数=値

自己代入演算子

自分に代入する += -= ×= /=

変数の命名規則

  • 中身が分かる
  • 小文字で始める
  • _ と数字から始めない 2文字目以降なら可
  • 日本語、予約語、スペースは含めない

putsメソッド

ターミナルに値を出力する

getsメソッド

ターミナルで値の入力機能を起動する

chompメソッド

末尾の改行を取り除いた文字列を返す

input = gets.chomp 

バックスラッシュ記法

\ (optionキー)+(¥キー) 全体の文字列は" "で囲む。' ' では文字として出力される。

  • \n 改行
  • \t タブ
  • \b バックスペース
  • \ バックスラッシュ

配列[  ]

1つの変数で複数の値を持ち、順番で値を管理する。

 変数 = [ 要素 ]

配列演算子 <<

配列に新しい要素を追加

添字

配列の各要素に割り振られた番号。0から始まる。

変数 = 配列[添字]

要素の変更(再代入)

配列[添字] = 値

lengthメソッド

配列に使う場合は要素の数

[A,B,C].length  => 3 

数が不明なものの配列の最後の要素を取り出す

配列[ 配列.length - 1]

ハッシュ{ }

キー(名前)とバリュー(データ)のセットを要素としてもつ値

変数 = { キー1 => バリュー1 , キー2 => バリュー2 , キー3 => バリュー3 }

=> はハッシュロケットという

変数.keys で全てのキーを取得

変数.values で全てのバリューを取得

シンボル

先頭に : (コロン) 見た目は文字列、中身は数値(コンピューターの処理速度が早い) ハッシュのキーにはシンボルを用いることが多い

以下の3つは全て同じ意味

hash1 = { "name" => "taro" }
hash2 = { :name => "taro" }
hash3 = { name: "taro" }

値の追加、変更、取得

hash3[:age] = "15" #ハッシュに値を追加
hash3[:age] = "18" #ハッシュの値を変更
puts hash3[:name] => taro #ハッシュの値を取得

配列の要素にハッシュを追加して管理する

friends = [ ]  #配列
friend = { }  #ハッシュ
puts "名前は?"  #ハッシュに値を追加
friend [:name] = gets.shomp
puts "年齢は?"
friend [:age] = gets.to_i
friends << friend  #配列に新しい要素を追加

比較演算子

 >,>=,<,<=,== true(真)false(偽)を返す

論理演算子

!はnotの意味。!= は等しく無い時にtrueを返す

条件分岐処理

条件式は真偽値を返す

if 条件式1
  #条件式1が真のときの処理
elsif 条件式2
  #条件式1が偽、かつ
  #条件式2が真のときの処理
else
  #条件式1,2どちらも偽のときの処理
end

繰り返し処理(ループ処理)

timesメソッド 指定した回数繰り返す

ブロック(do ~ end)を引数としてtimesメソッドに渡す

数値.times do |ブロック変数|
  #繰り返す処理(0から始まるブロック変数が使える)
end

eachメソッド 配列の要素に対して要素の数だけ繰り返し処理が行える

配列.each do |ブロック変数|
  #繰り返す処理
end

使い方はこう

colors = ["あか", "", "きいろ"]
colors.each do |color|
  puts"色:#{color}"
end

do ~ end のブロックは {  } と書くこともできる

メソッドの定義(自分で作る)

def メソッド名
  #実行する処理
end

メソッド名で実行されるまで def ~ end は読まれない

メソッド名の命名規則

  • 小文字で始まる
  • 単語を繋ぐ場合は_アンダーバー
  • 数字で始めるのはダメ

戻り値 

  • メソッドで定義した最後の行の結果が戻り値
  • return文 return ○○ としたらそれがメソッドの戻り値
  • 通常は最後の行にreturn文が省略されている

スコープ

定義した変数が使える範囲のこと

  • メソッド内で定義した変数はメソッド内でだけ使用可能
  • メソッド外で定義した変数はメソッド外でだけ使用可能

timesメソッドとeachメソッドは例外

  • メソッド内で定義した変数はメソッド内でだけ使用可能
  • メソッド外で定義した変数はメソッド内でも使用可能

引数

メソッドに渡すことができる値

メソッド外にある変数の値をメソッド内で使える

def メソッド名 (仮引数)
  #処理内容
end
メソッド名(実引数)

仮引数と実引数はそれぞれ(第一引数,第二引数,第三引数 ・・・)と数が等しいこと。

クラス

値の元となるもの。値の共通ルールを定義

class クラス名
 #変数やメソッドの定義
end

クラス名は大文字から始まる

インスタンス

クラスを元にして作られるデータのこと

newメソッド

定義しなくても持っているクラスメソッド

変数名 = クラス名.new #クラスのインスタンスを生成
インスタンスメソッド

クラスに定義する、インスタンスが使用できるメソッド

属性と属性値

データの性質となる情報

インスタンス変数

インスタンスが持つ属性を定義する変数

class クラス名
 def メソッド名
  @変数名 = 値
 end
end

インスタンス変数のスコープはそのクラスの全てのインスタンスメソッド

@を付けない変数ではそのメソッド内でしか使えない

呼び出し

インスタンス名.メソッド名(引数)

クラスメソッド

クラスで共通の情報を使った処理に使用

クラスメソッドを定義したクラス自身が使用できる

class クラス名
 def self .メソッド名
  #処理
 end
end

呼び出し

クラス名.メソッド名(引数)

initializeメソッド

インスタンスが生成された瞬間に生成されたインスタンスが実行する処理を定義するインスタンスメソッド

おわりに

マークダウン記法にも慣れていきたい。今後も頑張ります!