第5回 基礎プログラミング II レポート課題 氏名:小松志保 学籍番号:c1090667 語学クラス:中国語1 コース(系):社会福祉 1-A 第3回のレポート課題と名前のところを出すまでは同じなので 自分の名前をASCIIコードにすると K→ 0x4b o→ 0x6f m→ 0x6d a→ 0x61 t→ 0x74 s→ 0x53 u→ 0x75 S→ 0x53 h→ 0x68 i→ 0x69 h→ 0x68 o→ 0x6f となる。 文字コードが16進数なので、これを10進数に直すために 16をかけていく。 K 0x4b 4*16**1 + 11*16**0 = 96 + 11 = 107 o 0x6f 6*16**1 + 15*16**0 = 96 + 15 = 111 m 0x6d 6*16**1 + 13*16**0 = 96 + 13 = 109 a 0x61 6*16**1 + 1*16**0 = 96 + 1 = 97 t 0x74 7*16**1 + 4*16**0 = 112+ 4 = 116 s 0x53 5*16**1 + 3*16**0 = 80 + 3 = 83 u 0x75 7*16**1 + 5*16**0 = 112 +5 = 117 S 0x53 5*16**1 + 3*16**0 = 80 + 3 = 83 h 0x68 6*16**1 + 8*16**0 = 96 +8 = 104 i 0x69 6*16**1 + 9*16**0 = 96 + 9 = 105 h 0x68 6*16**1 + 8*16**0 = 96 +8 = 104 o 0x6f 6*16**1 + 15*16**0 = 96 + 15 = 111 出た答えを全て足すと1247となる。 よって0d1247となる。 10進数0d1247を16進数に直すために 2進数にしていく 1247/2 = 623あまり 1 623/2 = 311あまり 1 311/2 = 155あまり 1 155/2 = 77あまり 1 77/2 = 38あまり 1 38/2 = 19あまり 0 19/2 = 9あまり 1 9/2 = 4あまり 1 4/2 = 2あまり 0 2/2 = 1あまり 0 1/2 = 0あまり 1 あまりの数を下から読んでいくと 0b10011011111となる。 左から四桁ごとにくぎっていくと 「1001」 「1011」 「111」となるので 1001→9 1011→b 111→7 となる。 よって0d1247は 0x9b7となる。 1-B 歯みがきをするまでのプログラムを考えてみた def hamigaki(gohan, koppu, hamigakiko,ha) gohanを食べ終わる koppu に水を入れる hamigakikoを出す ha をみがく end hamigaki(夕ご飯が食べ終わったよ) print("虫歯予防できたよ\n") 2-A a) 冷蔵庫に10個の生卵を2個ずつ取りだすと何通りになるかのプログラムをつくるために def_combination.rbを作成した。 b) #!/usr/koeki/bin/ruby print("冷蔵庫の中に生卵が10個入っています。\n") def firefly(egg) if egg = 1 1 else egg * firefly(egg - 1) end end def combination(n,m) y = firefly(n)/(firefly(m)*firefly(n-m)) #順列を求める end STDERR.print("生卵をいくつ使いますか?\n") toru = gets.to_i egg_all = 10 #生卵が全部で10個 printf("%d個の生卵から %d個ずつ取りだすときは%d通りの取り方がある。\n",egg_all,ctoru,combination(egg_all,toru)) c) 「階乗計算」「シュミレーションで考えること」についてを参考にしながら書いたので 値をそれぞれ変更した。 また、生卵が全部で10個あることを egg_all = 10とした。 d) 冷蔵庫の中に生卵が10個入っています。 生卵をいくつ使いますか? 2 10個の生卵から 2個ずつ取りだすときは45通りの取り方がある。 e) bc -lで確かめると (10*9*8*7*6*5*4*3*2*1)/(2*1*8*7*6*5*4*3*2*1) 45.00000000000000000000 よって、(d)と同じ45通りになるので正しいことがわかった。 f)一番最後に書いた。 2-B a) ミスタードーナツのメニュー、エンゼルフレンチ、ゴールデンチョコレート、チョ コファッション、ポン・デ・リング、ハニーチェロの5つのドーナツをいくつ購 入するか、合計はいくらになるのかについてのプログラムtwo_methods.rbを作成した。 b) #!/usr/koeki/bin/ruby def enzeru(donatu1) a*147 end def goruden (donatu2) b*115 end def choko (donatu3) c*136 end def ponde(donatu4) d*126 end def hani(donatu5) e*126 end print("[ミスドのメニューがあります。]\n") print("\nエンゼルフレンチ 147円\n") print("ゴールデンチョコレート 115円\n") print("チョコファッション 136円\n") print("ポン・デ・リング 126円\n") print("ハニーチュロ 126円\n") print("\n何個買うか個数を入力してください\n") STDERR.print("エンゼルフレンチ\n") donatu1 = gets.to_i printf("エンゼルフレンチは %d個で %d円です。\n",donatu1,enzeru(donatu1)) STDERR.print("ゴールデンチョコレート\n") donatu2 = gets.to_i printf("ゴールデンチョコレートは %d個で %d円です。\n",donatu2,goruden(donatu2)) STDERR.print("チョコファッション \n") donatu3 = gets.to_i printf("チョコファッションは %d個で %d円です。\n",donatu3,choko(donatu3)) STDERR.print("ポン・デ・リング \n") donatu4 = gets.to_i printf("ポン・デ・リングは %d個で %d円です。\n",donatu4,ponde(donatu4)) STDERR.print("ハニーチェロ \n") donatu5 = gets.to_i printf("ハニーチェロは %d個で %d円です。\n",donatu5,hani(donatu5)) total = enzeru(donatu1)+ goruden(donatu2)+ choko(donatu3)+ ponde(donatu4)+ hani(donatu5) printf("\n合計金額は %d 円です。\n",total) c) それぞれの値をドーナツに置きかえた。 メニューに何があるのかどのくらいの値段でがするのかを 最初にもってきた。 一種類ずつのドーナツの合計がでるようにした。 d) [ミスドのメニューがあります。] エンゼルフレンチ 147円 ゴールデンチョコレート 115円 チョコファッション 136円 ポン・デ・リング 126円 ハニーチュロ 126円 何個買うか個数を入力してください エンゼルフレンチ 5 エンゼルフレンチは 5個で 735円です。 ゴールデンチョコレート 2 ゴールデンチョコレートは 2個で 230円です。 チョコファッション 3 チョコファッションは 3個で 408円です。 ポン・デ・リング 1 ポン・デ・リングは 1個で 126円です。 ハニーチェロ 3 ハニーチェロは 3個で 378円です。 合計金額は 1877 円です。 e) bc -lで確かめた結果 147*5+115*2+136*3+126*1+126*3 1877 よって(d)と同じになったので正しいことがわかった。 f)一番最後に書いた。 3. 機械的な操作を繰り返すものは編物やミシンが浮かんだ。 マフラーなど作るときにひたすら同じことを繰り返しているのでそうではないのかなと 思った。 おもちゃでは、シンバルを叩く熊のぬいぐるみが浮かんだ。 今回のプログラムは身近にあるドーナツをプログラムすることができたので、やって いて楽しかった。 4. 基礎プログラミング I 第5回 配列の構造 「ASCII コード表」 西村まどか http://roy/~madoka/2010/r1/05/05_01_theme_01_asciicode.html 基礎プログラミング II 第5回 何度も呼び出そう 「階乗計算」 西村まどか http://roy/~madoka/2010/r2/05/05_07_theme_05_factorial.html 基礎プログラミングII 第5回 何度も呼び出そう 「シュミレーションで考えること」 西村まどか http://roy/~madoka/2010/r2/05/05_05_theme_03_param.html ドーナツパイメニュー|ミスタードーナツ http://www.misterdonut.jp/m_menu/donut/index.html