5 月 10 日のレポートについて 名前 XXXXXXXXXX 学籍番号 C105XXXX クラス XXXXXXXX 1. 掛け算をするプログラム multiple.rb について a)作成したプログラム #!/usr/koeki/bin/ruby sum=1 while true STDERR.print("入力した数を掛けます。好きな数字を入力して下さい。 (止めたい場合は q を押す): ") item = gets.chomp! if item == "q" then break end sum *= item.to_i printf(" 合計は %d です。\n", sum) end printf("合計は %d になりました。\n", sum) b)プログラムの各行の説明 一行目は Ruby でプログラムが始まるという意味である。これが間違っている と keterm の横に [~/Ruby] が表示されているにもかかわらずプログラムを実 行することができない。 二行目は合計の和を入れておく変数を sum とすることを表している。それに この場合、 sum の初期値が1であることを表している。 三行目は while -- end 内に書かれていることが出来る間は続けるようにしろ という意味を表している。 四行目はユーザーに数字を入力させるための表示になるものである。 五行目は読み込んだ文字列を item にしまうという意味を表している。item とは入力された数字を入れておく変数のことである。gets.chomp! は文字列を 読む gets 、改行文字が入力されたかどうかを調べる chomp 、改行文字を取 る ! が組合わさっているものである。これは method と呼ばれる。 六行目はもしも q という文字が入力された場合には七行目に書かれているこ とを実行しろという意味である。 七行目は六行目のことを受けて計算をやめるということである。つまり六行目 と七行目でもしも q という文字が入力された場合計算をやめるということを 表している。このようなものを条件文という。 八行目は六行目と七行目に書いた一連の条件文が終わることを意味している。 九行目は sum に入力された値 item を数値に変換したものを掛けろという意 味 である。* は掛け算を表すもの、to_i は item を数値に変換し、その際小 数点があれば切り捨てろという意味を表している。 十行目は九行目に書かれている事を実行した結果を表示するためのものである。 十一行目は三行目の while と合わせることにより間にはさまれた命令を実行 するということを示している。これを書くことを忘れてしまうとプログラムを 実行することが出来ない。 十二行目はこのプログラムで実行したことの最終結果を表示するためのもので ある。 c)プログラムの実行結果 irsv{c105174}% ./multiple.rb [~/Ruby] 入力した数を掛けます。好きな数字を入力して下さい。 (止めたい場合は q を押す): 3 合計は 3 です。 入力した数を掛けます。好きな数字を入力して下さい。 (止めたい場合は q を押す): 4 合計は 12 です。 入力した数を掛けます。好きな数字を入力して下さい。 (止めたい場合は q を押す): 5 合計は 60 です。 入力した数を掛けます。好きな数字を入力して下さい。 (止めたい場合は q を押す): 6 合計は 360 です。 入力した数を掛けます。好きな数字を入力して下さい。 (止めたい場合は q を押す): q 合計は 360 になりました。 プログラムを作成して気付いた点 私は最初 sum の初期値を0に設定していたためどんな数字を入れても0にしか ならなかった。そこで初期値を1にしたところ上記のような結果になった。そ こで私は初期値に様々な値を入れてみた。その結果負の数を入れたときは問題 なかったが小数を入れたときは小数点が切り捨てられた。これは九行目に書か れていることが原因なのではないかと考えた。小数を計算したければ授業中に 説明されたようにプログラムを改良する必要があると感じた。 2.感想 今回の講義では前回までの復習とレジスターを作成した。さらにキーボード操 作の練習もした。また、困ったときに助けになるかもしれない操作も習った。 とっさの状況でこの操作方法を思い出すのは難しいと思うのできちんと復習を しておこうと思った。最後に今回もプログラムを作成し、無事実行することが 出来て良かったと思う。これからも努力していこうと考えている。