第3回の課題 レポートのサンプル

氏名     akiaki
学籍番号 c109082
クラス   中国語2

1 作成したプログラム

#!/usr/koeki/bin/ruby


a = 1
while true
  STDERR.print "掛けたい数(最初は1)(終了はexit): "
  line = gets.chomp
  if line == "exit" then
    break
  end
  a *= line.to_i
  printf("これまでの合計は %d です\n", a)
end
printf("合計は %d です\n", a)



2 プログラムの実行結果

pan{c109082}% ./mul.rb                                                 [~/Ruby]
掛けたい数(最初は1)(終了はexit): 2
これまでの合計は 2 です
掛けたい数(最初は1)(終了はexit): 4
これまでの合計は 8 です
掛けたい数(最初は1)(終了はexit): 3
これまでの合計は 24 です
掛けたい数(最初は1)(終了はexit): 7
これまでの合計は 168 です
掛けたい数(最初は1)(終了はexit): 5
これまでの合計は 840 です
掛けたい数(最初は1)(終了はexit): 3
これまでの合計は 2520 です
掛けたい数(最初は1)(終了はexit): 1
これまでの合計は 2520 です
掛けたい数(最初は1)(終了はexit): 3
これまでの合計は 7560 です
掛けたい数(最初は1)(終了はexit): 4
これまでの合計は 30240 です
掛けたい数(最初は1)(終了はexit): 6
これまでの合計は 181440 です
掛けたい数(最初は1)(終了はexit): exit
合計は 181440 です


3 プログラムの各部の説明

■while から end(2個目)までは「繰り返しプログラムを実行する(ループ)」と
いう意味になる。

■ a は、今回は「計算(掛算)を行った数」の意味。
一番上のaは、「計算をする前の最初の値」である。(今回は掛算のプログラムに
したので、最初の値はa = 1、つまり「1」にしてある。)

■line =gets.chomp は、「キーボードからデータを読みこむ場所」を指定して
いる。

■if line== "exit" then は「もしキーボードから読みこんだデータが"exit"な
ら」という意味である。
下に表記してある制御構造が「break」なので、今回のプログ
ラムでは、「"exit"と入力すればループの終了、つまり今回はプログラムの終了
をする」という指定になる。
  まとめると、キーボードから読みこんだ場合のデータがexitだった場合、
「while から endまで」のプログラムのループを終了し、最後のprintf(文字を
表示させる)が指定した「("合計は %d です\n", a)」を表示させてプログ
ラムを終了させろ、という意味である。

■a *= line.to_iは、「a(計算を行っている数)に、キーボードから読みこんだ
数値を掛けよ」という指示を行っている式なので、
このプログラムは、「exit」と入力するまで、数値を入力し続ければ計算した
数(a)にキーボードから読みこんだ任意の数字を掛け続けるプログラムである。

■printf("これまでの合計は %d です\n", a)は、先述の通り「printf」は「指
定した文字を表示させる指定」なので、計算を行った後画面に「これまでの合計
は(計算した数)です」と表示させるためのプログラムである。

説明は以上です。


4 感想

いろいろな用語が出てきて正直いっぱいいっぱいになりつつあるけれど、とりあ
えず今回出た用語はちゃんと覚えて再来週の講義に臨みたいと思う。
なんとなく雰囲気では解っている状態で、まだ他の人に完ぺきに説明できるほど
には理解できていない気がするので、いろいろ自分で復習して完ぺきに説明でき
る程度までには理解できるように頑張りたい。

本日の目次