Subject: #03 ループ
From: c116124@h.koeki-u.ac.jp
To: ruby-2-03@e.koeki-u.ac.jp
Date: Tue, 10 Oct 2017 02:25:30 +0900 (JST)
X-Mailer: Mew version 6.3 on Emacs 23.4 / Mule 6.0 (HANACHIRUSATO)
氏名 : snnooow
学籍番号 : C1161249
クラス : IC
作成したプログラム
#!/usr/koeki/bin/ruby
# coding: utf-8
def hello(name = "Guest")
message = "ようこそ!" + name + "さん\n"
puts message
end
def sakana(tuna)
u = 0
fish = ""
for r in tuna
fish << r
fish << " "
end
return fish
end
def sum(total)
sum = 0
for a in total
sum += a
end
return sum
end
def sum(total)
sum = 0
for a in total
sum += a
end
return sum
end
if ARGV.length != 1
hello()
else
hello(ARGV[0])
end
while true
print"何皿食べる? ただし、20皿までだよ!: "
sara = STDIN.gets.chomp.to_i
if sara > 20
puts "それは食べすぎ~! 20皿までだよ!"
redo
elsif sara > 0 && sara <= 20
printf("わかった! 今日は%d皿までね!\n", sara)
break
else
puts"ちゃんと入力してね!おこだよ!"
redo
end
end
puts""
s = 0
sushi = []
kakaku = []
for x in 1..sara
s += 1
printf("今、%d皿目だよー!何を食べたのか教えて?\n", s)
neta = STDIN.gets.chomp!
sushi[s-1] = neta
puts"それはいくらだったの?"
price = STDIN.gets.chomp!.to_i
kakaku[s-1] = price
printf("%d皿目おーわり!\n", s)
puts""
end
puts""
puts"これでおーわり!"
printf("今日あなたが食べたのは、%sです。\n", sakana(sushi))
printf("あなたが食べた寿司の合計金額は%d円です。\n", sum(kakaku))
説明
このプログラムは、食べるお寿司の枚数とネタ、金額をそれぞれ入力していく
と、食べたお寿司の種類と合計の金額を出力するプログラム。
ARGVを使用し、プログラムに与えた引数をRubyプログラムからも利用できるよ
うにした。このプログラムでは、起動する際に、 % ./kadai.2 のあとに名前
を入れると、その名前が出力される。なにも打ち込まなかった場合は、Guestさ
んとなる。
for 変数 in 配列 のメソッドを使い、打ち込まれた寿司の金額の合計が出力
されるようにした。
実行結果
<1>
roy{c116124}% ./kadai2.rb ゆうき
[~/Ruby]
ようこそ!ゆうきさん
何皿食べる? ただし、20皿までだよ!: 2
ちゃんと入力してね!おこだよ!
何皿食べる? ただし、20皿までだよ!: 2
わかった! 今日は2皿までね!
今、1皿目だよー!何を食べたのか教えて?
あじ
それはいくらだったの?
100
1皿目おーわり!
今、2皿目だよー!何を食べたのか教えて?
えんがわ
それはいくらだったの?
200
2皿目おーわり!
これでおーわり!
今日あなたが食べたのは、あじ えんがわ です。
あなたが食べた寿司の合計金額は300円です。
<2>
roy{c116124}% ./kadai2.rb
[~/Ruby]
ようこそ!Guestさん
何皿食べる? ただし、20皿までだよ!: 3
わかった! 今日は3皿までね!
今、1皿目だよー!何を食べたのか教えて?
いくら
それはいくらだったの?
108
1皿目おーわり!
今、2皿目だよー!何を食べたのか教えて?
まぐろ
それはいくらだったの?
302
2皿目おーわり!
今、3皿目だよー!何を食べたのか教えて?
サーモン
それはいくらだったの?
201
3皿目おーわり!
これでおーわり!
今日あなたが食べたのは、いくら まぐろ サーモン です。
あなたが食べた寿司の合計金額は611円です。
参考文献
広瀬雄二."いろいろな繰り返し".2017年度 基礎プログラミングII.
http://roy.e.koeki-u.ac.jp/~yuuji/2017/pf2/03/iteration.html
,(参照2017-10-09).
広瀬雄二."コマンドラインとの情報のやりとり".2017年度 基礎プログラミング
II.http://roy.e.koeki-u.ac.jp/~yuuji/2017/pf2/03/argv.html
,(参照2017-10-09).
Ruby Association."メソッド".Rubyアソシエーション: メソッド - Ruby
Association.
http://www.ruby.or.jp/ja/tech/development/ruby/tutorial/070_method.html
,(参照2017-10-09).
感想
今回の課題は、習ったもの+前回習ったところを含めなければならないプログ
ラムをつくらなければならなかったので、どのようなプログラムをつくればいい
のかがわからず、とても悩みました。私は、発想力が乏しいほうだと思うので、
オリジナルを考えることが難しいです。今回習ったところは、まだ簡単らしいの
で、今後、授業についていけるか不安でいっぱいです。