○→通常点 ◎→特によい △→遅刻ないしその他の問題 ?→保留(疑問があれば問い合わせてください) ☆→これからチェック:少々お待ちください goto Index
Subject: Report 9A
Date: Fri, 12 Dec 2008 11:54:38 JST
850193D 吉田誠 12:10
$vars = {}
class Add
def initialize(l, r) @left = l; @right = r end
def exec() return @left.exec + @right.exec end
def to_s() return '('+@left.to_s+' + '+@right.to_s+')' end
end
class Mul
def initialize(l, r) @left = l; @right = r end
def exec() return @left.exec * @right.exec end
def to_s() return '('+@left.to_s+' * '+@right.to_s+')' end
end
class Hiki
def initialize(l, r) @left = l; @right = r end
def exec() return @left.exec - @right.exec end
def to_s() return '('+@left.to_s+' - '+@right.to_s+')' end
end
class Div
def initialize(l, r) @left = l; @right = r end
def exec() return @left.exec / @right.exec end
def to_s() return '('+@left.to_s+' / '+@right.to_s+')' end
end
class Lit
def initialize(v) @left = v end
def exec() return @left end
def to_s() return @left.to_s end
end
class Var
def initialize(v) @left = v end
def exec() return $vars[@left] end
def to_s() return @left.to_s end
end
引き算と割り算を加えました。
irb(main):019:0> $vars['x'] = 7
=> 7
irb(main):020:0> e = Hiki.new(Lit.new(2), Div.new(Var.new('x'),
Lit.new(7)))
=> #<Hiki:0x701e8 @right=#<Div:0x7024c @right=#<Lit:0x70288 @left=7>,
@left=#<Var:0x70350 @left="x">>, @left=#<Lit:0x70440 @left=2>>
irb(main):021:0> e.to_s
=> "(2 - (x / 7))"
irb(main):022:0> e.exec
=> 1
Q1
わかりました
Q2
後半が無理でした。
Q3
後半スピード早いです。きついです。
goto Index
Subject: Report 9A
Date: Fri, 12 Dec 2008 11:54:57 JST
850502
12月12日
演習、1
引き算と割り算の機能をつけました。
$vars={}
class Add
def initialize(l,r) @left=l;@right=r end
def exec() return @left.exec+@right.exec end
def to_s() return '('+@left.to_s+'+'+@right.to_s+')' end
end
class Mul
def initialize(l,r) @left=l;@right=r end
def exec() return @left.exec*@right.exec end
def to_s() return '('+@left.to_s+'*'+@right.to_s+')' end
end
class Lit
def initialize(v) @left=v end
def exec() return @left end
def to_s() return @left.to_s end
end
class Var
def initialize(v) @left=v end
def exec() return $vars[@left] end
def to_s() return @left.to_s end
end
class Sub
def initialize(l,r) @left=l;@right=r end
def exec() return @left.exec-@right.exec end
def to_s() return '('+@left.to_s+'-'+@right.to_s+')' end
end
class Div
def initialize(l,r) @left=l;@right=r end
def exec() return @left.exec/@right.exec end
def to_s() return '('+@left.to_s+'/'+@right.to_s+')' end
end
Q1、「情報」でもやったのでなんとか。
Q2、少し待ってください。
Q3、Bの課題がないなんて!!何て楽なんでしょう!!!!!!
goto Index
Subject: Report 9A
Date: Fri, 12 Dec 2008 11:56:27 JST
$vars = {}
class Add
def initialize(l,r) @left=l;@right=r end
def exec() return @left.exec+@right.exec end
def to_s() return '('+@left.to_s+'+'+@right.to_s+')' end
end
class Sub
def initialize(l,r) @left=l;@right=r end
def exec() return @left.exec-@right.exec end
def to_s() return '('+@left.to_s+'-'+@right.to_s+')' end
end
class Mul
def initialize(l,r) @left=l;@right=r end
def exec() return @left.exec*@right.exec end
def to_s() return '('+@left.to_s+'*'+@right.to_s+')' end
end
class Div
def initialize(l,r) @left=l;@right=r end
def exec() return @left.exec/@right.exec end
def to_s() return '('+@left.to_s+'/'+@right.to_s+')' end
end
class Lit
def initialize(v) @left=v end
def exec() return @left end
def to_s() return @left.to_s end
end
class Var
def initialize(v) @left=v end
def exec() return $vars[@left] end
def to_s() return @left.to_s end
end
Q1なんとなく理解しました。
Q2なんとなく納得しました。
Q3だいぶわからなくなってきました。
goto Index
Subject: Report 9A
Date: Fri, 12 Dec 2008 11:57:56 JST
課題1
$vars = {}
class Add
def initialize(l, r) @left = l; @right = r end
def exec() return @left.exec + @right.exec end
def to_s() return '('+@left.to_s+' + '+@right.to_s+')' end
end
class Mul
def initialize(l, r) @left = l; @right = r end
def exec() return @left.exec * @right.exec end
def to_s() return '('+@left.to_s+' * '+@right.to_s+')' end
end
class Min
def initialize(l, r) @left = l; @right = r end
def exec() return @left.exec - @right.exec end
def to_s() return '('+@left.to_s+' - '+@right.to_s+')' end
end
class Mnk
def initialize(l, r) @left = l; @right = r end
def exec() return @left.exec / @right.exec end
def to_s() return '('+@left.to_s+' / '+@right.to_s+')' end
end
class Lit
def initialize(v) @left = v end
def exec() return @left end
def to_s() return @left.to_s end
end
class Var
def initialize(v) @left = v end
def exec() return $vars[@left] end
def to_s() return @left.to_s end
end
減法と除法を追加しました。
A1,かろうじて理解できたつもりです。。。
A2,う〜ん難しかったです;なんとか納得できるように努力してみます。
A3,A課題だけになって楽になったのでよかったです。
goto Index
Subject: Report 9A
Date: Fri, 12 Dec 2008 11:59:06 JST
学生証番号:850005H
投稿日時:2008/12/12 11:5
----------ここから演習1のプログラム----------
$vars = {}
class Add
def initialize(l, r) @left=l; @right=r end
def exec() return @left.exec + @right.exec end
def to_s() return '('+@left.to_s+' + '+@right.to_s+')' end
end
class Sub
def initialize(l, r) @left=l; @right=r end
def exec() return @left.exec - @right.exec end
def to_s() return '('+@left.to_s+' - '+@right.to_s+')' end
end
class Mul
def initialize(l, r) @left=l; @right=r end
def exec() return @left.exec * @right.exec end
def to_s() return '('+@left.to_s+' * '+@right.to_s+')' end
end
class Div
def initialize(l, r) @left=l; @right=r end
def exec() return @left.exec.to_f / @right.exec.to_f end
def to_s() return '('+@left.to_s+' / '+@right.to_s+')' end
end
class Lit
def initialize(v) @left=v end
def exec() return @left end
def to_s() return @left.to_s end
end
class Var
def initialize(v) @left=v end
def exec() return $vars[@left] end
def to_s() return @left.to_s end
end
----------ここまで演習1のプログラム----------
アンケートの回答
A1.抽象構文木という概念は理解できました。
A2.継承に関しては理解しました。動的分配は、たぶん理解してないです。
A3.あやふやだった.to_sの意味がしっかりわかってよかったです。
goto Index
Subject: Report 9A
Date: Fri, 12 Dec 2008 11:59:35 JST
演習1
$vars = {}
class Add
def initialize(l, r) @left = l; @right = r end
def exec() return @left.exec + @right.exec end
def to_s() return '('+@left.to_s+' + '+@right.to_s+')' end
end
class Mul
def initialize(l, r) @left = l; @right = r end
def exec() return @left.exec * @right.exec end
def to_s() return '('+@left.to_s+' * '+@right.to_s+')' end
end
class Sub
def initialize(l, r) @left = l; @right = r end
def exec() return @left.exec - @right.exec end
def to_s() return '('+@left.to_s+' + '+@right.to_s+')' end
end
class Div
def initialize(l, r) @left = l; @right = r end
def exec() return @left.exec / @right.exec end
def to_s() return '('+@left.to_s+' / '+@right.to_s+')' end
end
class Lit
def initialize(v) @left = v end
def exec() return @left end
def to_s() return @left.to_s end
end
class Var
def initialize(v) @left = v end
def exec() return $vars[@left] end
def to_s() return @left.to_s end
end
引き算と割り算を追加しました。ただし割り算は整数の切り捨て除
算扱いになっています。
Q1少しは。まだ良くはわかりません。
Q2何となく。
Q3classの使い方があまり良くわかっていないことに気づき
ました。
goto Index
Subject: Report 9A
Date: Fri, 12 Dec 2008 12:03:03 JST
g850007 小作潤一朗 12/12 お昼頃
演習1
$vars = {}
class Add
def initialize(l,r)
@left = l ; @right = r
end
def exec()#計算を実行している
return @left.exec + @right.exec
end
def to_s()#計算内容の表示
return '('+@left.to_s+' + '+@right.to_s+')'
end
end
class Mul
def initialize(l,r)
@left = l ; @right = r
end
def exec()
return @left.exec * @right.exec
end
def to_s()
return '('+@left.to_s+' * '+@right.to_s+')'
end
end
class Minu
def initialize(l,r)
@left = l ; @right = r
end
def exec()
return @left.exec - @right.exec
end
def to_s()
return '('+@left.to_s+' - '+aright.to_s+')'
end
end
class Div
def initialize(l,r)
@left = l ; @right = r
end
def exec()
return @left.exec.to_f / @right.exec.to_f
end
def to_s()
return '('+@left.to_s+' / '+@right.to_s+')'
end
end
class Lit #「定数」を定義
def initialize(v)
@left = v
end
def exec()
return @left
end
def to_s()
return @left.to_s
end
end
class Var #「変数」を定義
def initialize(v)
@left = v
end
def exec()
return $vars[@left]
end
def to_s()
return @left.to_s
end
end
演習1のコードです。割り算のときは実数に変化させないといけないこ
とを友人に指摘されるまで気づきませんでした。
以下アンケート回答
Q1非常に朧げながらも理解したと信じたいです。
Q2これはちょっと…
Q3とどのつまり、rubyを使ってrubyの中身を記述しようと試みたって
ことなんでしょうか?
あと、最近コメントアウトでその行が何を示しているかいちいち書か
ないと理解できなくなってきました(;_;)
goto Index
Subject: Report9A
Date: Fri, 12 Dec 2008 12:08:23 JST
850184F
12/12
演習1 引き算と割り算を追加しました。
$vars={}
class Add
def initialize(l,r) @left=l;@right=r end
def exec() return @left.exec+@right.exec end
def to_s() return '('+@left.to_s+'+'+@right.to_s+')' end
end
class Mul
def initialize(l,r) @left=l;@right=r end
def exec() return @left.exec*@right.exec end
def to_s() return '('+@left.to_s+'*'+@right.to_s+')' end
end
class Lit
def initialize(v) @left=v end
def exec() return @left end
def to_s() return @left.to_s end
end
class Var
def initialize(v) @left=v end
def exec() return $vars[@left] end
def to_s() return @left.to_s end
end
class Sub
def initialize(l,r) @left=l;@right=r end
def exec() return @left.exec-@right.exec end
def to_s() return '('+@left.to_s+'-'+@right.to_s+')' end
end
class Div
def initialize(l,r) @left=l;@right=r end
def exec() return @left.exec/@right.exec end
def to_s() return '('+@left.to_s+'/'+@right.to_s+')' end
end
A1プログラムが複雑であればあるほど、便利な考え方であることは理解できました。
A2資料読んで復習しときます。
A3イメージをつかむためにも資料を読み込むことが必要かなと。
締め切りがいろいろとのびたようなので、アイディアが固まれば再提
出しようかなと思います。
goto Index
Subject: Report9A
Date: Fri, 12 Dec 2008 12:08:35 JST
学籍番号 850210J 氏名 徐 聖博 日時 12/1
2 12時頃
$vars = {}
class Add
def initialize(l, r) @left = l; @right = r end
def exec() return @left.exec + @right.exec end
def to_s() return'('+@left.to_s+' + '+@right.to_s+')' end
end
class Mul
def initialize(l, r) @left = l; @right = r end
def exec() return @left.exec * @right.exec end
def to_s() return'('+@left.to_s+' * '+@right.to_s+')' end
end
class Lit
def initialize(v) @left = v end
def exec() return @left end
def to_s() return @left.to_s end
end
class Var
def initialize(v) @left =v end
def exec() return $vars[@left] end
def to_s() return @left.to_s end
end
class Sbu
def initialize(l, r) @left = l; @right = r end
def exec() return @left.exec - @right.exec end
def to_s() return '('+@left.to_s+' - '+@right.to_s+')'
end
class Ex
def initialize(l, r) @left = l; @right = r end
def exec() return @left.exec / @right.exec end
def to_s() return '('+@left.to_s+' / '+@right.to_s+')'
end
アンケート
Q1、理解しました
Q2、厳しいです
Q3、がんばります。。。
goto Index
Subject: report9
Date: Fri, 12 Dec 2008 12:09:07 JST
850200 植草浩輔
class Substract
def initialize(l,r) @left = l; @right= r end
def exec() return @left.exec - @right.exec end
def to_s() return '('+@left.to_s+' - '+@right.to_s+')' end
end
class Divide
def initialize(l,r) @left = l; @right= r end
def exec() return @left.exec / @right.exec end
def to_s() return '('+@left.to_s+' / '+@right.to_s+')' end
end
class Input
def exec() print('input>') ; return gets.to_i end
def to_s() return '*input*' end
end
Q1 だいたい 分かりました
Q2 おもしろいです
Q3 後半意味不明です。
goto Index
Subject: Report 9A
Date: Fri, 12 Dec 2008 12:10:15 JST
g850168F 大久保 遼 2008.12.12 12:08
演習1
$vars = {}
class Add
def initialize(l, r) @left = l; @right = r end
def exec() return @left.exec + @right.exec end
def to_s() return '('+@left.to_s+' + '+@right.to_s+')' end
end
class Mul
def initialize(l, r) @left = l; @right = r end
def exec() return @left.exec * @right.exec end
def to_s() return '('+@left.to_s+' * '+@right.to_s+')' end
end
class Div
def initialize(l ,r) @left = l; @right = r end
def exec() return @left.exec / @right.exec end
def to_s() return '('+@left.to_s+' / '+@right.to_s+')' end
end
class Sub
def initialize(l ,r) @left = l; @right = r end
def exec() return @left.exec - @right.exec end
def to_s() return '('+@left.to_s+' - '+@right.to_s+')' end
end
class Lit
def initialize(v) @left = v end
def exec() return @left end
def to_s() return @left.to_s end
end
class Var
def initialize(v) @left = v end
def exec() return $vars[@left] end
def to_s() return @left.to_s end
end
def test
$vars['x'] = 6
e = Add.new(Var.new('x'), Lit.new(1))
puts(e.to_s + ' : ' + e.exec.to_s)
e = Mul.new(Var.new('x'), Lit.new(3))
puts(e.to_s + ' : ' + e.exec.to_s)
e = Div.new(Var.new('x'), Lit.new(3))
puts(e.to_s + ' : ' + e.exec.to_s)
e = Sub.new(Var.new('x'), Lit.new(3))
puts(e.to_s + ' : ' + e.exec.to_s)
end
アンケート
Q1.はい、大丈夫です。
Q2.これから勉強します。
Q3.やっぱりclass機能は好きです。
goto Index
Subject: Report8A
Date: Fri, 12 Dec 2008 12:11:48 JST
850165G 石橋正成 08/12/12
$vars = {}
class Add
def initialize(l, r) @left = l; @right = r end
def exec() return @left.exec + @right.exec end
def to_s() return '('+@left.to_s+' + '+@right.to_s+')' end
end
class Mul
def initialize(l, r) @left = l; @right = r end
def exec() return @left.exec * @right.exec end
def to_s() return '('+@left.to_s+' * '+@right.to_s+')' end
end
class Lit
def initialize(v) @left = v end
def exec() return @left end
def to_s() return @left.to_s end
end
class Var
def initialize(v) @left = v end
def exec() return $vars[@left] end
def to_s() return @left.to_s end
end
class Sub
def initialize(l, r) @left = l; @right = r end
def exec() return @left.exec - @right.exec end
def to_s() return '('+@left.to_s+' - '+@right.to_s+')' end
end
class Div
def initialize(l, r) @left = l; @right = r end
def exec() return @left.exec / @right.exec end
def to_s() return '('+@left.to_s+' / '+@right.to_s+')' end
end
1.はい、理解しました。
2.そのうち納得するつもりです。
3.クラスの応用の幅が広がりました。
goto Index
Subject: Report 9A
Date: Fri, 12 Dec 2008 12:12:10 JST
学籍番号:850027F
氏名:米川 慧
投稿日時:12/12、12:12←!!!ひゃっほう(^^)
演習1のソース
$vars= {} #lec_9
class Add
def initialize(l,r) @left=l; @right=r end
def exec() return @left.exec + @right.exec end
def to_s() return '('+@left.to_s+'+'+@right.to_s+')' end
end
class Mul
def initialize(l,r) @left=l; @right=r end
def exec() return @left.exec * @right.exec end
def to_s() return '('+@left.to_s+'*'+@right.to_s+')' end
end
class Lit
def initialize(v) @left=v end
def exec() return @left end
def to_s() return @left.to_s end
end
class Var
def initialize(v) @left=v end
def exec() return $vars[@left] end
def to_s() return @left.to_s end
end
class Sub
def initialize(l,r) @left=l; @right=r end
def exec() return @left.exec - @right.exec end
def to_s() return '('+@left.to_s+'-'+@right.to_s+')' end
end
class Div
def initialize(l,r) @left=l; @right=r end
def exec() return @left.exec.to_f / @right.exec.to_f end
def to_s() return '('+@left.to_s+'/'+@right.to_s+')' end
end
def gj #test_method
e=Sub.new(Var.new('y'),Div.new(Var.new('z'),Lit.new(5)))
puts e.to_s
puts "y=#{$vars['y']=23}"
puts "z=#{$vars['z']=12}"
puts "answer=#{e.exec}"
end
↑これで動かしました
おまけ:結果
irb(main):025:0> gj
(y-(z/5))
y=23
z=12
answer=20.6
=> nil
Q1、もはや最初の演習でいっぱいいっぱいでした;
Q2、同上。
Q3、まだまだ今学期は残ってるので、学期中にできるだけ身につけ
たいです。やっぱおもしろいです。
goto Index
Subject: Report 9A
Date: Fri, 12 Dec 2008 12:13:56 JST
学籍番号 850003B
投稿日時 12月12日12時12分
演習1の、引くのです。
ーーーーーーーーー
class Hiki
def initialize(l, r) @left = l; @right = r end
def exec() return @left.exec - @right.exec end
def to_s() return '('+@left.to_s+' - '+@right.to_s+')' end
end
ーーーーーーーーー
アンケート
A1 だいたいわかった気がします。
A2全然わかりませんでした。
A3今日はマジ難しかったです。ペースも早かった。
goto Index
Subject: Report9A
Date: Fri, 12 Dec 2008 12:16:50 JST
850192A 八代悠歌
2008.11.28
演習1
$vars = {}
class Add
def initialize(l, r) @left = l; @right = r end
def exec() return @left.exec + @right.exec end
def to_s() return '('+@left.to_s+' + '+@right.to_s+')' end
end
class Mul
def initialize(l, r) @left = l; @right = r end
def exec() return @left.exec * @right.exec end
def to_s() return '('+@left.to_s+' * '+@right.to_s+')' end
end
class Div
def initialize(l, r) @left = l; @right = r end
def exec() return @left.exec / @right.exec end
def to_s() return '('+@left.to_s+' / '+@right.to_s+')' end
end
class Subt
def initialize(l, r) @left = l; @right = r end
def exec() return @left.exec - @right.exec end
def to_s() return '('+@left.to_s+' - '+@right.to_s+')' end
end
class Lit
def initialize(v) @left = v end
def exec() return @left end
def to_s() return @left.to_s end
end
class Var
def initialize(v) @left = v end
def exec() return $vars[@left] end
def to_s() return @left.to_s end
end
Q1 少し理解しました。
Q2 納得できるように、ちゃんと復習します。
Q3 概念を理解できるようにプリントをよく読みたい。
goto Index
Subject: Report9A
Date: Fri, 12 Dec 2008 12:18:23 JST
演習1
$vars={}
class Add
def initialize(l,r)
@left=l;@right=r
end
def exec
return @left.exec+@right.exec
end
def to_s
return "("+@left.to_s+"+"+@right.to_s+")"
end
end
class Mul
def initialize(l,r)
@left=l;@right=r
end
def exec()
return @left.exec*@right.exec
end
def to_s
return "("+@left.to_s+"*"+@right.to_s+")"
end
end
class Sub
def initialize(l,r)
@left=l;@right=r
end
def exec
return @left.exec-@right.exec
end
def to_s
return"("+@left.to_s+"-"+@right.to_s+")"
end
end
class Div
def initialize(l,r)
@left=l;@right=r
end
def exec
return @left.exec*1.0/@right.exec
end
def to_s
return"("+@left.to_s+"/"+@right.to_s+")"
end
end
class Lit
def initialize(v)
@left=v
end
def exec
return @left
end
def to_s
return @left.to_s
end
end
class Var
def initialize(v)
@left=v
end
def exec
return $vars[@left]
end
def to_s
return @left.to_s
end
end
これに
def test
$vars["x"]=6
e=Add.new(Var.new("x"),Lit.new(1))
puts(e.to_s+":"+e.exec.to_s)
e=Sub.new(Lit.new(3),Mul.new(Var.new("x"),Lit.new(2)))
puts(e.to_s+":"+e.exec.to_s)
e=Sub.new(Div.new(Var.new("x"),Lit.new(3)),Lit.new(2))
puts(e.to_s+":"+e.exec.to_s)
end
というのを定義して実行すると
(x+1):7
(3-(x*2)):-9
((x/3)-2):0.0
とでて、ちゃんと計算されていることがわかる。
アンケート
Q1、理解したと思います。
Q2、何とか。。。
Q3、内容は難しかったんですが、Rubyが実際どう計算してる
のかとか興味深いことが知れてよかったです。
goto Index
Subject: Report 9A
Date: Fri, 12 Dec 2008 12:20:45 JST
g850469
中嶋健太 12:18
演習1と2のa, b
$vars = {}
class Add
def initialize(l, r)
@left = l; @right = r end
def exec()
return @left.exec + @right.exec end
def to_s()
return '('+@left.to_s+' + '+@right.to_s+')'
end
end
class Mul
def initialize(l, r)
@left = l; @right = r end
def exec()
return @left.exec * @right.exec
end
def to_s()
return '('+@left.to_s+' * '+@right.to_s+')'
end
end
class Subt
def initialize(l, r)
@left = l; @right = r
end
def exec()
return @left.exec - @right.exec end
def to_s()
return '('+@left.to_s+' - '+@right.to_s+')' end
end
class Div
def initialize(l, r)
@left = l; @right = r
end
def exec()
return @left.exec / @right.exec end
def to_s()
return '('+@left.to_s+' / '+@right.to_s+')' end
end
class Lit
def initialize(v) @left = v end
def exec() return @left end
def to_s() return @left.to_s end
end
class Var
def initialize(v) @left = v end
def exec() return $vars[@left] end
def to_s() return @left.to_s end
end
class Print
def initialize(v) @left = v end
def exec()
puts(@left.to_s)
end
def to_s()
@left.to_s
end
end
class Scan
def initialize() end
def exec() e = gets.to_i; return e end
def to_s() end
end
Q1, とりあえず理解しましたが、難しいです。
Q2, とりあえず、継承は便利ということはわかりました。
Q3, 今日はやけにハイレベルで、なかなか理解するのが難しかった。
goto Index
Subject: Report 9A
Date: Fri, 12 Dec 2008 12:22:25 JST
850006A 大久保智樹 2008/12/12 12:25
演習1
$vars = {}
class Add
def initialize(l, r)
@left = l
@right = r
end
def exec()
return @left.exec + @right.exec
end
def to_s()
return '('+@left.to_s+' + '+@right.to_s+')'
end
end
class Sub
def initialize(l, r)
@left = l
@right = r
end
def exec()
return @left.exec - @right.exec
end
def to_s()
return '('+@left.to_s+' - '+@right.to_s+')'
end
end
class Div
def initialize(l, r)
@left = l
@right = r
end
def exec()
return @left.exec.to_f / @right.exec.to_f
end
def to_s()
return '('+@left.to_s+' / '+@right.to_s+')'
end
end
class Mul
def initialize(l, r)
@left = l
@right = r
end
def exec()
return @left.exec * @right.exec
end
def to_s()
return '()('+@left.to_s+' * '+@right.to_s+')'
end
end
class Lit
def initialize(v)
@left = v
end
def exec()
return @left
end
def to_s()
return @left.to_s
end
end
class Var
def initialize(v)
@left = v
end
def exec()
return $vars[@left]
end
def to_s()
return @left.to_s
end
end
A1.はいなんとか
A2.いちおう。。。
A3.長かったです。。。でも楽しかったような気もします
goto Index
Subject: Report9A
Date: Fri, 12 Dec 2008 12:49:39 JST
850161E 相川拓海 2008/12/12 12:55
演習1ソース
$vars= {}
class Add
def initialize(l, r) @left=l; @right=r end
def exec() return @left.exec + @right.exec end
def to_s() return '('+@left.to_s+' + '+@right.to_s+')' end
end
class Mul
def initialize(l, r) @left=l; @right=r end
def exec() return @left.exec * @right.exec end
def to_s() return '('+@left.to_s+' * '+@right.to_s+')' end
end
class Lit
def initialize(v) @left = v end
def exec() return @left end
def to_s() return @left.to_s end
end
class Var
def initialize(v) @left = v end
def exec() return $vars[@left] end
def to_s() return @left.to_s end
end
class Sub
def initialize(l, r) @left=l; @right=r end
def exec() return @left.exec - @right.exec end
def to_s() return '('+@left.to_s+'-'+@right.to_s+')' end
end
class Div
def initialize(l,r) @left=l; @right=r end
def exec() return @left.exec / @right.exec end
def to_s() return '('+@left.to_s+' / '+@right.to_s+')' end
end
正しい計算ができた。また、減算と除算機能も追加しました。
Q1 だいたい理解しました。
Q2 難しかったのであまり・・・
Q3 心なしか体力が無いです。
goto Index
Subject: Report 9A
Date: Fri, 12 Dec 2008 23:13:19 JST
演習1
$vars = {}
class Add
def initialize(l, r) @left = l; @right = r end
def exec() return @left.exec + @right.exec end
def to_s() return '('+@left.to_s+' + '+@right.to_s+')' end
end
class Mul
def initialize(l, r) @left = l; @right = r end
def exec() return @left.exec * @right.exec end
def to_s() return '('+@left.to_s+' * '+@right.to_s+')' end
end
class Lit
def initialize(v) @left = v end
def exec() return @left end
def to_s() return @left.to_s end
end
class Var
def initialize(v) @left = v end
def exec() return $vars[@left] end
def to_s() return @left.to_s end
end
class Hiku
def initialize(l, r) @left = l; @right = r end
def exec() return @left.exec - @right.exec end
def to_s() return '('+@left.to_s+' - '+@right.to_s+')' end
end
class Waru
def initialize(l, r) @left = l; @right = r end
def exec() return @left.exec / @right.exec end
def to_s() return '('+@left.to_s+' / '+@right.to_s+')' end
end
def test
$vars['x'] = 5
e = Add.new(Var.new('x'), Lit.new(1))
puts(e.to_s + ' : ' + e.exec.to_s)
e = Hiku.new(Lit.new(3),
Mul.new(Var.new('x'), Lit.new(2)))
puts(e.to_s + ' : ' + e.exec.to_s)
e = Waru.new(Add.new(Var.new('x'), Lit.new(3)),
Lit.new(2))
puts(e.to_s + ' : ' + e.exec.to_s)
end
test=>
(x + 1) : 6
(3 - (x * 2)) : -7
((x + 3) / 2) : 4
Complete(0)
引くと割るを追加しました。計算もあっています。
Q1. まだよくわかりません。
Q2. もっとよくわかりません……。
Q3. 大変難しいので、少しずつ噛み砕いていく所存です。
g750466 g850003 g850005 g850006 g850007 g850027 g850161 g850165 g850168 g850184 g850192 g850193 g850200 g850210 g850258 g850469 g850491 g850502 g850507 g860080