駆け出しプログラマーの備忘録

異業種から訪れたIT業界について赤裸々トークを繰り広げる予定!                                 あ、私はプログラミングとは無縁の人生を送ってきたクソザコ野郎です٩( 'ω' )و

駆け プロ

#31 【Ruby】超初心者用・基本文法まとめ(〜判定・繰り返し処理)

f:id:momotaroch:20180420003740p:plain

Ruby】超初心者用・基本文法まとめ(〜判定・繰り返し処理)

 3日目!

どうも。
Rubyにハマって三日間経った です。٩( 'ω' )و

過去の記事は下からどうぞ〜。

momotaroch.hatenablog.jp

momotaroch.hatenablog.jp

 

 それでは早速、昨日学んだ内容を全貼り付けしますね。

一昨日に引き続きドットインストール参照です。

(lesson番号も書いています)

今回は長くなりそうですし2枚貼り付けています。

 

[目次みたいなもの]

test.rb:ハッシュ〜オブジェクト変換〜%の使い方〜書式付で埋め込む

test2.rb:ifを使う〜繰り返し処理

 

それではlesson9からスタート。٩( 'ω' )و

test.rb

#lesson9
#ハッシュ

# - key / value

# taguchi 200
# fkoji 400

scores = {"taguchi" => "200", "fkoji" => "400"}

#シンボルを使うと
#シンボル=シンボルオブジェクト(識別子) メリット:省略が楽
scores = {:taguchi => 200, :fkoji => 400}

p scores[:taguchi]

#書き換え
scores[:fkoji] = 600
p scores

#メソッドを使う
p scores.size #scoresにいくつ値が入っているか
p scores.keys #登録されている全keyを確認
p scores.values #登録されている全valueを確認
p scores.has_key?(:taguchi) #:taguchiが存在すればtrue


#lesson10
#オブジェクト変換

x = 50
y = "3"

# yを数値に変換(String -> Intger)
p x + y.to_i
# yを浮動小数点数に変換(String -> Float)
p x + y.to_f

# xを文字列に変換(Integer -> String)
p x.to_s + y

#ハッシュと配列の相互変換
#ハッシュを設定
#scores2 = {taguchi : 200, fkoji : 400} ←できなかった・・・
scores2 = {:taguchi => 200, :fkoji => 400}
p scores2

#ハッシュから配列に表現(ハッシュ -> 配列)
#scores2.to_a
p scores2.to_a

#配列からハッシュに変換(配列 -> ハッシュ)
#scores2.to_h
p scores2.to_h


#lesson11

# %を使う
#下の出力方法は全て同じ
#ただし、" "内で”ないし'を使用する場合、
#puts "hel\"lo"のようにバックスラッシュを入れなければいけない.
# %を用いた場合はその心配がないため記述が楽になる

puts "hello"
puts 'hello'
puts %Q(hello)
puts %(hello)
puts %q(hello)

#配列で文字列を扱う場合も上に同じく楽になる書き方として
# %Wが用意されている。(大文字でも小文字でも同じ)
p ["red","blue"]
p ['ed','blue']
p %W(red,blue)
p %w(red,blue)


#lesson12

#書式付きで値を埋め込む
#"文字列" % 値
# %s 文字列を埋め込む
# %d 整数を埋め込む
# %f 浮動小数点を埋め込む

p "name: %s" % "taguchi" #1文字分埋め込む(空白になる)
p "name: %10s" % "taguchi" #10桁分埋め込む(空白になる)
p "name: %-10s" % "taguchi" #10桁分右に埋め込む(左寄せになる)

#値が複数の場合は配列でOK
#下の場合:idを5桁にしたいけど、5桁に満たない。0で埋めたい場合は %05d
#%fの場合:小数点前が10桁、小数点以下が2桁にしたい時は%10.2f

#整数の前には5文字分、浮動小数の前には10文字分埋め込む
p "id : %05d,rate: %10.2f" % [355,3.284]

#printf、sprintfでも同じ
# sprintfは文字列を返す、命令のためpで表示させてあげる

printf ("id : %05d , rate: %10.2f \n" % [ 355, 3.284])
p sprintf("id %05d , rate: %10.2f \n" % [ 355, 3.284])

 <lesson10までの実行結果>

f:id:momotaroch:20180420004906p:plain

<lesson11,12の実行結果>

f:id:momotaroch:20180420004912p:plain

f:id:momotaroch:20180420004917p:plain

 

続いてはlesson13からです。٩( 'ω' )و

test2.rb

#lesson13

#ifを使う
#then は省略可能

#注意:else if の書き方は elsif

#getsはユーザーから入力を受け取るメソッド
#getsは文字列で受け取るため整数に変換してscoreに格納
score = gets.to_i

if score > 80 then
	puts "great!"
elsif score > 60 then
	puts "good!"
else 
	puts "so...but..."
end

#論理演算子をつけてみた
if score >= 0 && score < 50 then
	puts "0-50!!"
elsif score < 0 || nil
	puts "But..."
end

#ifを後ろに書く方法
puts "great!" if score > 80



#lesson14

#caseを使う

#thenは省略可能(なくてもok)

# 変数 signal = 信号機の色
#getsは改行コードがつくため、
#.chompで改行コードを取り除く
signal = gets.chomp

case signal
when "red" then
		puts "stop!"
when "green" then
		puts "go!"
when "yellow" then
		puts "caution!"
else
	puts "wrong signal..."
end


#lesson15

#繰り返し処理
#while

i = 0

while i < 10 do 
	puts "#{i}:hello"
	i += 1
end

#times
#回数が決まっている場合に便利(らしい)

10.times do |k|
	puts "#{k}:fuck"
end

10.times { |m| puts "#{m}:yeah" }


<lesson13実行結果>

変数に入力した値を代入するため「100」と入力後エンター!

 f:id:momotaroch:20180420004923p:plain

すると・・・判定された内容が表示!

f:id:momotaroch:20180420004926p:plain
<lesson14実行結果>
変数に信号機の色を入力するため「red」と入力後エンター!
f:id:momotaroch:20180420004931p:plain 
すると・・・判定されて「stop!」が表示されました!
そのに連なるのはlesson15の内容です。
<lesson15実行結果>
f:id:momotaroch:20180420004936p:plain
 

きちんと繰り返し処理ができていますね。

とりあえずはここまでで本日は終わります。

※先日アドバイスいただいたタブで入力した場合、

インデントがずれるってやつ忘れていました・・・。次から直します・・・。はい。

 

残りのレッスンも残すところわずかです。明日で終わるかな?

終わり次第・・・開発を始めたいと考えています。٩( 'ω' )و

f:id:momotaroch:20180418002559j:plain

にほんブログ村 IT技術ブログへ
にほんブログ村