第 5 回 何度も呼び出そう レポート課題 氏名:大武 美里 学籍番号:c1110335 語学クラス:英語2 コース:地域共創コース 1.筆記問題 A.16進数と10進数の答えが一緒になるようにする。 自分の名前をアルファベット表示する。 おおたけ みさと → Otake Misato O = 0x4f(15) t = 0x74 a = 0x61 k = 0x6b(11) e = 0x65 M = 0x4d(13) i = 0x69 s = 0x73 a = 0x61 t = 0x74 o = 0x6f(15) <文字コードを全部足す。16進数計算の場合> 文字コードを全部足すと、 O = 0x4f(15) 4 + 15 = 19 t = 0x74 7 + 4 = 11 a = 0x61 6 + 1 = 7 k = 0x6b(11) 6 + 11 = 17 e = 0x65 6 + 5 = 11 M = 0x4d(13) 4 + 13 = 17 i = 0x69 6 + 9 = 15 s = 0x73 7 + 3 = 10 a = 0x61 6 + 1 = 7 t = 0x74 7 + 4 = 11 o = 0x6f(15) 6 + 15 = 21 よって、0x = 146 となる。 (確かめ計算) Kterm で bc-l 入力。 quit で終了できる。 19+11+7+17+11+17+15+10+7+11+21 146 quit <16進数の答えを10進数に変換> 0x = 146 (( 手順 )) 16の2乗 16の1乗 16の0乗 1) 変換したい16進数の桁数分準備する。 256 16 1 2) それぞれの数を計算し、計算結果を記載する。 1 4 6 3) 変換したい16進数を当てはめる。 256 + 64 + 15 = 335 4) 2) * 3) をして、結果を全部足す。 よって、0d = 335 となる。 (確かめ計算) pan{c111033}% bc -l [~] 256+64+15 335 quit <10進数の答えを16進数に変換> 0d = 335 余り (( 手順 )) 335 / 16 = 20 (f)15 1) 変換したい10進数を16で割り、余りを書く。 20 / 16 = 1 4 2) 商が0になればOK。 1 / 16 = 0 1 3) 最後に余りを下から読む。 よって、0x = 14f となる。 <16進数の答えを10進数に変換して、16進数と10進数の答えが同じになるか計算 する> 0x = 14f 16の2乗 16の1乗 16の0乗 256 16 1 1 4 f(15) 256 + 64 + 15 = 335 よって、0d = 335 となる。 (確かめ計算) pan{c111033}% bc -l [~] 256+64+15 335 quit ・考察 計算した結果、16進数の答えと10進数の答えが同じになったので、正しく計算で きた。こまめに確かめ計算をすることで間違わないで答えを導き出せた。 ----------------------------------------------------------------- B.日常で何度も繰り返す作業を見つけ、def文を使って書け。 プログラムを作成しなくていいが、プログラム風に作ること。 また、その道筋を書くこと。 ・考えた設定 朝ご飯の準備をプログラム風にまとめて書く。 def food(abura,rice,moto) abura を少し入れる rice をまぜる moto を入れて更にまぜる gohan = abura を rice をまぜる gahan = gahan に moto を入れて更にまぜる end # 返すものは gahan def nomimono(oyu,milkteamoto,sato) oyu を沸かす milkteamoto を入れる sato を少し入れる gurasu = oyu を入れて milkteamoto を入れる gurasu = gurasu に sato を入れてまぜる end # 返すものは gurasu food(小さじ1杯,1合,1袋) # 炒飯を作るので呼び出す tea(100cc,1個,大さじ1杯) # ミルクティーを煎れるので呼び出す print("さあ、食べましょうー!\n") print("いただきます。\n") ・考察 先輩のレポートを参考にさせていただきながら、内容をプログラム風に作成する ことができた。また、def文の次にくる単語を参考にした。その他は自分なりに 考えて作成した。 ・参考文献 最後に記載 -------------------------------------------------------------- -------------------------------------------------------------- 2.プログラム問題 A.基数 base と 指数 index を入力すると、printf("%d の %d 乗は %d です ",base,index,power(base,index))と答える def_power.rb を作成する。 ・ファイル名( def_power.rb ) <プログラム> #!/usr/koeki/bin/ruby #coding: euc-jp def power(base,index) sum = 1 # sum 合計 index.times do # 繰り返しの処理 sum = sum * base end sum.to_i end print("数を入力してね!\n") base = gets.chomp.to_i print("指数を入力してね!\n") index = gets.chomp.to_i printf("%dの%d乗は%dです。\n", base, index, power(base,index)) <実行結果> pan{c111033}% ./def_power.rb [~/Ruby] 数を入力してね! 2 指数を入力してね! 3 2の3乗は8です。 pan{c111033}% ./def_power.rb [~/Ruby] 数を入力してね! 2 指数を入力してね! 6 2の6乗は64です。 ・考察 実行した結果、〜 の 〜 は 〜 乗です。とうまく実行することができた。講義 のなかで学んだ繰り返しの方法の応用として、自分なりに作成することができた。 分からなかったところは広瀬先生のページを参考にさせていただいた。 ・参考文献 最後に記載 ---------------------------------------------------------------- B.前回の設定を利用してよい。methodを2つ以上使用するプログラム。どちらか はもらってくる値によって計算を変化させるプログラム。two_methods.rb ・ファイル名( two_methods.rb ) ・考えた設定 コンビニで「1本30円のうまい棒」と「1個100円のアイス」を購入する。そのと きの合計金額を出すことができるプログラムを作成する。 うまい棒は10本以上購入すると、元の30円の値段から割引きされて25円で購入 できる。 30円から25円に変更されるようにプログラムを作成する。 ・参考 講義で学んだ「ほたるの数と米の収穫量」のプログラムを参考にしてプログラム を作成した。 <プログラム> #!/usr/koeki/bin/ruby #coding: euc-jp def umaibou(u) # uを使用するメソッド if u >= 10 # uが10以上の時 u * 25 # うまい棒の割引きの値段 else # uが10以下の時 u * 30 # うまい棒の元の値段 end # ifの終わり end # defの終わり def aice(a) # aを使用するメソッド a * 100 # アイスの値段 end print("うまい棒とアイスの合計金額を計算します。\n") print("\n") print("うまい棒は10本以上購入した時点で1本の値段が30円から25円に割引きなります。 \n") STDERR.print("うまい棒は何本買いますか?\n") okashi = gets.to_i STDERR.print("アイスは何個買いますか?\n") aisu = gets.to_i sum = umaibou(okashi) + aice(aisu) printf("合計は %d 円です。ありがとうございました!\n", sum) <実行結果> ( うまい棒の本数が10本以上だった場合 ) 1) pan{c111033}% ./two_methods.rb [~/Ruby] うまい棒とアイスの合計金額を計算します。 うまい棒は10本以上購入した時点で1本の値段が30円から25円に割引きなります。 うまい棒は何本買いますか? 11 アイスは何個買いますか? 1 合計は 375 円です。ありがとうございました! 2) pan{c111033}% ./two_methods.rb [~/Ruby] うまい棒とアイスの合計金額を計算します。 うまい棒は10本以上購入した時点で1本の値段が30円から25円に割引きなります。 うまい棒は何本買いますか? 15 アイスは何個買いますか? 5 合計は 875 円です。ありがとうございました! ( うまい棒の本数が10本以下の場合 ) 1) pan{c111033}% ./two_methods.rb [~/Ruby] うまい棒とアイスの合計金額を計算します。 うまい棒は10本以上購入した時点で1本の値段が30円から25円に割引きなります。 うまい棒は何本買いますか? 8 アイスは何個買いますか? 1 合計は 340 円です。ありがとうございました! 2) pan{c111033}% ./two_methods.rb [~/Ruby] うまい棒とアイスの合計金額を計算します。 うまい棒は10本以上購入した時点で1本の値段が30円から25円に割引きなります。 うまい棒は何本買いますか? 6 アイスは何個買いますか? 5 合計は 680 円です。ありがとうございました! ・考察 本当に計算が正しいのか、確かめ計算をした。 (うまい棒が10本以上の場合) 1) pan{c111033}% bc -l [~/Ruby] 25 * 11 + 100 *1 375 quit うまい棒の値段が25円(割引き)されているし、計算の答えが同じになったので正 しくプログラムが動いていると言える。 2)も同じように確かめ計算をしてみる。 2) pan{c111033}% bc -l [~/Ruby] 25 * 15 + 100 *5 875 quit 同じ答えになったので正しい計算ができたと言える。 (うまい棒が10本以下の場合) 1) pan{c111033}% bc -l [~/Ruby] 30 * 8 + 100 * 1 340 quit うまい棒の元の値段が30円なので、30を入れて計算してみると、答えが同じだっ たので正しい計算ができたと言える。また、10本以下なので、割引きされていな いことも同時に確認することができる。 2)も同じように確かめ計算をしてみる。 2) pan{c111033}% bc -l [~/Ruby] 30 * 6 + 100 *5 680 quit 同じ答えになったので正しい計算ができたと言える。 ---------------------------------------------------------------- ---------------------------------------------------------------- 3.感想 ・機械的な操作を繰り返すもの 自動販売機や、店に入るとお客さんに合わせてチャイムがなる、あとはレジだっ たり、ネジを回すと動くおもちゃがあげられると思う。 ・感想 今回の課題も自分で納得しながら取り組むことができた。筆記問題では、今まで レポートでまとめたことを参考にしながら解くことができた。進数の問題のなか でも今回のパターンの進数計算は割りと難易度が高かった気がする。プログラム 問題のAの問題では、講義で学んだことを参考に作成できた。分からない部分は 西村先生のページと広瀬先生のページを見ながら解いた。Bの問題では、自分で 新しく考えた設定で作成した。この内容の講義のなかで学んだことだったので、 個人的にはスムーズに取り組むことができた。 自分なりに少しずつ理解しながらレポートに取りかかれているので、この調子で これからも頑張りたい! ---------------------------------------------------------------- ---------------------------------------------------------------- 4.参考文献 ・2011年版 第5回 何でも呼び出そう レポート課題 http://roy/~madoka/2011/r2/05/rpt/c110106.txt 先輩のレポート ・第3回 繰り返し処理 http://roy/~yuuji/2012/pf2/03/index.html 広瀬先生 ・基礎プログラミング II 第 5 回 (何度も呼び出そう) 「脱メタボリック計画」 http://roy/~madoka/2012/r2/05/r2_05_01_theme_01_diet.html 西村 まどか先生 ・基礎プログラミング II 第 5 回 (何度も呼び出そう) 「体力があがったら」 http://roy/~madoka/2012/r2/05/r2_05_02_theme_02_deccelate.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_04_appendix_01_firefly.html 西村 まどか先生 ----------------------------------------------------------------- ----------------------------------------------------------------- 5.共同学生者 高橋 希美