問題2.3 – SICP(計算機プログラムの構造と解釈)その27
2008年12月01日
問題2.3
長方形のデータ抽象(2点で定義)
; 始発点、終着点で長方形を定義
(define (make-rectangle start end)
(cons start end))
; 長方形の幅
(define (width rectangle)
(let ((start (start-segment rectangle))
(end (end-segment rectangle)))
(abs (- (x-point start) (x-point end)))))
; 長方形の高さ
(define (height rectangle)
(let ((start (start-segment rectangle))
(end (end-segment rectangle)))
(abs (- (y-point start) (y-point end)))))
; 長方形の周囲の長さ
(define (perimeter-rectangle rectangle)
(let ((w (width rectangle))
(h (height rectangle)))
(* (+ w h) 2)))
; 長方形の面積
(define (area-rectangle rectangle)
(let ((w (width rectangle))
(h (height rectangle)))
(/ (* w h) 2)))
(define p1 (make-point 4 0))
(define p2 (make-point 0 2))
(define r1 (make-rectangle p1 p2))
(perimeter-rectangle r1)
gosh> 12
(area-rectangle r1)
gosh> 4
長方形のデータ抽象(幅と高さで定義)
perimeter-rectangle
と area-rectangle
は 抽象化の壁により修正せずにそのまま使える。
; 幅、高さで長方形を定義
(define (make-rectangle w h)
(cons w h))
; 長方形の幅
(define (width rectangle)
(car rectangle))
; 長方形の高さ
(define (height rectangle)
(cdr rectangle))
(define r2 (make-rectangle 4 2))
(perimeter-rectangle r2)
gosh> 12
(area-rectangle r2)
gosh> 4
計算機プログラムの構造と解釈
posted with amazlet at 08.11.07
ジェラルド・ジェイ サスマン ジュリー サスマン ハロルド エイブルソン
ピアソンエデュケーション
売り上げランキング: 6542
ピアソンエデュケーション
売り上げランキング: 6542