レポート…

  ○→通常点
  ◎→特によい
  △→遅刻ないしその他の問題
  ?→保留(疑問があれば問い合わせてください)
  ☆→これからチェック:少々お待ちください
goto Index

g850193 →○

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
前半をゆっくりやったのでしんどかったですね ^_^; 後半はお話として聞いていただければいいので、資料を眺めておいて ください。3節までは真面目に読んでください。よろしく。

g850502 →○

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
はい、資料の3節までは重要なので読み返しておいてください。

g860080 →○

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
後半はお話として聞いておいていただければと思います。 3節までは資料を読み返しておいてください。

g850258 →○

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
そうですね、後半はお話ということで。3節までは資料を 読み返しておいてください。

g850005 →○

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
動的分配はまた出てくるので、とりあえずOKと思います。

g850491 →○

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
切捨て除算でもいいです。そのあたりはあくまで練習問題なんで。

g850007 →○

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
はい、Rubyの中身もこういうふうなものだというのが今回のテーマ なのでした。まあごく一部ですけど。行の意味を書きたくなるのは、 それだけ高度なことをやるようになったということで、むしろよい ことなんじゃないでしょうか。

g850184 →○

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
今回は資料の4節は眺めるだけでいいです。3節まではできれば理解して 欲しいので真面目に読んでおいてください。よろしく

g850210 →○

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
後半はお話として聞いておいて頂ければよいです。資料の3節までは 読み返しておいてください。時間がきつかったですね。

g850200 →○

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
後半はお話として聞いておいていただければよかったのですが、 それにしても時間が無かったですね。資料の3節まで読み返しておいて ください。あと課題の提出メールで複数課題は混ぜないでね。

g850168 →○

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
クラスがあると見通しよくなってキモチイイですよね。

g850165 →○

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
資料の3節まで理解して頂ければそれでOKと思います。4節は お話として聞いていただければと思いましたが、それにしても 時間がなかったですよね。

g850027 →○

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
今時は最初の演習まででOKで、あと3節の内容までは読んでおいて ください。4節はこんなものかという程度でよいです。

g850003 →○

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
前半をちゃんと時間取ろうと思ったのですが、結構大変でしたね。 資料は3節まで読み返しておいてください。

g850192 →○

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
資料は3節まで理解して頂ければと思います。4節は 眺める程度でいいですので。

g850507 →○

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
そうなんです。その「ちゃんと計算されているな」と思って 頂ければ今回の目的は達成されているということで。資料は3節まで 読み返しておいてください。

g850469 →○

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
難しくてすいません。継承が便利まで分かれば十分ですので。 おつかれ様でした

g850006 →○

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
難しかったですかね。でも面白いとも思いますよね。おつかれ様です。

g850161 →○

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
後半は難しいですね。3章まで理解して頂ければいいので、 そこまでの資料を読み返しておいてください。

g750466 →○

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. 大変難しいので、少しずつ噛み砕いていく所存です。

資料4節はやっぱり難しいので、2節と3節が分かっていればいいものと 思います。その範囲で読み返しておいてください。


Index

g750466 g850003 g850005 g850006 g850007 g850027 g850161 g850165 g850168 g850184 g850192 g850193 g850200 g850210 g850258 g850469 g850491 g850502 g850507 g860080

Late Arrival: