学生向けプログラミング入門

学生向けにプログラミングを解説。Java、C++、Ruby、PHP、データベース

Rubyプログラミング入門その21 構造体を利用するプログラム

<<前  [TOP]


メモ帳を開いて次のプログラムを作ってみましょう。


【structtest1.rb】

class Structtest1

	def printElephant( e )

		puts '名前:' + e.name.to_s + ',' + '年齢:' + e.age.to_s + ',' 

+ '体重:' + e.weight.to_s

	end
end

Elephant = Struct.new(:name, :age, :weight)

e1 = Elephant.new()
e1.name = '花子'
e1.age = 8
e1.weight = 5000

e2 =  Elephant.new()
e2.name = '太郎'
e2.age = 7
e2.weight = 6000

s = Structtest1.new()

s.printElephant( e1 )
s.printElephant( e2 )



Rubyで構造体を定義するには以下のように行います。

構造体名(先頭大文字) = Struct.new(:要素1, :要素2, :要素3)



今回は「Elephant」という名の構造体で「name」「age」「weight」の3つの要素を持っています。

Elephant = Struct.new(:name, :age, :weight)



要素に値を代入するにはまずインスタンスを作ります。

#  インスタンスを作成
e1 = Elephant.new()

#各要素に値を代入
e1.name = '花子'
e1.age = 8
e1.weight = 5000



出力結果です。
f:id:MrRadiology:20180123143515p:plain


メモ帳を開いて次のプログラムを作ってみましょう。


【structtest2.rb】

class Structtest2

	def printElephant( e )
		puts '名前:' + e.name.to_s + ',' + '年齢:' + e.age.to_s + ',' 

+ '体重:' + e.weight.to_s
	end

end

Elephant = Struct.new(:name, :age, :weight)
e = Array.new(3)

e[0] =Elephant.new()	
e[0].name = '花子'
e[0].age = 8
e[0].weight = 5000

e[1] = Elephant.new()
e[1].name = '太郎'
e[1].age = 7;
e[1].weight = 6000

e[2] = Elephant.new()
e[2].name = 'ゴン太'
e[2].age = 1
e[2].weight = 1000

s = Structtest2.new()

for i in 0..(e.length-1) do
	s.printElephant( e[i] )
end



この様に作成した構造体のインスタンスを配列に格納して利用することも出来ます。

Elephant = Struct.new(:name, :age, :weight)
e = Array.new(3)

e[0] =Elephant.new()	
e[0].name = '花子'
e[0].age = 8
e[0].weight = 5000



実行結果です。
f:id:MrRadiology:20180123151208p:plain


メモ帳を開いて次のプログラムを作ってみましょう。


【structtest3.rb】

class Structtest3

	def printElephantFamily( family )

		print '[父親]'
		printElephant( family.father )

		print '[母親]'
		printElephant( family.mother )

		for i in 0..(family.children.length-1) do
			print '[子供' + (i+1).to_s + ']'
			printElephant( family.children[i] )
		end
	end

	def printElephant( e )
		puts '名前:' + e.name.to_s + ',' + '年齢:' + e.age.to_s + ',' 

+ '体重:' + e.weight.to_s
	end
end

Elephantfamily=Struct.new(:father, :mother, :children)
Elephant = Struct.new(:name, :age, :weight)

ef =Elephantfamily.new()
ef.father = Elephant.new()

ef.father.name = '太郎'
ef.father.age = 7
ef.father.weight = 6000

ef.mother = Elephant.new()
ef.mother.name = '花子'
ef.mother.age = 8
ef.mother.weight = 5000

ef.children = Array.new(2)

ef.children[0] = Elephant.new()
ef.children[0].name = 'ゴン太'
ef.children[0].age = 1
ef.children[0].weight = 1000

ef.children[1] = Elephant.new()
ef.children[1].name = 'マリア'
ef.children[1].age = 0
ef.children[1].weight = 500

s=Structtest3.new()

s.printElephantFamily( ef )



構造体「Elephantfamily」と「Elephant」の2つを作り、2重のインスタンスを生成しています。

Elephantfamily=Struct.new(:father, :mother, :children)
Elephant = Struct.new(:name, :age, :weight)

ef =Elephantfamily.new()
ef.father = Elephant.new()



実行結果です。
f:id:MrRadiology:20180123155008p:plain


<<前  [TOP]