<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                [TOC] ## 數據混合與區分 ### 計算 * 在圖7.1所示的五個點中,有三個點位于x軸上,分別是C、D、E,因此只有兩個點,A和B,需要使用坐標表示。使用新的點表示法可以更簡潔地描述這些點:`(make-posn 6 6)`代表A;`( make-posn1 2)`代表B;而1、2、3分別代表C、D、E。 * 現在,如果要定義函數 distance-to-0,函數讀入一個點,結果是該點到原點的距離. ![320F0C63-37D8-45F8-AB0E-47C9669074C4.png](http://yanxuan.nosdn.127.net/63520ef658c7ad7d532115aa6ff023b3.png) code ``` ; 計算點到原點的距離 ; number -> number ; or struct-posn ->number (define (distance-to-0 a-pixel) (cond [(number? a-pixel) a-pixel ] [(posn? a-pixel ) (hypotenuse (posn-x a-pixel) (posn-y a-pixel) )] )) ; 計算斜邊 ; number,number ->number ; (3,4) -> 5 (define (hypotenuse x y) (sqrt (+ (* x x) (* y y)))) ; 輸出 5 (distance-to-0 (make-posn 3 4)) ``` ### 設計處理混合數據的函數 數據分析和設計 * 分析問題表述的任務之一就是判斷該問題有沒有涉及不同類型的數據,這類數據通常稱為**混合數據(Mixed Data)**,或稱為**數據的聯合體(Union)**。 * 換句話說,數據分析必須考慮多個因素。 * 第一,必須確定問題提及多少種不同的數據類型,各自的屬性又是什么。如果存在多個不同的數據類型,就將它們組成混合數據; * 第二,必須理解涉及的對象有沒有多個屬性,如果某個對象有多個屬性,就用結構體來表示它。因此,數據定義可能包含多個子句,列舉了多種可能的情況。事實上,數據分析可能會生成一個多層的數據定義。 模板 * 模板就是把輸入數據翻譯成 Scheme表達式。 * 例如,有一個數據定義,列舉了多個不同的事物。 * 第一步是寫下一個cond表達式,其子句數量與數據定義所包含的不同類型的數據種類的數目一樣; * 第二步是給每一個子句加上條件,與數據定義中相應的子類型相對應,當輸入屬于該子類型時,條件成立。 * 模板的例子 ``` // 不寫距離邏輯 ;; f :shape -> ??? (define (f-shape) (cond [(square? a-shape) ...] [(circle? a-shape) ...])) ``` 主體 * 模板將任務分割成多個子任務。現在可以單獨處理每一個cond子句了。事實上,只需簡單地考慮如果輸入是某種類型的數據,輸岀應該是什么就可以了。因而在處理某個特定的子句時,可以忽略其他情況。 #### 一個完整的例子 ``` ;數據定義: (define-struct circle (center radius)) (define-struct square (nw length) ;; shape是下列二者之 ;; 1.結構體:(make- circle p s) ;; 其中 p 是 posn 結構體,s是數;或 ;; 2.結構體:(make- square p s) ;; 其中 p 是 posn 結構體,s 是數 ;; 例子: 參見測試 ;; 模板: ;;(define (f a-shape) ;; (cond ;; [(square? a-shape) ...] ;; [(circle? a-shape) ...])) ;; 定義 (define (perimeter a-shape) (cond [(circle? a-shape) (* (* 2 (circle-radius a-shape)) pi)] [(square? a-shape) (* (square-length a-shape) 4)])) ;; 測試:(即例子) (= (perimter (make-square ... 3)) 12) (= (perimter (make-square ... 1)) (* 2 pi)) ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看