ruby の while 文

ruby の while 文
#27 while文による繰り返し処理
http://dotinstall.com/lessons/basic_ruby/4727

を参考に
ruby での while 文を学習
自己代入も学習
ruby の while 文の構文は
while 繰り返しの条件 do
行う処理
end
となる
while i <10 do puts i i = i+1 end とすると 1~9まで表示される これは i<10 なのが理由で i<=10 なら1~10までになる 自己代入演算子とは i = i+1 というのを i +=1 というように書くやり方のこと 似たようなもので += -= *= /= というのもある

ruby でハッシュオブジェクトと繰り返し処理

ruby でハッシュオブジェクトと繰り返し処理
#26 ハッシュオブジェクトと繰り返し処理
http://dotinstall.com/lessons/basic_ruby/4726
を参考に、each メソッドをつかって
ハッシュオブジェクトを使った繰り返し処を理学習
eachメソッドを使うことで
ハッシュに対して繰り返し処理を行うことができる
scores ={“tom”=>200,”sam”=>300,”jobs”=>500}
というように、値とキーのペアがハッシュ
eachメソッドを使うことで、この
キーと値の両方を繰り返し処理で取得する
ハッシュ.each do |キーを格納する変数, 値を格納する変数|
行う処理
end
という書き方になる
| は shift + \ で入力|
今回なら
ハッシュが scores なので
scores.each do |name, score|
printf(“%s ‘s score is %d\n”, name, score)
end
これで
jobs ‘s score is 500
sam ‘s score is 300
tom ‘s score is 200
となる
printf() の
%s は文字列
%d は整数
になる

ruby の for / each による繰り返し

ruby の for / each による繰り返し
今回は for ループと each メソッドで繰り返し処理
これは、オブジェクトの中身の要素分だけ繰り返す
PHPの foreach() とおなじような処理になる
まず、for ループ
for 変数 in 配列 do
行う処理
end
となる
users =[“tom”,”sam”,”jobs”]
と3人の名前を用意
これを配列分表示するなら
for user in users do
puts user
end
とする
これで、配列 users の中身が user という変数に格納され
それを puts user で表示している
このループは配列の中身の分だけループするので
tom
sam
jobs
となる
同じようなメソッドとして
each メソッドがある
これもループするメソッドで
構文は
配列.each do |変数|
行う処理
end
となる
users =[“tom”,”sam”,”jobs”]
users.each do |user|
puts user
end
とすると、 for のときと同じ結果が得られる
for は単純ループでも使われる
構文はいまいち理解できていないけど
for i in 1..10 do
puts i
end
とすることで
1~10まで表示される

ruby で times メソッドによる繰り返し処理

ruby で times メソッドによる繰り返し処理
ruby の繰り返し処理でいちばん基本になるのが
times メソッド
構文は
繰り返す回数.times do
行う処理
end
となる
10.times do
puts “Hi !”
end
とすると
Hi!
Hi!
Hi!
Hi!
Hi!
Hi!
Hi!
Hi!
Hi!
Hi!
と10回繰り替えされる
ループ回数を出すには
10.times do |i|
puts “#{i} Hi!”
end
とする
| は shift +\ で入力
i の値は0からになる
1からじゃないので注意
これでループ回数が表示される

ruby の case 文について

ruby の case 文について
ruby の case 文は
case 条件
when ケース1:
 ケース1のときの処理
when ケース2:
 ケース2のときの処理
else
 それ以外のときの処理
end
という構文になる
PHPの switch 文に近い処理になる
switch の場合だと
switch(条件){
case ケース1:
 ケース1の処理;
 break;
case ケース2:
 ケース2の処理
 break;
default:
 それ以外のときの処理
 break;
}
というかんじになる
つまり
switch が case
case が when
default が else end
と置き換えるとわかりやすい
when には、複数条件の指定が可能
今回、ドットインストールのをみ てやってみた
gnal =”yellow”
case signal
when “red”:
puts “stop”
when “green”,”blue”
puts “go”
when “yellow”:
puts “caution”
else
puts “signal is broken”
end
とすることで
when “green”:
に該当するため
実行すると
caution が表示される

ruby の比較演算子について

ruby の比較演算子について
#22 比較演算子について
http://dotinstall.com/lessons/basic_ruby/4722
を参考に学習
ruby で使える比較演算子は
> < >= <= == != というように、他の言語でもおなじみのものが使える 変わっているのとしては =~ という正規表現とのマッチングを調べるのがある 正規表現は Linux のシェルとかPHPなどで多く使われる puts "match" if /taguchi/ =~ "my name is taguchi" という場合 // の間の文字の taguchi が 比較する文の中にあるので puts で match と表示される また、条件をつなげるには PHPなどでお馴染みの  && || というものも使える 正規表現を試すツールも存在しており http://rubular.com/
というものもある

