2013年7月15日月曜日

「プログラミング入門 - Rubyを使って -」をやってみた その1

Rubyの勉強に下記サイトの練習問題に挑戦します。1章はirbを使ってます。
プログラミング入門 - Rubyを使って -, by Chris Pine, 日本語ver. by S. Nishiyama

1.数(Numaber)

  • 1年は何時間でしょうか?
    うるう年ではないとします。
>> 24*365
=> 8760
  • 10年間は何分でしょうか?
    うるう年が2回ありますので、計算に含めます。
>> 60*24*(365*10+10/4)
=> 5258880
  • あなたが生まれてから今日まで何秒たっているでしょうか?
>> (Time.now - Time.local(1973,12,3,0,0,0)).to_i
=> 1250124789
  • あなたは一生のうちいくつのチョコレートを食べたいですか?
    1週間に1つのチョコを食べるとします。
>> (80*365)/7
=> 4171
  • 私が生まれてから10億3400万秒 たっているとしたら、私は今何歳でしょう
>> 1034000000/(60*60*24*365)
=> 32

4.数と文字列の変換

  • 最初に姓、次に名前を聞いて、最後にフルネームに対してあいさつを するようなプログラムを書いてみましょう。
pochi-2:Test snumano$ cat 4-1.rb
#!/usr/bin/ruby

puts 'こんにちは。あなたの姓を入力してください'
last = gets.chomp

puts '次は、あなたの名を入力してください'
first = gets.chomp

puts 'あなたの名前は' + first + ' ' + last + 'ですね。'

pochi-2:Test snumano$ ./4-1.rb
こんにちは。あなたの姓を入力してください
Numano
次は、あなたの名を入力してください
Shugo
あなたの名前はShugo Numanoですね。
  • 好きな数を入力してもらい、それに1を加えて、その結果を ベターな 数字として薦めるプログラムを書きましょう。
  •  
pochi-2:Test snumano$ cat 4-1.rb
#!/usr/bin/ruby

puts 'こんにちは。あなたの姓を入力してください'
last = gets.chomp

puts '次は、あなたの名を入力してください'
first = gets.chomp

puts 'あなたの名前は' + first + ' ' + last + 'ですね。'

pochi-2:Test snumano$ ./4-1.rb
こんにちは。あなたの姓を入力してください
Numano
次は、あなたの名を入力してください
Shugo
あなたの名前はShugo Numanoですね。

5.メソッド(method)

  • 「怒ったボス」のプログラム
pochi-2:Test snumano$ cat 5-1.rb
#!/usr/bin/ruby

$KCODE = 'UTF-8'

puts '望みは何だ?'
hope = gets.chomp

if hope =~ /給料上げてください/ then
  puts 'なにぃ? "給料上げてください" だとー!! おまえは首だ!! '
else
  puts 'なにぃ?' + hope + 'だとー!!お前は首だ!!'
end
pochi-2:Test snumano$ ./5-1.rb
望みは何だ?
休みたい
なにぃ?休みたいだとー!!お前は首だ!!
pochi-2:Test snumano$ ./5-1.rb
望みは何だ?
給料上げてください
なにぃ? "給料上げてください" だとー!! おまえは首だ!! 
  • 「目次」を表示する プログラム
pochi-2:Test snumano$ cat 5-2.rb
#!/usr/bin/ruby

$KCODE = 'UTF-8'

lineWidth = 20
lineWidth2 = 10

index = '目次'
chap1 = '1章:  数'
chap1Page = 'p. 1'
chap2 = '2章:  文字'
chap2Page = 'p. 72'
chap3 = '3章:  変数'
chap3Page = 'p. 118'

puts index.center(lineWidth)
puts chap1.ljust(lineWidth) + chap1Page.center(lineWidth2) 
puts chap2.ljust(lineWidth) + chap2Page.center(lineWidth2) 
puts chap3.ljust(lineWidth) + chap3Page.center(lineWidth2) 
pochi-2:Test snumano$ ./5-2.rb
       目次       
1章:  数             p. 1   
2章:  文字         p. 72   
3章:  変数         p. 118  
今回はここまで。6章以降は後日。。。
このエントリーをはてなブックマークに追加