http://www.sw.it.aoyama.ac.jp/2010/PB2/lecture9.html
© 2006-10 Martin J. Dürst 青山学院大学
提出: 11月26日 (金曜日) 22:00 までに Moodle に
famous_def.rb
のファイルとして投稿
以前に famous_sort.rb として作ったプログラム (正解例でも可) で、BMI の計算の関数を追加し、この関数を利用しなさい。
正解例: 都合により削除
提出: 11月26日 (金曜日) 22:00 までに Moodle に
chess_board.rb
のファイルとして投稿
次の模様を簡単に作れる関数を作りなさい (模様の各行は文字列で、模様全体は行を配列):
uniform(文字, 高さ,
幅)
:
高さ、幅の大きさの文字の長方形の模様empty(高さ, 幅)
:
高さ、幅の大きさの空 (スペースだけ) の模様glue_horizontal(左の模様,
右の模様)
:
二つの模様を左右につなぎ合わせた模様glue_vertical(上の模様,
下の模様)
:
二つの模様を上下につなぎ合わせた模様double_horizontal(模様)
:
同様の模様を左右に二つつなぎ合わせた模様double_vertical(模様)
:
同様の模様を上下に二つつなぎ合わせた模様この関数を使って、一マスが高さ5、幅8 のチェスボードを作成、画面に出力するプログラムを作りなさい。
正解例: 都合により削除
(提出不要)
以前作った模様、知り合いなどが作った模様、これから作りたい模様が簡単で便利に作れる関数をいくつか考えなさい
(class)
Array
, String
,...require
が必要)
に更に多くのクラスが用意(instance)
[1, 2, 3]
はクラス Array
のインスタンス'Hello!'
はクラス String
のインスタンス.class
で求めるputs 3.class.name
Fixnum
(fixed-length number、固定長数)puts Fixnum.class.name
Class
class クラス名 定義の詳細 end
new_instance = クラス名.new
.new
メソッドは従来のクラスにも使用可能s = String.new
(空の文字列)class Person end p = Person.new puts p
⇒ #<Person:0x2a1ac10>
(0x2a1ac10
はその都度違う16進数の番号)
puts p.class.name
⇒ Person
(instance variable)
@
で始まる@name
, @height
, @weight
(initialization)
initialize
メソッドで実行initialize
メソッドは Ruby が自動的に
.new
から呼ぶclass Person def initialize (name, height, weight) @name = name @height = height @weight = weight end end p = Person.new('青山 花子', 160, 50) puts p
⇒ #<Person:0x2b67418 @name="青山 花子", @height=160,
@weight=50>
def weight @weight end
def weight= (weight) @weight = weight end
p.weight= 30
puts p.weight
⇒ 30
12月 3日 (金曜日) 22:00 までに Moodle に classes.rb
のファイル名で投稿
今まで使ったできるだけ多くのクラスの名前を出力するプラグラムを作りなさい。
数では整数と実数、整数の場合に更に小さいものととても大きいものを使ってみなさい。
整数の二種類のクラスの「境界線」の一番近い数を使いなさい。
(例えば irb
で試しながら境界線に近づくように試してみてください。)
12月 3日 (金曜日) 22:00 までに Moodle に
famous_class.rb
のファイル名で投稿
以前作った famous_def.rb
(正解例でも可能) に
Person
クラスを追加しなさい。
ヒント:
Person
の配列として保管input_data_array
→ famous_people
)Person
の初期化は一行の入力からやった方がいいdef initialize (line)
)30分程度のミニテスト
内容: 今まで授業で習ったこと (資料、書込み、演習など)
準備にお勧め: irb
で各演算子、メソッドなどを試し尽くす