Ruby体験記7 〜エンコーディング指定、配列、再帰関数、

どうも。三十路です。

本日もこの本で勉強。

プログラミング学習シリーズ Ruby 1 はじめてのプログラミング

プログラミング学習シリーズ Ruby 1 はじめてのプログラミング

エンコーディングの指定

プログラムで使用する文字のエンコーディングWindowsで日本語を扱うにはcp932を指定。
コメント形式であるがエンコーディング指定という特別な意味があるのでマジックコメントと呼ぶ。
規約としてマジックコメントとプログラムの間には空行を入れる。

# encoding: エンコーディング名

puts "test"

配列

複数のデータをまとめるために利用するデータ。

array = ["あ", "い", "う", "え", "お"]
puts array[0]
array[0] = "ぴ" #内容を上書き
puts array[0]

<<演算子
配列へ要素を追加する。追加は最後に追加される。

fib = [0,1]
last = 1
while last < 100
fib << last
last = fib[-2] + fib[-1]
end
puts "fibonacci: #{fib}"
小問題
total = 0
arr = []
for i in 0..9
  arr <<  rand(10) + 1
  total += arr[i]
end
puts "配列#{arr} 平均#{total/10}"

再帰関数

自分の中で自分を呼び出す。

再帰で配列の長さを取得する関数。
def array_length(array)
if array == []
0
else
1 + array_length(array[1..-1])
end
end

小問題3

飛ばす・・・。

複数の値を返す関数

配列を利用して複数の値を返す関数を定義できる。またreturnで複数の値を返すよう方法もある(内部的には配列を利用)
なおこのように複数の値を返す関数を多値関数という。

def 関数名
[戻り値1,戻り値2]
end
a, b = 関数名
aには戻り値1
bには戻り値2

小問題4
array = []
even = []
odd = []
for i in 0..9
  array << rand(10) + 1
  if array[i] % 2 == 0
    even << array[i]
  else
    odd << array[i]
  end
end
puts "元の配列:#{array}"
puts "偶数配列:#{even}"
puts "奇数配列:#{odd}"

そんな日。