第4回 基礎プログラミング I レポート課題 氏名:XXXXXXXX 学籍番号:C1090XXX 語学クラス:中国語 コース(系):地域共創コース 1、筆記問題 A.0b10111=(1*2^4)+(0*2^3)+(1*2^2)+(1*2^1)+(1*2^0) =16+0+4+2+1 =23 0b10111=0d23 0d23 23/16=1…7 1/16=0…1 0d23=0x17 B. 森の中に入り、右、真ん中、左、後の選択肢のある場所に立ったところ、 「右に行くとお菓子の家につく。真ん中の道を行くと迷って帰れなくなる。 左の道に行くと熊と出会ってしまう。後の道は家に帰れる道である。 道を選択しなかった場合は魔女に食べられる。」 という結果になる。これをプログラムにする。 プログラム風に書き直すと A = "選択" B = "場所" if A == 右 右に行くとお菓子の家につく elsif A == 真ん中 迷って帰れなくなる elsif A == 左 熊と出会う elsif A == 後 家に帰れる else 魔女に食べられる end 2、プログラム問題 A.プログラム(while_bookkeeper.rb) ・プログラム本体 #!/usr/koeki/bin/ruby zandaka = 100000 # 最初にある金額 STDERR.print("現在の金額は100000円です。\n") # 現在の金額の表示 STDERR.print("入金と出金を選んでください。(入金ならa, 出金ならb)") # 入金と出金の選択 sentaku = gets.chomp # 入力させる if sentaku == "a" # 入金を選んだ場合 STDERR.print("入金はいくら?: ") # 入金額の入力 nyukin = gets.to_i # 整数で入力させる printf("%d円\n", zandaka + nyukin) #最初にある金額に入金額を足す elsif sentaku == "b" # 出金を選んだ場合 STDERR.print("出金はいくら?: ") # 出金額の入力 syukkin = gets.to_i # 整数で入力させる if syukkin > 100000 # もし100000円以上引きおろした場合(100000円以上は引きおろせない) print("100000円以上は出金できません。\n") # 100000円以上は引きおろせないことの表示 else # なんでもない場合 printf("%d円\n", zandaka - syukkin) #最初にある金額から出金額を引く end # 場合分けの終了 end # 場合分けの終了 ・実行結果 pan{c109001}% ./while_bookkeeper.rb [~/Ruby] 現在の金額は100000円です。 入金と出金を選んでください。(入金ならa, 出金ならb)a 入金はいくら?: 1000 101000円 pan{c109001}% ./while_bookkeeper.rb [~/Ruby] 現在の金額は100000円です。 入金と出金を選んでください。(入金ならa, 出金ならb)b 出金はいくら?: 1000 99000円 pan{c109001}% ./while_bookkeeper.rb [~/Ruby] 現在の金額は100000円です。 入金と出金を選んでください。(入金ならa, 出金ならb)b 出金はいくら?: 100000 0円 ・考察 計算を行ったが、正しく計算されているか分からない。 そこで、bc -lで確かめ算を行った。 pan{c109001}% bc -l [~/Ruby] 100000 + 1000 101000 quit pan{c109001}% bc -l [~/Ruby] 100000 - 1000 99000 quit pan{c109001}% bc -l [~/Ruby] 100000 - 100000 0 quit 実行結果と確かめ算により、きちんと表示され、計算も正しく行われていること が分かった。よって、このプログラムは正確に機能したといえる。 3、感想 考えてみたら理解できたことは、以下のプログラムである。 if syukkin > 100000 # もし100000円以上引きおろした場合(100000円以上は引きおろせない) print("100000円以上は出金できません。\n") # 100000円以上は引きおろせないことの表示 else # なんでもない場合 printf("%d円\n", zandaka - syukkin) #最初にある金額から出金額を引く end # 場合分けの終了 上記のプログラムは、もし100000円以上引きおろした場合、100000円以上は引き おろせないことを表したものである。ここで重要なことは、比較演算子を間違え ると結果がまったく違うようになってしまうことだ。 授業の回をますごとに、授業内容やレポートも難しくなっているが、面白くもなっ ていると感じた。ifを使うことによって「もしもそうならば」という関数が使え ることがわかった。また、私が一番おもしろいと思ったのは、elseを用いること で、なんでもない場合を求めることができることだ。if関数を使用するときは、 プログラムを組立て、目標を決めること、サイドストーリーを決めることが大事 であると学んだ。次回も難しいと思うが、がんばりたい。 4、参考文献 webサイト 基礎プログラミング I 第4回 プログラミングの方法 「もしもそうならば」 http://roy.e.koeki-u.ac.jp/~madoka/2010/r1/04/04_03_theme_01_branch.html 「16 進数のまとめ」 http://roy.e.koeki-u.ac.jp/~madoka/2010/r1/04/04_13_appendix_03_hexdecimal.html 著者:西村まどか ----------------------------------------------------------------------------- 共同学習者:大島 藍 久保田 瑛一郎 協力してくれた先輩:工藤 智也さん 5、プログラム(while_bookeeper.rb)を添付。