基礎プログラミング I レポート課題 氏名:XXXXXXXX 学籍番号:c109XXX 語学クラス:英語1 コース:社会福祉 1 筆記問題 A まず一日目に一つ卵が孵化する。2日目には前の日の4倍孵化する。よって前 の日の孵化した数と足し算すると、2日間で1+4=5匹産まれたことになる。3日目 は2日目に4匹孵化しているのでその4倍の16匹が孵化する。前の日まで足すと 5+16=21匹になる。つまり前の日に孵化した数の4乗分孵化することになる。 この要領で求めたものを表にした。 日数 aその日孵化した数(4乗した数) 累計(前の日とaを足す) 1 1 1 2 4 5 3 16 21 4 64 85 5 256 341 よって5日目で200匹全てが孵化する。 2 プログラム問題 Aの問題 1 プログラムの設定 print文を用いてカタツムリが孵化し、その日にちを表示するプログラム。 2 作成したプログラム !/usr/koeki/bin/ruby #インタプリタであることを宣言する。おまじない print("カタツムリが卵を200匹産んだ\n") print("春になって卵が孵化し始めました!!\n") print("1日目には最初の1匹が孵化しました \n") print ("2日目には4匹孵化します。いままで5匹孵化しました! \n") print("3日目には16匹孵化します。いままで21匹孵化しました!\n") print("4日目には64匹孵化します。いままで85匹孵化しました!\n") print ("5日目には256匹孵化します。これで200匹すべて孵化しました!!!!\n") # print文を用いて、(" ")で、はさまれた文字列を表示する。 # \nを用いれば改行することが出来る。 3 実行結果 pan{c109058}% ./print_snail.rb [~/Ruby] カタツムリが卵を200匹産んだ 春になって卵が孵化し始めました!! 1日目には最初の1匹が孵化しました 2日目には4匹孵化します。いままで5匹孵化しました! 3日目には16匹孵化します。いままで21匹孵化しました! 4日目には64匹孵化します。いままで85匹孵化しました! 5日目には256匹孵化します。これで200匹すべて孵化しました!!!! 4 bc -lで実行結果の根拠を示す。 pan{c109058}% bc -l [~/Ruby] 1 * 4 4 4 * 4 16 16 * 4 64 64 * 4 256 1 + 4 5 5 + 16 21 21 + 64 85 85 + 256 341 よってbc -lの試算と筆記問題の解答は一致した。 5 考察 print文を用いて、カタツムリが200匹孵化するための日数を表示させたが、この print文を応用すれば表も表示できることだろう。 Bの問題 1 授業で作成したwhile_meta.rbを応用し、毎日、前日の金額の2倍ずつ貯金でき ることを想定してそれをシュミレートするプログラムwhile_snail.rbを作成する。 2 作成したプログラム #!/usr/koeki/bin/ruby print("「もし、49800円するゲーム機を購入するため、最初の日は10円から始め、次の日は前日の倍ずつ貯金したら何日後にかえるのかなあ?」\n") day = 0 # 日にちはゼロから始める/初期値 kane = kane0 = 10 # 所持金は10円から始める kanemax = 49800 #目標金額は49800円と設定する while kane < kanemax # 一日ずつ増える金がkanemaxに代入した金額になるまで繰り返す printf("%d日後 \t %d[円]\n", day += 1, kane *= 2) # 日にちは1日ずつ増やし、それとともにkaneも2倍ずつ増やす end printf("%d日後には 49800[円] を%d [円]越えます \n",day,kane-49800) # day(日にち)と、kane(金)を表示し、kaneの金額から49800円を引く printf("よってお金がたまるのは%d日後です \n",day) # dayを表示する 3 実行結果 pan{c109058}% ./while_snail.rb [~/Ruby] 「もし、49800円するゲーム機を購入するため、最初の日は10円から始め、次の日は前日の倍ずつ貯金したら何日後にかえるのかなあ?」 1日後 20[円] 2日後 40[円] 3日後 80[円] 4日後 160[円] 5日後 320[円] 6日後 640[円] 7日後 1280[円] 8日後 2560[円] 9日後 5120[円] 10日後 10240[円] 11日後 20480[円] 12日後 40960[円] 13日後 81920[円] 13日後には 49800[円] を32120 [円]越えます よってお金がたまるのは13日後です 4 bc -lで根拠を示す pan{c109058}% bc -l [~/Ruby] 20 * 2 40 40 * 2 80 80 * 2 160 160 * 2 320 320 * 2 640 640 * 2 1280 1280 * 2 2560 2560 * 2 5120 5120 * 2 10240 10240 * 2 20480 20480 * 2 40960 40960 * 2 81920 よって、bc -1の試算により、プログラムの結果の根拠が示される。 5 考察 while文を使い、貯金を2倍ずつ増やす夢のようなプログラムを作成したが、この プログラムを応用し、改良すれば、たとえばレポート課題を期日までに提出する と何点、1日過ぎると何点、2日過ぎると…というように減点のシュミレーション のプログラムができるだろう。 感想 確かに、苦労はしたが、自分で考えるプログラ厶を作っている楽しかった。これ が自分でもっと素早く作れるようになったら楽しいだろう。よってこれからもよ り楽しいプログラムができるよう頑張りたい。来週が楽しみである。 協力してくれた先輩:五代儀 公大 先輩/工藤 智也 先輩