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). 感想 今回の課題は、習ったもの+前回習ったところを含めなければならないプログ ラムをつくらなければならなかったので、どのようなプログラムをつくればいい のかがわからず、とても悩みました。私は、発想力が乏しいほうだと思うので、 オリジナルを考えることが難しいです。今回習ったところは、まだ簡単らしいの で、今後、授業についていけるか不安でいっぱいです。