ログイン
編集不可のページディスカッション情報添付ファイル
alstamber/2013FreshmanRubySeminar4Homework

MMA

注意

第5回Ruby講習会に参加を希望する人は、この課題をやって提出してください。
参加を希望しない人に関しては、課題をやっても良いですが、提出をする必要はありません。
この課題は6月7日(金)23時59分までに僕のMMAのメールアドレスに提出してください。

課題はそれぞれ指定されたファイル名でファイルに保存し、zip形式で圧縮して添付ファイルの形で提出してください。
zipファイルの名前は「(あなたのアカウント名).zip」とします。僕の場合なら「alstamber.zip」です。

課題を提出する際には、最低限動くかどうかを確認してから提出してください。
前回の課題で、そもそも動作しないプログラムを送ってきた人がいました。

必修課題は1, 2とします。わからない場合はメールで聞いて下さい。
わからないからといってやらずに出すのは良くないです。

前提

以下の問題は次のようなクラスを作って解答してください。

   1 class Student
   2     def initialize
   3         @id = 0
   4         @name = ""
   5         @dept = ""
   6         @sex = ""
   7     end
   8 
   9     attr_accessor :id, :name, :dept, :sex
  10 end

nameは"Yayoi Takatsuki"というふうに名前が最初で名字が後ろのローマ字で表現することにします。
deptは学科を表すもので、j,i,m,s,kのいずれかの文字列をとることにします。
sexは性別を表すもので、m(男性)かf(女性)のいずれかの文字列をとることにします。

1(必修)

この課題の解答は「1.rb」という名前のファイルで保存してください。

Studentクラスのインスタンスを1つ生成します。そのインスタンスに自分の学籍番号・氏名・学科・性別をセットしてください。
続いてそのセットした情報をゲッターを使って手に入れ、putsメソッドで出力するようなプログラムを書いてください。
出力は以下の形式で行なってください。

id : (学籍番号)
name : (氏名)
dept : (学科)
sex : (性別)

たとえば次のようになります。

id : 1011203
name  Yayoi Takatsuki
dept : i
sex : f

2(必修)

この課題の解答は「2.rb」という名前のファイルで保存してください。

学籍番号・氏名・学科・性別という4つの引数を受け取って、それらの情報をセットするStudentクラスのインスタンスメソッドset_infoを定義してください。
これを使うと次のようにプログラムを書けます。

   1 st = Student.new
   2 st.set_info(1011203, "Yayoi Takatsuki", "i", "f")  
   3 #学籍番号1011203, 名前Yayoi Takatsuki, 学科i, 性別fという情報が登録される

3(自由)

この課題の解答は「3.rb」という名前のファイルで保存してください。

セットされている学籍番号・氏名・学科・性別のデータを元に、問題1のような出力を行うStudentクラスのインスタンスメソッドprint_infoを定義してください。

4(自由)

この課題の解答は「4.txt」という名前のファイルで保存してください。

次のプログラムを見てください。

   1 st = Student.new
   2 st2 = Student.new
   3 
   4 st.id = 1011203
   5 st2.id = 1011203
   6 st.id = 1011204

このプログラムが最後の行まで実行された時、st2のインスタンス変数idの値はいくらになっていますか? またこのことからインスタンス変数というものについてどのような性質があると言えますか?

5(自由)

この課題の解答は「5.rb」という名前のファイルで保存してください。

a

キーボードから整数を入力させ、その入力された整数分の要素を持つStudentクラスのインスタンスの配列を作るプログラムを作ってください。

Hint : 指定された要素数の空の配列を作るにはArray.new(n)というふうにします。

b

Studentクラスのインスタンスの配列を引数として受け取って、配列のすべての要素に対してprint_infoメソッドを実行するメソッドprint_all_infoを定義してください。
(これはStudentクラスのインスタンスメソッドではなく、普通のメソッドです!)

alstamber/2013FreshmanRubySeminar4Homework (最終更新日時 2013-07-04 23:40:08 更新者 alstamber)