11/10の業務報告

こんばんは,図書館情報メディア研究科の安永です。
今週末こそ手袋を買います!
本日の質問と回答です。
================================================================================
(いずれもプログラミング演習I レポート課題2 について)
Q1.ハッシュにキャラクター名と図書館愛とインパクトとゆるさを入れて,図書館愛を表示しようとしたら,ゆるさが表示されてしまう。
A1.課題文を一緒に読み,配列をハッシュの値にする,という部分に気づきました。配列をどのように準備するか(1つのキャラクターにつき1つなのか3つなのか)?という問には,答えることができないので,授業担当の先生に直接聞いて下さい,と答えました。
Q2.エラー(`hoge’: wrong number of arguments (0 for 1) (ArgumentError))が出る原因が分からない。
A2.エラーが出る前の挙動が期待と違っていたので,まずそこから取り組みました。プログラムを上から読んでいくと,質問者が自分で間違いに気づきました。次に,エラーに関しては,変数には有効範囲があることを説明しました。それを元に,メソッド内での変数の使い方について考えてもらいました。
Q3.メソッドの引数が間違っているらしい。`hoge’: wrong number of arguments (0 for 1) (ArgumentError)というエラーが出る。
A3.エラーの意味は調べていたので,さらに詳しく解説しました。(数字 for 数字)の,左の数字は,メソッドを実行するときに指定した引数の数で,右の数字は,メソッドを定義したときに指定した引数の数です。この解説を踏まえた上で,エラーが出ている行を確認し,修正してもらいました。
Q4.タイプがおかしいらしい。in `+’: nil can’t be coerced into Fixnum (TypeError)というエラーが出る。
A4.まず,エラーの起こる背景を解説しました。rubyは,型の違うもの同士の演算を行おうとすると,型変換を行った上で演算を行います(例えば,3 + 4.0 と書くと,3 を 3.0 に変換した上で計算します)。今回のエラーは,nil と数値の足し算を行おうとして型変換を試みたけど,nilは数値に変換できません,というエラーです。この解説を踏まえた上で,何の値がnilなのか,どうしてnilなのか,を考えていきました。
Q5.どのキャラの攻撃力の平均も,最初に入力したキャラの攻撃力の平均になってしまう。それぞれのキャラの攻撃力の平均を出したいのだが,方法が思いつかない。
A5.現状は把握できていたので,どんな値をメソッドに投げれば期待する値が出るか考え,そのような値を指す変数がないか考えました。
回答者:安永
================================================================================
今週はカイロでしのいでいます。