第4回 基礎プログラミング I レポート課題 氏名:XXXXXXXX 学籍番号:c109XXX 語学クラス:英語1 コース:社会福祉 筆記問題 1 16進数に変換 1 0 1 1 1 0001 / 0111ーーー(1) 1 / 7ーーー(2) 説明 (1) 後から4桁に分ける、ただし前は1桁になってしまうため、0を前に3つつける ことで4桁にする。 (2)4けたごとに区切った数字を16進数に変換する よって、0x17となる。 2 10進数に変換 1 / 0 / 1 / 1 / 1ーー(1) 2の4乗 2の3乗 /2の2乗 /2の1乗/2の0乗ーーーー(2) 16+ 0 + 4+ 2+ 1ーーーー(3) 説明 (1) 1桁ずつに分けて考える (2) 一桁ずつ累乗の指数を一つずつ増やし、累乗の積を求める。 (3)(1)で分けた数字と、(2)で求めた積を掛け合わせる。そこで出てきた積を足 す。 よって0d23となる。 実証を得るため、私が第1回レポートに掲載した変換表を示す。 10進数 16進数対応表 10進 16進 2進 0 0 0 1 1 1 2 2 10 3 3 11 4 4 100 5 5 101 6 6 110 7 7 111 8 8 1000 9 9 1001 10 a 1010 11 b 1011 12 c 1100 13 d 1101 14 e 1110 15 f 1111 16 10 10000 17 11 10001 18 12 10010 19 13 10011 20 14 10100 21 15 10101 22 16 10110 23 17 10111 24 18 11000 25 19 11001 26 1a 11010 よってこの結果の根拠が示された。 2 ある株式トレーダーが、A社の株式を更に購入するか、自分の所有している株 式を売却するか迷っている。その心の内はこの様なものである。 「もし、株式の価格が4万以下なら購入し、4万以上になったら売却したい なぁー」というものであった。このこころのうちをプログラム風に書き直せば、 A =価格 B= 購入する C =売却する if A > 40000 then C else A< 40000 then B end となる。 プログラム問題 A 考えた設定 小遣い帳を作成するプログラムを作成した。 基本としたプログラムはwhile_average.rbであるが、STDERRの用法の確認のためであり、 すべて張りつけてから作成したわけではない。したがって参照程度である。 作成したプログラム #!/usr/koeki/bin/ruby # インタプリタ宣言文 syozikin = 10000 # 所持金は10000円から始める hendou = 0 # 入出金するときに使用 bunki= 0 # 入出金の質問の分岐に使用 print("お小遣い帳をつけます\n") while true # 条件無しに繰り返し STDERR.print("入金したい場合はinを、出金したい場合はoutと入力。終了したい場合にはqと入力:") # 質問表示 bunki = gets.chomp # 改行文字を取り除く if bunki =="in" # もしinと入力されたら STDERR.print("入金額を入力:") # 質問表示 hendou = gets.chomp # 改行文字を取り除く syozikin +=hendou.to_i # 入出金した金額を所持金に足す printf("残高は%d円です\n",syozikin) # 残高表示 elsif bunki == "out" # もしoutと入力されたら STDERR.print("出金額を入力:") # 質問表示 hendou = gets.chomp # 改行文字を取り除く syozikin -=hendou.to_i # 入出金した金額を所持金から引く printf("残高は%d円です\n",syozikin) # 残高表示 elsif bunki=="q" # もしqと入力されたら break # whileから抜ける else #それ以外の文字が入力されたら print("無効です\n") # 結果表示 end # whileの終了 end # ifの終了 実行結果 2パターン実行した パターン1 pan{c109058}% ./while_bookkeeper.rb [~/Ruby] お小遣い帳をつけます 入金したい場合はinを、出金したい場合はoutと入力。終了したい場合にはqと入力:in 入金額を入力:256 残高は10256円です 入金したい場合はinを、出金したい場合はoutと入力。終了したい場合にはqと入力:267 無効です 入金したい場合はinを、出金したい場合はoutと入力。終了したい場合にはqと入力:in 入金額を入力:267 残高は10523円です 入金したい場合はinを、出金したい場合はoutと入力。終了したい場合にはqと入力:in100 無効です 入金したい場合はinを、出金したい場合はoutと入力。終了したい場合にはqと入力:in 入金額を入力:10042 残高は20565円です 入金したい場合はinを、出金したい場合はoutと入力。終了したい場合にはqと入力:out 出金額を入力:450 残高は20115円です 入金したい場合はinを、出金したい場合はoutと入力。終了したい場合にはqと入力:out 出金額を入力:759 残高は19356円です 入金したい場合はinを、出金したい場合はoutと入力。終了したい場合にはqと入力:out 出金額を入力:908 残高は18448円です 入金したい場合はinを、出金したい場合はoutと入力。終了したい場合にはqと入力:q パターン2 お小遣い帳をつけます 入金したい場合はinを、出金したい場合はoutと入力。終了したい場合にはqと入力:in 入金額を入力:2200 残高は12200円です 入金したい場合はinを、出金したい場合はoutと入力。終了したい場合にはqと入力:out 出金額を入力:4858 残高は7342円です 入金したい場合はinを、出金したい場合はoutと入力。終了したい場合にはqと入力:out 出金額を入力:3438 残高は3904円です 入金したい場合はinを、出金したい場合はoutと入力。終了したい場合にはqと入力:in 入金額を入力:8583 残高は12487円です 入金したい場合はinを、出金したい場合はoutと入力。終了したい場合にはqと入力:out 出金額を入力:24435 残高は-11948円です 入金したい場合はinを、出金したい場合はoutと入力。終了したい場合にはqと入力:q 考察 作成したプログラムの正確性を確認するため、bc -lで試算を行った。 パターン1 pan{c109058}% bc -l [~/Ruby] 10000+256+267+10042-450-759-908 18448 quit パターン2 pan{c109058}% bc -l [~/Ruby] 10000+2200-4858-3438+8583-24435 -11948 quit 試算の結果により、プログラムが正確なことが証明された。 今回はお小遣い帳作成プログラムを企画した。したがって、金額不足で他者から 借り入れることも考えられるので、マイナスも表示されるように設定した。 マイナスになった瞬間から金利が発生し、計算するプログラムも出来るだろう。 感想 今回も楽しくプログラムを作成できた。A のプログラムではマイナスをそのま ま表示されるように設定したが、マイナスが発生した場合「借金はいくらです」 というプログラムも余力があれば作成してみたい。 参考文献 西村組TA一同 『プログラム手引き』 4頁 矢沢久雄 http://itpro.nikkeibp.co.jp/members/ITPro/ITBASIC/20020626/1/ ITpro【5分で覚えるIT基礎の基礎】ゼロから学ぶ2進数 第5回 共同学習者: 横山広樹 協力してくれた先輩:五代儀 公大 先輩/工藤 智也 先輩