第4回 基礎プログラミング I レポート課題 氏名:XXXXXXXX 学籍番号:c109XXX 語学クラス:中国語1 コース(系):環境サイエンス 1、筆記問題 A、 0bは2進数、0xは16進数、0dは10進数をあらわしている。 <0b10111を0xで表す> 0bは2進数なので、16進数になおす。 2進数を16進数になおすには、10111を4桁ずつ区切り、0001と0111にする。 そしてそれぞれ10進数になおす。 0001 = 0*2の3乗 + 0*2の2乗 + 0*2の1乗 + 1*2の0乗 = 0 + 0 + 0 + 1 = 1 0111 = 0*2の3乗 + 1*2の2乗 + 1*2の1乗 + 1*2の0乗 = 0 + 4 + 2 + 1 = 7 よって、2進数 0b10111は、16進数0xの場合 0x17 となる。 <0b10111を0dで表す> 2進数を10進数になおさなければならないので、 1*2の4乗 + 0*2の3乗 + 1*2の2乗 + 1*2の1乗 + 1*2の0乗 = 16 + 0 + 4 + 2 + 1 =23 よって、2進数 0b10111は、10進数0dの場合 0d23 となる。 B、 晩ご飯の献立を考える時は、どれくらいお腹が空いているのかを考えて料理を作 るので、これをプログラムにした。 <晩ご飯に、あまりお腹が空いていないならツナサラダ。少しお腹が空いているなら ウドン。お腹がとても空いているならオムライスを作る。> A = "空腹" B = "献立" if A == 空腹でない then B ツナサラダ elsif A == 少し空腹 than B ウドン elsif A == 空腹 than B オムライス end 2、プログラム問題 a、 考えた設定 Aの問題を解きました。 b、 作成したプログラム #!/usr/koeki/bin/ruby money = 10000 # 現在の残高 ns = 0 # 入金出金 while true STDERR.print("入金ならばn,出金ならばs,終了させるにはqを入力する") ns = gets.chomp # 文字列を変数 ns に代入する if ns == "n" # もし ns が n に等しければ STDERR.print("入金額は?") ns = gets.chomp money += ns.to_i # 変数 money の値に変数 ns に入力された文字列を整数にして # 加算する elsif ns == "s" # ns は s に等しければ STDERR.print("出金額は?") ns = gets.chomp money -= ns.to_i # 変数 money の値に変数 ns に入力された文字列を整数にして # 減算する elsif ns == "q" # ns は q に等しければ break # 繰り返しから抜ける else end printf("現在の残高は %d円\n",money) end c、 もとにしたプログラム 万歩計のプログラム while_add.rb と曜日を当てるプログラム calendar.rb の2つを参考にし、それぞれのプログラムで使用した内容を組合わせました。 変更点 walk=0 を money=10000 total=0 を ns=0 walk=gets.chomp を ns=gets.chomp if walk=="q" を if ns == "n" walk=walk.to_i を money += ns.to_i if day == 0 を if ns == " " printf("%d 日は %s 曜日\n",day,wday) を printf("現在の残高は %d円\n",money) に変更しました。 d、 プログラム実行結果 pan{c109067}% ./while_bookkeeper.rb [~/Ruby] 入金ならばn,出金ならばs,終了させるにはqを入力するn 入金額は?100 現在の残高は 10100円 入金ならばn,出金ならばs,終了させるにはqを入力するs 出金額は?10000 現在の残高は 100円 入金ならばn,出金ならばs,終了させるにはqを入力するq e、 考察 pan{c109067}% bc -l [~/Ruby] 10000+100 10100 10100-10000 100 quit よって、計算した結果合っていました。 f、 参考文献 西村まどか 基礎プログラミング I 第3回 キーボードから入力して計算させるには 「カロリー計算プログラム」 http://roy/~madoka/2010/r1/03/03_10_theme_07_while_calory.html 基礎プログラミング I 第04 回 プログラミングの方法 曜日を調べるプログラム http://roy/~madoka/2009/r1/04/04-18-cal.html 西村組TA一同 プログラミング手引き P 4,プログラミングレポートの書き方 共同学習者 伊藤 彩 酒井 春香 久保田 瑛一郎 3、 感想 今回のプログラム問題 A では、どのプログラム参考にすればよいか、これまでに おこなったプログラムを見直しました。見直したところ、万歩計と曜日を当てる プログラムで使用した内容があることが分かり、自分で分かるところまでプログ ラムを作成し、そこから友達に教えてもらいながら、プログラムを作成することが できました。 授業ではプログラムを作成することに懸命になっていてしまったので、再度コマ ンドの意味を確認しながらプログラム作成に取り組め、とても良い復習になりま した。 分かったこと ・Tab キーで、リンク先を囲むことができ、Ctrl Returnで選択したページを開 くことができる。 ・Ctrl-T で新しくページを開き、Ctrl Tab キーで他のページにとぶことができる。 ・Shift Tabキーを押すと、Tab キーと逆回りでリンク先を選択をすることがで きる。 ・if を使用した後は elsif を使用し、最後は end を使用する。 ・elsif は if からつなげる役割がある。 ・== は右辺と左辺が等しいことを示している。 ・to_i は文字列を整数にする。 (to_f は文字列を小数、ti_s は文字列もしくは数値を文字列にする)