氏名 ★||| 学籍番号 C106XXXX クラス C 1.作成したプログラム #!/usr/koeki/bin/ruby if ARGV[0] == nil STDERR.puts "起動時に入力した二つの数字を掛けます。" STDERR.puts "例: ./enshu1.rb 3 5 --- 3*5の答えが出ます" exit(0) end if ARGV[1] == nil STDERR.puts "起動時に入力した二つの数字を掛けます。" STDERR.puts "例: ./enshu1.rb 3 5 --- 3*5の答えが出ます" exit(0) end x = ARGV[0].to_i z = ARGV[1].to_i 4.times do sleep(0.5) puts "計算中" sleep(0.5) end def f(x,z) d = x*z end printf("%d 掛ける %d は %dです\n",x,z, f(x,z)) 2.プログラムの説明 if ARGV[0] == nil STDERR.puts "起動時に入力した二つの数字を掛けます。" STDERR.puts "例: ./enshu1.rb 3 5 --- 3*5の答えが出ます" exit(1) end では ARGV[ ]に指定されている文字列以外のものを指示された時に、 STDERR.putsで強制的に上記のようなものやエラーの原因を表示さ せている。 exit(1) はシステムに対して、プログラムが成功か失敗かを教える ことが出来る。( )の中が0の時は仕事が上手く行なえたことを示し、 それ以外の時は仕事が上手く行かなかったことをシステムに示す。 上記の場合、(1)となっているので失敗したときにSTDERRを使い エラーメッセージを出すことが出来る。 ARGV[ ].to_i はコマンドラインで指示された引数を溜めておく受け皿の ようなものである。上記では2個つかっているがこれを増やすことで コマンドラインで指示することの出来る引数の数が増える。 4.times do sleep(0.5) puts "計算中" sleep(0.5) end 4.times do puts "計算中" で「計算中」 というのを4回繰り返し、 sleep (0.5) で0.5秒間隔で表示されるようにしている。 def f(x,z) d = x*z end は コマンドラインで指定された引数を d = x*z で計算しf(x,z)に 渡している。 3.実行結果 irsv{c106168}% ./enshu1.rb 6 45 [~/Ruby] 計算中 計算中 計算中 計算中 6 掛ける 45 は 270です irsv{c106168}% ./enshu1.rb 5 75 [~/Ruby] 計算中 計算中 計算中 計算中 5 掛ける 75 は 375です 4.感想 とても難しかったが、出来たときは嬉しかったです。ループは 無理矢理使ってしまい、定義したメソッドも簡単なものしか 出来なかったが少しづつ理解して来たので良かったと思います。 5.添付