今週の課題の講評

間違えたところや分からなかったところをきちんと書き記す学生が増えたので、 どこにつまずいているかが分かった。

ARGV 配列に入るデータの説明がきちんとなされている学生も多かった。 ただ、 入力エラーメッセージを何が抜けているかを説明しようとしたにも関わらず、 作ったプログラムの動作をきちんと調べずに送信している学生も多かった。 ARGV 配列の中身を使い終って、gets.chomp したいときには、 ARGV.shift を繰り返すか、ARGV に nil を代入する実行文を挟めばよい。

./プログラム.rb 入力文字1 入力文字2 入力文字3

というコマンドライン入力で入ったデータは、 空白で区切られた文字列を分解して printf しているだけである。 データ入力に不備があっても、総数や始めの ARGV[0] が空かどうかを調べさせ、 データが入力されていないという処理が可能だが、 個々のデータではできない。 姓名を入れ替えて入力した場合の結果などを調べてみるとよい。 またデータが飛ばし飛ばしで存在しないときの結果などを調べてみるとよい。

コマンドライン入力により任意の数を何度もかけて答えを得るためには、

2 つの数をかけて答えを得るプログラム
複数の数をかけて答えを得るプログラム
コマンドライン入力に変更したプログラム
何度も使う部分を def -- end で作り替えたプログラム(ものによっては)

の順に完成させるのがよいだろう。今回このプログラムを完成させた学生で、 きちんと解説や考察がなされていた学生 2 名は A++ とした。 これらの作品を参考に、またさらによいものを作ってほしい。

完全解答者がいたので、解答を掲載すべきか迷ったが、 例えばこの程度のプログラム (1 2) に解説をきちんと書けばよいわけである。 コマンドライン入力のないときのエラー表示や method を使ったものは、 学生のプログラムを参考にすること。

本日の講義目次 / 基礎プログラミング I / 2007 年度

Madoka Nishimura <madoka@e.koeki-u.ac.jp>