To: ruby-04-27@e.koeki-u.ac.jp
Subject: 04-27 mul.rb
From: c102299@e.koeki-u.ac.jp
氏名: 公益太郎
学籍番号: c102xxx
クラス: XX
1.作成したプログラム
----------------------------------------------------------------------
#!/usr/koeki/bin/ruby
mul = 1
while true
STDERR.print "掛けたい数(終了は q): "
line = gets.chomp!
if line == "q" then
break
end
mul *= line.to_i
printf "これまでの全ての積は %d です\n", mul
end
printf "全ての積は %d です\n", mul
----------------------------------------------------------------------
2.プログラムの各部の説明
mul = 1
掛算の元となる数を変数mulとして、最初に1を代入する。
mul変数は小文字で始まるのでローカル変数である。
while true
whileは、次に指定する条件が真である間、対応するendまでをくり返す。
この場合、条件が true なので、永遠にくり返す。
STDERR.print "掛けたい数(終了は q): "
画面に「掛けたい数(終了は q): 」と表示する。
line = gets.chomp!
getsはキーボードから一行蚊文字列を読みこむ。
chomp! は文字列の最後に改行文字(\n)があれば削除する。
改行を取った結果を line 変数に代入する。
if line == "q" then
ifは、後に書く条件が真だったら、対応するendまでを実行する。
読みこんだ結果が "q" と等しかったら end までの部分を実行する。
break
whileのループから抜けてwhileの外側の部分(endの先)に実行を移す。
mul *= line.to_i
読みこんだ文字列(line)を整数に変換し、mulと掛ける。掛けた結果はふたた
びmul変数に入る。結果として、mul変数は、読みこんだ数値がどんどん掛けら
れていく。
printf "これまでの全ての積は %d です\n", mul
end
printf "全ての積は %d です\n", mul
結果となる変数 mul を表示して完了。%d は「10進数」に対応するので、mulを
10進数として表示することになる。
3.実行結果
掛けたい数(終了は q): 2
これまでの全ての積は 2 です
掛けたい数(終了は q): 3
これまでの全ての積は 6 です
掛けたい数(終了は q): 5
これまでの全ての積は 30 です
掛けたい数(終了は q): q
全ての積は 30 です
4.感想
endの数が合っていないことに気付かず苦労した。