第3回の課題 レポートのサンプル
Subject: #03 mul.rb
From: c112059@h.koeki-u.ac.jp
To: ruby-04-26@e.koeki-u.ac.jp
Date: Fri, 26 Apr 2013 12:44:36 +0900 (JST)
X-Mailer: Mew version 6.3 on Emacs 23.3 / Mule 6.0 (HANACHIRUSATO)
氏名:KM
学籍番号:c112059
クラス:7
1.作成したプログラム
#!/usr/koeki/bin/ruby
# coding: euc-jp
sum = 1
while true
STDERR.print "掛けたい数(終了は q): "
line = gets.chomp
if line == "q" then
break
end
sum *= line.to_i
printf("これまでの合計は %dです\n", sum)
end
printf("合計は %dです\n", sum)
2.プログラムの実行結果
pan{c112059}% ./mul.rb [~/Ruby]
掛けたい数(終了は q): 1
これまでの合計は 1です
掛けたい数(終了は q): 3
これまでの合計は 3です
掛けたい数(終了は q): 5
これまでの合計は 15です
掛けたい数(終了は q): q
合計は 15です
3.プログラムの各部の説明
今回のプログラムは、accum.rbを参考にして書き直したものです。
まず最初のsum=の後に、最初に掛けるもとの数を入力する。
今回は掛け合わせなので、sum変数が0だと何を掛けても0にしかならないので、
他の数にした方が良い。私はsum変数を1とした。
while trueは真ん中のendまでの間を繰り返せという命令文である。
STDERR.print "掛けたい数(終了は q): "
この命令文は、""でくくられた文を文字列として画面に表示させるもの。
line = gets.chompについて。
数字を入力した後にリターンキーを押すと、コンピュータは数字とリターンキー
を認識しようとするので、入力されたキーからリターンキーを除いて、数字だけ
をline変数に代入しなければならない。その命令文がこれ。
if line == "q" then
break
end
これは、数字入力のところでqを入力した場合は、whileのループから出て、終了
しなさい(最後の方のendに行け)という命令文である。
sum *= line.to_iについて。
今回の問題は掛け合わせなので、accum.rbでは+=のところを*=に変えた。
また、先程"掛けたい数"のところで入力した数字は、文字としてコンピュータに
扱われているので、計算するには数字として扱われなければならない。よってこ
の文は数字として扱え、という命令文になっている。
printf("これまでの合計は %dです\n", sum)について。
printfは、カンマの後のsum変数に入っている数字を反映させて表示する。ここ
がprintだけだと、数字が出ずにこの命令文のまま表示されてしまう。
%dは、カンマの後のsum変数に入っている数字を文字列に置き換えて表示させる
もの。
最後のendは、whileに対応するもの。
printf("合計は %dです\n", sum)については、qが入力された後に画面に""でく
くった文を表示しろという命令文である。
4.感想
プログラム自体を変えることは難しくなかったが、各部の説明はきちんと理解し
ていないと説明が難しかったです。あらかじめ少し予習してきたので、多少は分
かりました。
今回、各部の説明が長くなってしまいました。分かりにくかったらすみません。
でも、なるべく分かりやすくなるように頑張りました。
これからもプログラムの説明が上手くなるように、努力して行きたいです。
本日の目次へ