<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=2] ## 2.1?簡介 讓我們把Scheme解釋器當作計算器來使用。它比Windows附帶的計算機方便多了。 ## 2.2?將Scheme作為一個計算器 點擊?`開始`?→?`所有程序`?→?`MIT Scheme`?→?`Scheme`?來啟動Scheme解釋器以及如下圖所示的控制臺。 ![MIT-Scheme On Windows](https://box.kancloud.cn/2015-08-25_55dc812ad01db.png) 首先,讓我們計算1加2的值,在提示符中輸入`(+ 1 2)`: ~~~ 1 ]=> (+ 1 2) ;Value: 3 1 ]=> ~~~ 解釋器返回3作為答案。請注意以下三點: 1. 一對括號代表了一次計算的步驟。本例中,`(+ 1 2)`代表步驟`1+2`。 2. 左括號后緊跟著一個函數的名字,然后是參數。Scheme中大多數的操作符都是函數。在本例中,函數`+`首先出現,然后緊跟兩個參數:`1`和`2`. 3. 標記的分隔符是**空格(Space)**、**制表符(Tab)**或者**換行符(Newline)**。逗號和分號不是分隔符。 讓我們來詳細地分析計算過程。在這個函數中,當所有的參數被求值后,計算開始處理。對參數的求值順序是沒有被規范的,也就是說,參數并不是總是會從左到右求值。 * 符號`+`被求值為加法過程。僅在前端輸入`+`,解釋器會返回:`[arity-dispatched-procedure 1]`?這表明`+`是代表“過程1”的一個符號 * 對`1`求值得到`1`。通常來說,對布爾值,數字,字符以及字符串求值的結果就是它們本身。另一方面,對符號求值的結果可能是一些它的東西。 * 對`2`求值得到`2`。 * 最后,對`(+ 1 2)`求值得到3并跳出括號。在Scheme中,求得的值會跳出括號外,并且這個值(表達式的最終值)會被打印到前端。 函數`+`可以接受任意多的參數。 ~~~ (+) ;→ 0 (+ 1) ;→ 1 (+ 1 2) ;→ 3 (+ 1 2 3) ;→ 6 ~~~ ## 2.3?四種基本算術操作 Scheme(以及大多數Lisp方言)都可以處理分數。 函數`exact->inexact`?用于把分數轉換為浮點數。Scheme也可以處理復數。復數是形如`a+bi`的數,此處`a`稱為實部,`b`稱為虛部。`+`、`-`、`*`和`/`分別代表加、減、乘、除。這些函數都接受任意多的參數。 例: ~~~ (- 10 3) ;→ 7 (- 10 3 5) ;→ 2 (* 2 3) ;→ 6 (* 2 3 4) ;→ 24 (/ 29 3) ;→ 29/3 (/ 29 3 7) ;→ 29/21 (/ 9 6) ;→ 3/2 (exact->inexact (/ 29 3 7)) ;→ 1.380952380952381 ~~~ 括號可以像下面這樣嵌套: ~~~ (* (+ 2 3) (- 5 3)) ;→ 10 (/ (+ 9 1) (+ 2 3)) ;→ 2 ~~~ 形如這些由**括號**、**標記(token)**以及**分隔符**組成的式子,被稱為**S-表達式**。 > 練習 1 > > 使用Scheme解釋器計算下列式子: > > 1. (1+39) * (53-45) > 2. (1020 / 39) + (45 * 2) > 3. 求和:39, 48, 72, 23, 91 > 4. 求平均值:39, 48, 72, 23, 91(結果取為浮點數) ## 2.4?其它算術操作 ### 2.4.1?quotient,remainder,modulo和sqrt * 函數`quotient`用于求**商數(quotient)**。 * 函數`remainder`和`modulo`用于求**余數(remainder)**。 * 函數`sqrt`用于求參數的**平方根(square root)**。 ~~~ (quotient 7 3) ;→ 2 (modulo 7 3) ;→ 1 (sqrt 8) ;→ 2.8284271247461903 ~~~ ### 2.4.2?三角函數 數學上的三角函數,諸如`sin`,`cos`,`tan`,`asin`,`acos`和`atan`都可以在Scheme中使用。`atan`接受1個或2個參數。如果期望`atan`的結果是1/2 π,就使用第二個參數指明使用弧度制。 ~~~ (atan 1) ;→ 0.7853981633974483 (atan 1 0) ;→ 1.5707963267948966 ~~~ ### 2.4.3?指數和對數 指數通過`exp`函數運算,對數通過`log`函數運算。`a`的`b`次冪可以通過`(expt a b)`來計算。 > 練習2 > > 使用Scheme解釋器求解下列式子: > > 1. 圓周率π。 > 2. exp(2/3)。 > 3. 3的4次冪。 > 4. 1000的對數 ## 2.5?小結 本章中,我們已經將Scheme解釋器當作計算器來使用。這會讓你快速上手Scheme。我會在下個章節講解Scheme的數據類型‘表’。 ## 2.6?習題解答 ### 2.6.1?答案1 ~~~ ;1 (* (+ 1 39) (- 53 45)) ;? 320 ;2 (+ (/ 1020 39) (* 45 2)) ;? 1510/13 ;3 (+ 39 48 72 23 91) ;? 273 ;4 (exact->inexact (/ (+ 39 48 72 23 91) 5)) ;? 54.6 ~~~ ### 2.6.2?答案2 ~~~ ;1 (* 4 (atan 1.0)) ;? 3.141592653589793 ;2 (exp 2/3) ;? 1.9477340410546757 ;3 (expt 3 4) ;? 81 ;4 (log 1000) ;? 6.907755278982137 ~~~
                  <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>

                              哎呀哎呀视频在线观看