http://www.sw.it.aoyama.ac.jp/2010/PB2/lecture8.html
© 2006-10 Martin J. Dürst 青山学院大学
提出: 11月19日 (金曜日) 22:00 までに Moodle に
mountain.rb
として投稿
最初の行が '*'
一文字、次の行が '*'
二文字などで30行の山を出力するプログラムを作成しなさい。
範囲、Array#collect
などを活用しなさい。全体を用意した後に、一個の
puts
で出力しなさい。while
は禁止。
正解例: 都合により削除
提出: 11月19日 (金曜日) 22:00 までに Moodle に
pattern.rb
として投稿
演習 2 よりもっと面白い模様を作りなさい。
プログラムの先頭にコメントで仕組を説明しなさい。
「Start Command Prompt with Ruby」のウィンドーバーの右クリックのプロパティでフォントをできるだけ小さく、レイアウトでウィンドウの幅や高さをできるだけ大きくした方が面白い模様が作れる。
二人以上の学生から同様の模様を作るプログラムが提出されているときに減点の対象となる。
一般的な形:
def 関数名 (引数) 処理 end
応用例:
def bmi (weight_kg, height_cm) weight_kg / (height_cm/100.0)**2 end
def
で定義def
と end
が対、その間の行は字下げ一般的な形:
関数名(引数)
応用例:
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
(assignment)
一般的な形:
変数名 = 式
式の結果 (値) は変数に記録され、再利用可能
応用例:
area = height * width
(variable)
..., width,... = line.split(', ') width = width.to_i
しかし、再代入の代わりに変数名を分けた方がいい
(scope)
a
と関数外の変数
a
は同名でも完全に別物a
と別の関数内の変数
a
は同名でも完全に別物提出: 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 のチェスボードを作成、画面にするプログラムを作りなさい。
(提出不要)
以前作った模様、知り合いなどが作った模様、これから作りたい模様が簡単で便利に作れる関数をいくつか考えなさい