To: ruby-05-10@e.koeki-u.ac.jp Subject: 05-10 mul.rb From: c104299@e.koeki-u.ac.jp 氏名: 公益太郎 学籍番号: c104xxx クラス: 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の数が合っていないことに気付かず苦労した。