ruby のif の別の書き方

ruby のif の別の書き方
#21 if文の別の書き方を理解しよう
http://dotinstall.com/lessons/basic_ruby/4721
を参考に
ruby での if の別の書き方を学習
if score >= 80 then
puts “great”
end
という単純な if の場合には
もっと簡単に
puts “great” if score >=80
という書き方もできる
これを使えば、簡単な判定で表示を変えるようなことができる
また条件演算子というものがあり
これは、 if else の別の書き方
書き方は、
条件 ? 値1 : 値2
という書き方
これはPHPなどで使う三項演算子と同じ
a =50
b = 20
で大きいほうの値をかえすようにするなら
max = a > b +? a : b
p max
これで、50が表示される
ruby の場合、他の言語とことなり
あまり() を使わないけど、基本的部分はおなじなので
他の言語を取得しているなら
わかりやすい

ruby の if 文について

ruby の if 文について
rubyの if 文の注意点として
ruby の場合 false と nil だけが偽として扱われる
このため数値の0とか、空文字に関しては
他の言語とは異なり、真として扱われるので注意
scoreが85点以上のときに処理する if 文を書くには
score = 85
if score >= 85 then
puts “great!”
end
というようになる
ruby の if の構文は
if 条件式 then
行う処理
end
というように、シェルスクリプトに近い書き方になる
PHP java のように、条件を()で囲まない
if else にするには
if 条件式 then
真の時の処理
else
偽の時の処理
end
というようになる
else if の処理もするなら
if 条件式 then
真の時の処理
elsif 条件式2
条件式2にあてはまったときの処理
else
どちらでもなかったときの処理
end
というようにする
else if ではなく elsif なので注意

ruby の printf メソッドについて

ruby の printf メソッドについて
ruby の printf は
p / put の高機能版になる
これは、フォーマット指定して表示できる
これは、C言語の printf() と同じ機能
java とかで 変数に代入した値と + で合わせて表示するときと同じことができる
x =”hebereke”
y=22
printf(“%s’s year is %d\n”,x,y);
とすることで
hebereke’s year is 22
と表示される
%s は文字列
%d は整数
桁数の指定も可能で
%10d とすれば、10桁表示になる
22のように10桁ない場合には
空欄で 22 というように左側に空欄ができる
左寄せにしたいのなら
%-10d というように – をつける
空白ではなく、0で埋めたいのなら
%-010d とすれば
hebereke’s year is 0000000022
というように
0で空白が埋められる
もっと便利な関数が
sprintf()
これ、よくPHPで見かけるメソッドで
この sprintf() は
表示ではなく、値を返す
これを使うと、sprintf() の値を変数に格納できるので
コードを書くときに便利になる
z = sprintf(“%s’s year is %-010d\n”,x,y)
p z
とすると
“hebereke’s year is 0000000022\n”
と表示される

ruby の日付、時間に関するクラスとメソッド

ruby の日付、時間に関するクラスとメソッド
ruby で日付を扱うには
Time オブジェクトを使う
現在時刻を取得するには
.now を使う
t = Time.now
p t
とすると、
Wed Aug 28 20:54:00 +0900 2013
と表示される
オブジェクトを作成後、
年だけ取り出すなら
.year を使う
p t.year
とすると
2013
となる
月だけなら
.month を使う
p t.month
なら

現在時刻なら .now でできるけど
指定した年月日のように、特定の日付や時間にするなら
.mktime()
を使う
2011年2月24日9時とするなら
t = Time.mktime(2011,2,24,9,0,0)
p t
とする
これで
Thu Feb 24 09:00:00 +0900 2011
と表示される
作成されたオブジェクトに関しては
足したり引いたりということも可能
p t +10
とすると
Thu Feb 24 09:00:10 +0900 2011
というように10秒追加される
使い道は、制限時間とか、有効期限の設定など
表示される時刻の形式は変更可能で
変更するには
.strtime() を使う
2011/2/24
というような表示にしたいのなら
p t.strftime(“%Y/%m/%d”)
とすることで
“2011/02/24”
となる
.strftime() の 変換フォーマットに関しては
リファレンスを参照
http://www.ruby-doc.org/core-1.9.3/Time.html#method-i-strftime