12/20の業務報告

こんばんは、B2の栗山です。
つくばセンター周辺のイルミネーションがとても綺麗ですね!
駅前はクリスマスムードで、まるで冬休みを迎えたような気分になりました。
さて、本日は質問がありませんでした。
プログラミング演習IIはコツコツ復習をしましょう!
正規表現は教科書を熟読することをオススメします。
(文責:栗山)

12/19の業務報告

こんにちは,図書館情報メディア研究科の安永です.
12/19の質問と回答です.
=================================================================================
<プログラミング演習II>
Q1.(演習3-9)
“(”とその両隣のスペースを正規表現でマッチできない
A1./^\s\(/という正規表現を使っていました。その正規表現は何を意味しているかを説明してもらったところ、”^”の意味が曖昧だったようなのでテキストを見て確認してもらいました。
Q2.(演習3-9)
実行してみると指定の記号の隣のスペース記号が取れていないものがいくつか出る
A2.まず記号と周りのスペースをマッチさせる際に+を用いていたために片方しかスペースがない時にはマッチしないようになっていました。カンマに関しては、カンマも括弧と同じようなメタ記号であることに気付いていないためでしたので、そこを指摘しました。
Q3.(演習3-9)
記号の周りのスペースを取ろうとすると取れているものと取れていないものが出てしまう
A3.読み込んだ文字列に対してgsubを一つずつ適用していく部分で、gsubを行う文字列の指定が間違っていたのが原因でした。gsubを適用して行く部分を確認してもらって気付いてもらいました。
Q4. (演習3-9)
記号等の前後にある空白が削除される部分とされない部分がある。何が間違っているのでしょうか。
A4.実行結果で空白が削除されていない箇所と正規表現を照らし合わせて、正規表現が正しくないことを説明しました。その後、記号の前後に空白がある場合は何通りあるか考えてもらい、それに対応する正規表現を記述すればよいとアドバイスしました。
Q5.(演習3-8)
プログラムを書いてみたが、現時点で合っているか。プログラムの作り方がわからない。
A5.2つ以上の空白を1つの空白に置換するプログラムで、正規表現を/\s+/としていました。これでは「1つ以上の空白」になっているので「2つ以上の空白」にする必要があることを指摘しました。(1)(2)の要件を満たす正規表現も分からなかったようなので、教科書を使って一緒に考えました。プログラムの全体的な流れ、作り方はWebの第3回説明スライドを参照するように言いました。
Q6.(演習3-8)
エラーが出ました
A6.エラーが出ているのが何行目が尋ねました。次に,その行で何をしたいのか尋ねると,「空白とタブを取ること」だと返ってきました。次に,その行で何をしているか,本を見ながら説明してもらいました。そこで,空白やタブ記号を意味するのは「バックスラッシュs」であり,「スラッシュs」ではない,ということに気づいてもらいました。
Q7.(演習3-8)
でこの実行結果でいいのでしょうか
A7.どう思うか尋ねると,「実行結果例と違うので良くないと思う」と返ってきたので,どこが違うか尋ねました。実行結果例と違い,改行されていなかったのですが,これは質問者同士(2人)で話して解決しました。
Q8.(演習3-8)
期待通りの実行結果が出力されないが,プログラムのどこが間違っているのか分からない
A8.どのような場合に期待通りの動きをしていないのかを尋ね,入力が空行の時であると気づいてもらいました。同時に,プログラムを勘違いして書いていたことに本人が気づき,そちらが原因だと思うので,書き直します,と言って質問は終わりました。
Q9.(演習3-8)
次のようなエラーが出ます undefined local method `io’
A9.本を参考にして書いたとのことだったので,その部分を見せてもらいました。ioはファイルクラスのメソッドであること,今回の演習はファイルではなく,リダイレクトで入力を読み込むことを確認しました。その上で,過去にリダイレクトで入力を読み込んだプログラムを参考に書き直してもらいました。
(回答:Q1-3北山 Q4-5栗原 Q6-8安永)
=================================================================================
プログラムを書く時には,一気に完成形を目指さずに,問題を分割してその1つ1つを解く,という気持ちで取り組むとよいですね。例えば演習3-8や9のような問題だったら,「リダイレクトでファイルを読み込む」「文字列に対してメソッドを呼び出す」「メソッドの返り値を表示する」「メソッドの内容が要件を満たすようにする」「リダイレクトでファイルを読み込んで,1行ずつ文字列に格納する」と分けて作業すると分かりやすいかもしれません。
(文責:安永)

12/16の業務報告

こんばんは、B2の森川です。
今年も残すところあと半月を切りました。
冬休みが待ち遠しいですね。
本日は質問がありませんでした。
プログラミング演習はこれから少しずつ高度な内容を扱っていきます。
予習・復習をしっかり行っておくと安心ですよ。
(文責:森川)

12/15の業務報告

こんにちは,図書館情報メディア研究科の安永です。
本日の質問と回答です。
============================================================
Q.<プログラミング演習II>
wrong number of arguments (3 for 2) とエラーが出たが、どうすれば解決できるか。
A.(数字 for 数字)の左の数字はメソッドを実行するときに指定した引数の数、右の数字はメソッドを定義したときに指定した引数の数です。この場合は、定義しているのは2つまででしたが、実際には3つ引数を指定して実行しようとしているためエラーが起きていました。
回答:鈴木
============================================================
よく起こるエラーは,メモしておいて,すぐにどういう意味だったか調べられるようにしておくといいですね!
(文責:安永)

12/14の業務報告

こんばんは、B2の森川です。
今日の深夜から明日の未明にかけて、ふたご座流星群がピークを迎えるそうです。
せっかくなので、暖かい格好をして夜空を見上げてみるのもいいかもしれませんね。
さて、本日の質問と回答です。
=================================================================
Q1. (演習2-7に関して、) メソッドで呼び出しても、配列とハッシュの中身が表示されない。
A1. 入力された値を配列とハッシュに格納していないので、メソッドで呼び出しても中身は何も表示されないと説明しました。その後、教科者を参考にして、配列とハッシュへの追加方法を考えてもらいました。
Q2. (演習3-5に関して)、郵便番号のマッチが上手くいかない。
A2. 検索パターンの範囲指定を /^[1-9]-/ にしていました。この場合、1-, 2-, 3-, …etcが一致する文字列すべてがマッチングされてしまう。「最初の数字は0以外」という指定にはなっていない。 また[ ] はある1文字に対して範囲の指定をしているので、3桁ないし4桁の数字の範囲指定ができているわけではない。一文字ずつ対応する範囲を指定する必要がある。
Q3. (演習2-7に関して)、実行結果に”nil”が表示されるのだが、原因が分からない。
A3. 原因は特定できませんでした。しかし、気になることが三点あったのでそれらを指摘しました。①printメソッドの中で、.eachメソッドを用いていること。printメソッドの中でさらにprintメソッドを使っているので上手く処理されないのではないでしょうか。②配列への格納。array[i]=word としていました(変数i は繰り返し回数、変数wordは入力された値)。繰り返し回数は、i=1と初めに定義されていたのでこのままでは配列0番目の要素がnilになってしまう。テキストの「配列の末尾に追加する」という指示通りにはなっていない。③メソッドの呼び出し方。第1引数をキーボードで入力された値にしていた。
Q4. (演習3-7に関して,) 正規表現で「ハイフンがあってもなくてもよい」という条件を満たすには、どうすればいいか。
A4. 教科書の正規表現のところをもう一度確認するよう伝えたところ,質問者の方が答えに気付いてくれました。
Q5. (演習2-7に関して、) 配列の実行結果がうまく表示されないのはなぜか。
A5. eachメソッドの部分に原因があったので、質問者の方と一緒に教科書を用いて、eachメソッドの使い方について確認しました。
(回答 Q1~Q3:栗山, Q4・Q5:森川)
=================================================================
毎週水曜日は就活カフェも行っています。
興味のある方は是非ご利用ください。
(文責:森川)