メソッドの作り方 於Ruby

当ブログに於いてRuby及びプログラミングの入門書 初めてのプログラミング の各章の最後に位置付けられる練習問題にて正解の掲載されぬに 少しく不安を感じたかも知れぬ本誌購読のご同志の為の、 参照、比較検討用に生贄的に供す個人的な解釈、解答を掲載す為の本カテゴリー 初めてのプログラミング も第9章
9章 メソッドの作り方
9.1 メソッド引数
9.2 局所変数
9.3 返り値
9.4 練習問題
に入らば愈々其のタイトル通り、 自由自在にメソッドを作成するに至るは、 扠ではメソッドなるは何者と問えば、 当ブログでは素通りの本書第6章冒頭35頁にあるを引用するに
メソッドの技術的な定義は「 何かを行うもの 」です。オブジェクトをRubyの名詞とするなら、メソッドは動詞のようなものです。
と実に的確な比喩を以てメソッドなるものに付き説明されています。
然らば、当章ににてはメソッドの作成とは即ち、 当世流布し切った感のある検索エンジンの雄Googleから派生の「 ぐぐる 」抔が如くの造語に当たるのかも知れません。

引数、ローカル変数、及び返り値と順序立てる説明の後、 提示される練習問題は アラビア数字を引数として、ローマ数字を返り値とせよ と云うものにて、此処にヒントとして与えられるのが次の引用なれば
整数の割り算と余り演算子を使います。また参考のため、ローマ数字で使われる文字を挙げておきます。
I=1 V=5 X=10 L=50 C=100 D=500 M=1000
即ち roman_numeral 4 に対し、 IIII が返されるを想定するのが先ずは問題の前半なる 古いローマ数字 が課題に、今回は此方への当方の解答例を贄に供したいと思います。
スポンサーリンク
以下
def old_roman_numeral num
  m_num = num / 1000
  d_num = (num % 1000) / 500
  c_num = (num % 500) / 100
  l_num = (num % 100) / 50
  x_num = (num % 50) / 10
  v_num = (num % 10) / 5
  i_num = num % 5
  show_num = (´M´*m_num)
   +(´D´*d_num)
   +(´C´*c_num)
   +(´L´*l_num)
   +(´X´*x_num)
   +(´V´*v_num)
   +(´I´*i_num)
end

puts ´1~3000迄の数字を入力してください。´
puts ´入力された数字をローマ数字に変換します。´
ip_num = gets.chomp.to_i
puts old_roman_numeral(ip_num)
を記述するにあたり、紹介書籍の指示に従い numを引数としたメソッド old_roman_numeral を作成し、返り値は明示されていない為、第83頁の引用
「最後に評価した式」と言ったことに注意して下さい。 単純に「最後の行」とか「最後の式」ではなくです。 最後の行に式の全体が入らないこともあり得ます (ifの式の最後のendの様に)。 それに、メソッドが明示的な return を持つときには、最後の式が評価されないということもあり得ます。
に記されるが如く、最後に評価した式を show_num = ~ 表示する様になっているかと思います。

以上の3プログラムを、現在の手元環境
ruby 1.8.6 (2007-03-13 patchlevel 0) [i386-mswin32]
で走らせて得られる結果は、先ずは所与の4に於いては
C:¥tsukamotch¥Ruby¥programs
   >ruby old_roman_numeral.rb
1~3000迄の数字を入力してください。
入力された数字をローマ数字に変換します。
4
IIII
と、取敢えずは想定した儘の結果 IIII を得られ、また限界値3000でも
C:¥tsukamotch¥Ruby¥programs
   >ruby old_roman_numeral.rb
1~3000迄の数字を入力してください。
入力された数字をローマ数字に変換します。
3000
MMM
任意の数字1289でも
C:¥tsukamotch¥Ruby¥programs
   >ruby old_roman_numeral.rb
1~3000迄の数字を入力してください。
入力された数字をローマ数字に変換します。
1289
MCCLXXXVIIII
の様に想定の結果が得られる様です。

当章練習問題の後半なる 「新しい」ローマ数字 については次回アーティクルに譲り度思います。

1件のコメント

  1. メソッドの作り方(「新しい」ローマ数字)於Ruby

    初めてのプログラミング実に有効なると思われるRuby及びプログラミングの入門書初めてのプログラミングの各章の最後に位置付けられる練習問題にて正解の掲載されぬに幾許か不安を感じるも在りや無しや、本誌愛読ご同志に捧ぐ、当ブログに於いては参照、比較検討用に生贄的に

コメントは受け付けていません。