1月30日の業務報告

こんばんは,M1澤木です。
寒さに耐えられず,炬燵もあるというのに暖房を日常的に入れるようになってしまいました。
さて,今日あった質問は以下の通りです。
======================================
<プログラミング演習II>
Q1. レポート課題の最後の出力する段階で、合計金額を出そうとするとエラーが出る
A1. 文字列と数値を足そうとした際に起きるエラーだと説明しました。コードを見てみたところ、価格を配列に格納して行く際に、日本円への変換の計算が要らなかった場合に文字列のまま格納してしまっていたためにエラーが出ていました。
Q2. ソートをしても実行結果がソートされたものにならない
A2. ハッシュの中身をソートするタイミングがおかしかったのが原因でした。また教科書に載っているソートをしている例をそのまま使っていたが意味はよくわかっていなかったようなので、解説しました。
Q3. 6-11で実行すると正しく結果が出るが、プログラムの作り方が合ってるかわからない(1行読み取って、それをsplitで分割して配列にし、その配列を別に用意した配列に格納していってそれを返す、というやり方でいいのか)
A3. テキストを見たところ、説明がわかりにくかったがおそらくその解釈で大丈夫だろうと返答しました。
Q4. (レポートに関して)、日本円の合計の求め方が分からない。どうしたらよいか。
A4. while内で1行読み込む毎に、価格を日本円に変換しているのでそれを用いて合計を求めることができないか考えてもらいました。教科書p93を参照してもらい、合計を求めるにはどのようなプログラムを書いたらよいか質問者に尋ねたところ、正しいプログラムを思いついてくれました。
Q5. (レポートに関して)、米ドルの合計価格を小数2桁で表示するのに、.roundメソッドを用いたがエラーがでてしまった。
A5. 教科書p503でエラーメッセージの意味を理解してもらい、roundメソッドがprintメソッドの中で用いることができないのかもしれないとアドバイスしました。その後、roundメソッドを用いた値は別の変数に代入すれば表示できるかもしれないことと、printメソッドの中で出力形式を指定するには、sprintfメソッドがあることを説明しました。
Q6. (レポート課題について)ハッシュの中身をタイトルでソートして表示したいが,ソートしてもきちんとソートされず,また,繰り返し文の外で表示を行おうとすると,最後の行の中身しか表示されない。
A6. ソートについては,同様のプログラムを書いてその場で試してみたところ,Hash#sort_byを使うことで解決できそうでした。
 表示の問題については,元々の表示の際のプログラムが,while文の中でのみ有効な変数(繰り返す毎に値を入れ替えてしまうような変数)を利用していたので,そのせいと思われます。while文の外での表示方法に困っていたようだったので,二重ハッシュを調べてみては,と提案しました。
Q7. (レポート課題について)新しいチェックデジットを付け足すのがうまくいかない。concatがうまく動かない。
A7. concatを使うときに変数のままで繋げようとしていたので式展開してみたのですが,別のところでエラーが出ました。本人には,問題の部分のコードのみのプログラムで試して,それでもだめだったら別の部分が絡んでいるのでは,と話しました。
Q8. (レポート課題について)小数点以下2桁,というのは四捨五入していいのか。表示が指定のフォーマット通りにならない。
A8. 小数点以下2桁に関しては特に指定が書かれていなかったので,それでいいのでは,と答えました。
 表示に関しては,ISBNより後の要素をすべてwhile文の中でのみ出力していたので,while文の外でも出力できるよう,変数に値を保存していくときに,二重ハッシュを利用する等の工夫をしては,と提案しました。
回答者:Q1~Q3 北原,Q4~Q5 栗山,Q6~Q8 澤木
======================================
必修科目である「プログラミング演習II」の課題提出締め切りが1週間後に迫っており,その関係の質問が多くなっていました。再履修もできますが,2学期にやった内容が頭に残っている今年のうちに単位を取得できればその方がいいと思います。
がんばってください。
(文責:澤木)