http://www.sw.it.aoyama.ac.jp/2011/PB2/lecture8.html
© 2006-11 Martin J. Dürst 青山学院大学
提出: 11月18日 (金曜日) 22:00 までに Moodle に
mountain.rb
として投稿
最初の行が '*'
一文字、次の行が '*'
二文字などで30行の山を出力するプログラムを作成しなさい。
範囲、Array#collect
などを活用しなさい。全体を用意した後に、一個の
puts
で出力しなさい。while
は禁止。
正解例: mountain.rb
提出: 11月18日 (金曜日) 22:00 までに Moodle に
pattern.rb
として投稿
演習 2 よりもっと面白い模様を作りなさい。
プログラムの先頭にコメントで仕組を説明しなさい。
「Start Command Prompt with Ruby」のウィンドーバーの右クリックのプロパティでフォントをできるだけ小さく、レイアウトでウィンドウの幅や高さをできるだけ大きくした方が面白い模様が作れる。
二人以上の学生から同様の模様を作るプログラムが提出されているときに減点の対象となる。
正解例: pattern.rb
, circle.rb
一般的な形:
def 関数名 (引数) 処理 end
応用例:
def bmi (weight_kg, height_cm) weight_kg / (height_cm/100.0)**2 end
def
で定義def
と end
が対、その間の行は字下げ一般的な形:
関数名(引数)
応用例:
my_bmi = bmi(50, 160)
注意: (
の前はスペース無し
一部は括弧なしでも可能:
my_bmi = bmi 50, 160
を区別
bmi(50, 160)
)bmi(weight, height)
)bmi(50, height_m*100)
)def bmi (weight_kg, height) if height > 20 # height in cm weight_kg / (height/100.0)**2 else # height in m weight_kg / height**2 end end
(scope)
a
と関数外の変数
a
は同名でも完全に別物a
と別の関数内の変数
a
は同名でも完全に別物提出: 11月25日 (金曜日) 22:00 までに Moodle に
famous_def.rb
のファイルとして投稿
以前に famous_sort.rb として作ったプログラム (正解例でも可) で、BMI の計算の関数を追加し、この関数を利用しなさい。
提出: 11月25日 (金曜日) 22:00 までに Moodle に
chess_board.rb
のファイルとして投稿
次の模様を簡単に作れる関数を作りなさい (模様の各行は文字列で、模様全体は行を配列):
uniform(文字, 高さ,
幅)
:
高さ、幅の大きさの文字の長方形の模様empty(高さ, 幅)
:
高さ、幅の大きさの空 (スペースだけ) の模様glue_horizontal(左の模様,
右の模様)
:
二つの模様を左右につなぎ合わせた模様 (ヒント:
zip
, collect
)glue_vertical(上の模様,
下の模様)
:
二つの模様を上下につなぎ合わせた模様double_horizontal(模様)
:
同様の模様を左右に二つつなぎ合わせた模様double_vertical(模様)
:
同様の模様を上下に二つつなぎ合わせた模様この関数を使って、一マスが高さ5、幅8 のチェスボードを作成、画面に出力するプログラムを作りなさい。
ヒント:
empty
を uniform
を使って定義)(提出不要)
以前作った模様、知り合いなどが作った模様、これから作りたい模様が簡単で便利に作れる関数をいくつか考えなさい
30分程度のミニテスト
内容: 今まで授業で習ったこと (資料、書込み、演習など)
準備にお勧め: irb
で各演算子、メソッドなどを試し尽くす