11/15の業務報告

こんばんは、B2の栗山です。
更新が遅くなってしまい、すみません。
今日もプログラミング演習の質問がたくさんありました。
それでは、本日の質問と回答です。
========================================
Q1. 授業中に受けた比較の仕方の解説がよくわからない
A1. 変数miseが示しているのは繰り返し回数だと思ったほうがわかりやすいと思うのでそう解説し、その変数miseの役割を説明しました。
Q2. 平均を求めるメソッドの作り方がよくわからない
A2. キャラ数の合計で割ればいいのでハッシュの大きさで割ればいいと説明しました。またメソッドの作り方がよくわかっておらず妙な作り方(def 引数(メソッド名))をしていたのでそこを指摘しました。
Q3. 平均を求めるメソッドの作り方がよくわからない
A3. each_valueについて教科書にあるものでは解説が少なくわかりづらいので間違った使い方をしていた。逆引きRubyを見ながら確認しました。
Q4. 最大値の求め方がわからない
A4. 最大値の求め方について、Q1-Q2の質問者は先生から解説を受けていたようなので受けていないかと聞いたら、自分のクラスでは受けていないと言っていました。なのでだいたいの求める方針を説明しました。また定義したメソッドの使い方がよくわかっていないようだったので、テキストを見せながら説明しました。
Q5. 対決が終わった後にエラーが出てしまう
A5. 対決をさせる繰り返しから抜ける条件の位置が二人目のキャラクター名の入力の後にあったので、nilを受け取ってしまってエラーが起きたと説明しました。
Q6. 2回目の対決の後の能力の変化の結果の計算がおかしい
A6. 変数名の付け方がどちらがどのキャラクターの能力なのか紛らわしい形になってしまっていたために間違えていたので、わかりやすい変数にしたほうがいいとアドバイスしました。
Q7. ハッシュへの登録方法がわからない
A7. ハッシュへの登録方法はテキストを参照してもらって確認するようにいいました。配列を値として登録する際は、まず配列を用意してからそこに各能力を格納していって、それを値としてハッシュに登録してやればいいと説明しました。
Q8. yuruyuru=Hash.new と書けばハッシュにファイルの内容が書き込まれると思っていたのだが違うのか。
A8. まず、「Hash.new」は,「変数『yuruyuru』のことはこれからハッシュとして扱ってくださいね!」と宣言しているだけの,空のハッシュを作り出すためのものです.なので,それだけではファイルの中身はハッシュには格納されません.リダイレクトでファイルの中身をハッシュに格納していく方法については,第5回のチェック項目で一度やっている筈なので,復習してみてください.「配列を中身とするハッシュ」については演習のwikiに簡単なQ&Aが載っているので,そちらもご確認ください.
Q9. エラーメッセージ「undefined local variable ~」の意味がわからない
A9. メソッドの定義の中で,計算に用いられていた変数が,「i = 0」のような宣言のないまま使われていたために出たエラーでした.また,メソッドの定義がプログラムの後半以降に書かれていたため,プログラムの頭に書くよう授業で指示された筈では,と指摘しました.
Q10. 演習5-11 の「fruits_table_price[fruits] = price」の意味がわからない。ハッシュの値に配列を格納するのがよくわからない。
A10. 演習5-2のすしネタの問題に同様の行があったので、そちらで意味(ハッシュ○○のキー××に対応する値は△△です)を確認してもらいました.配列を格納するのは,段階にわけて考えるといいと思います.
Q11.each文のところで「hash can’t be coerced into Fixnum~」のようなエラーが出た。
A11.ハッシュの値が配列になっていましたが,その値の特定の部分を取り出すときに「hash[key][“0″]」などと書くべきところを「hash[0]」と書いていたためにエラーが出たのでは,と思います.取り出すときの書き方についてはwikiに書いてあるので,きちんとwikiを読んでください.
Q12. 攻撃力が最大のキャラを求めるにはどうすればいいか
A12. 第7回のチェック項目(演習7-15)で似たようなことをやっていたと思うので,そのプログラムを確認してみてください.
Q13. ハッシュの作り方はこの記述でいいか
A13. コマンドプロンプト上で、ハッシュに格納されているかをまだ確認していなかったみたいなので、まずは試してみて、分からないところがあったら、また質問するように言いました。
Q14.攻撃力の平均を求めるメソッドの作り方が分からない。
A14.eachメソッドの使い方が分かっていなかったようなので、教科書で確認してもらいました。また、ハッシュに格納された配列の要素を1つずつ使う方法は、プログラミング演習のWebページに補足が載っているので、参照するように言いました。
Q15. 最大の攻撃力を表示したいが、”nil” と表示されてしまう。
A15. 攻撃力を計算して配列に格納する部分の記述に誤りがあったので、トレースして間違いに気づいてもらいました。
Q16. 言われたこと(Q14での回答)を参考に、each文を書き直したがエラーになる。
A16. まだ記述に誤りがあったので、プログラミング演習Webページの補足を参照して、本当に間違いがないかその場で確認してもらいました。
Q17. 攻撃力の平均を求めるメソッドの作り方が分からない。
A17. 平均を計算するための手順を訊いて、「ハッシュの値をとりだす→攻撃力を求める→攻撃力の合計を求める→…etc 」という感じで答えてもらい、今言った手順を1つずつ行ってみるように言いました。
Q18. 攻撃力の平均を求めるメソッドを作ったがエラーになる。
A18. キャラ名と能力を入力してハッシュに格納するプログラムが実行されていないことを指摘し、トレースしてハッシュには何も入っていない状態だと気づいてもらいました。
(回答者 Q1-Q7:北原、Q8-Q12:澤木、Q13-Q18:栗山)
========================================
プログラミング演習課題の提出期限まで、まだ十分に時間はあります。
焦らず少しずつプログラムを記述して、逐一確認するようにしてみてください。
(文責:栗山)