第5回 何度も呼び出そう レポート課題 氏名:山野駿 学籍番号:c1111429 語学クラス:英語2 コース:社会福祉 1. A. 第3回レポート課題より、作成したものを貼り付けた。 y = 0x79 a = 0x61 m = 0x6d a = 0x61 n = 0x6e o = 0x6f s = 0x73 h = 0x68 u = 0x75 n = 0x6e 16進数で計算し、全て足す。 a = 10 b = 11 c = 12 d = 13 e = 14 f = 15 とする。 また、便宜上 接頭語は省略する。 数のまとまりを分解し、分解したものに16をかけ、十の位は1 一の位は0を巾乗 していく。出た答えを全て足し、16で割る。余りをしたから読んだものが16進数 となる。 7*16^1 + 9*16^0 + 6*16^1 + 1*16^0 + 6*16^1 + 13*16^0 + 6*16^1 + 1*16^0 + 6*16^1 + 14*16^0 + 6*16^1 + 15*16^0 + 7*16^1 + 3*16^0 + 6*16^1 + 8*16^0 + 7*16^1 + 5*16^0 + 6*16^1 + 14*16^0 =1104 16)1104 0 16)69 5 16)5 8 0 となり、 答えは 0x850 B. 目玉焼きを作る行動をプログラム風に書いた。 def medamayaki(tamago, hi, mizu, futa) tamago をとりだす。 hiにかける。 mizu をいれる。 futa をする。 furaipan = hi にかけ tamago をいれる。 furaipan = mizu をいれ、futa をする。 end medamayaki("1個,中火, 20cc, 20秒") print("目玉焼きの出来上がり\n") 2. A. a)設定 基数と指数を入力すると巾乗をするプログラム b)作成したプログラム #!/usr/koeki/bin/ruby #coding: euc-jp def power(base, index) base ** index end print("べき乗の計算をします。\n") print("基数と指数を入力して下さい。\n") STDERR.print("基数:") base = gets.chomp!.to_i STDERR.print("指数:") index = gets.chomp!.to_i printf("%d の %d 乗は %d です。\n",base ,index, power(base, index)) c)もとにしたプログラムとその変更点 ・もとにしたプログラム def_func.rb ・変更点 適切な変数に変更した d)実行結果 1) pan{c111142}% ./def_power.rb [~/Ruby] べき乗の計算をします。 基数と指数を入力して下さい。 基数:4 指数:4 4 の 4 乗は 256 です。 2) pan{c111142}% ./def_power.rb [~/Ruby] べき乗の計算をします。 基数と指数を入力して下さい。 基数:12 指数:6 12 の 6 乗は 2985984 です。 3) pan{c111142}% ./def_power.rb [~/Ruby] べき乗の計算をします。 基数と指数を入力して下さい。 基数:0 指数:1 0 の 1 乗は 0 です。 e)考察 実行結果が正しいかbc -l を用いて検証する。 1) pan{c111142}% bc -l [~/Ruby] 4^4 256 実行結果と計算が一致した。 2) pan{c111142}% bc -l [~/Ruby] 12^6 2985984 実行結果と計算が一致した。 3) pan{c111142}% bc -l [~/Ruby] 0^1 0 実行結果と計算が一致した。 この結果からdef_power.rbは正しく動作している。 B. a)設定 2つの変数を持ち、どちらかはもらって来る数によって変化するプログラム b)作成したプログラム #!/usr/koeki/bin/ruby #coding: euc-jp def creampuff(cp) if cp >= 5 150 * cp * 0.7 else 150 * cp end end def tarte(tr) 200 * tr end print("シュークリームは 150 円、タルトは 200 円です。\n") print("シュークリームまとめ買いセール中\n") print("5個以上お買い上げで3割引\n") STDERR.print("シュークリームは何個買いますか。") cp = gets.chomp!.to_i STDERR.print("タルトは何個買いますか。") tr = gets.chomp!.to_i printf("合計 %d 円です。\n",creampuff(cp) + tarte(tr)) c)もとにしたプログラムとその変更点 ・もとにしたプログラム def_meta.rb ・変更点 変数を適切なものに変更し、計算を変えた。 d)実行結果 1)割引対象外(シュークリーム5個未満)のとき pan{c111142}% ./two_method.rb [~/Ruby] シュークリームは 150 円、タルトは 200 円です。 シュークリームまとめ買いセール中 5個以上お買い上げで3割引 シュークリームは何個買いますか。4 タルトは何個買いますか。3 合計 1200 円です。 2)割引対象(シュークリーム5個以上)のとき pan{c111142}% ./two_method.rb [~/Ruby] シュークリームは 150 円、タルトは 200 円です。 シュークリームまとめ買いセール中 5個以上お買い上げで3割引 シュークリームは何個買いますか。7 タルトは何個買いますか。2 合計 1135 円です。 e)考察 実行結果が正しいか計算をして確認する。 1)割引対象外(シュークリーム5個未満)のとき pan{c111142}% bc -l [~/Ruby] 150 * 4 + 200 * 3 1200 実行結果と一致している。 2)割引対象(シュークリーム5個以上)のとき pan{c111142}% bc -l [~/Ruby] 150 * 7 * 0.7 + 200 * 2 1135.0 計算結果では小数点がついているが、プログラムでは整数で出力する処理をして いるため、一致している。 この結果から、プログラムは正しく動いていると言える。 3. 機械的な操作を繰り返すもの・行動は、洗い物や料理、レジ打ちなどである。 4. http://roy/~madoka/2012/r2/05/r2_05_01_theme_01_diet.html 西村まどか 基礎プログラミング II 第 5 回 (何度も呼び出そう) 「脱メタボリッ ク計画」 http://roy/~madoka/2012/r2/05/r2_05_07_theme_05_factorial.html 西村まどか 基礎プログラミング II 第 5 回 (何度も呼び出そう) 「階乗計算」 http://roy/~madoka/2012/r2/05/r2_05_03_review_01_selfmademethod.html 西村まどか 基礎プログラミング II 第 5 回 (何度も呼び出そう) 「自作の method 」 http://roy/~madoka/2012/r2/05/r2_05_04_appendix_01_firefly.html 西村まどか 基礎プログラミング II 第 5 回 (何度も呼び出そう) 「ほたるの数 と米の収穫量」