99re热这里只有精品视频,7777色鬼xxxx欧美色妇,国产成人精品一区二三区在线观看,内射爽无广熟女亚洲,精品人妻av一区二区三区

第二章 將Scheme用作計(jì)算器

2018-02-24 15:45 更新

2.1?簡(jiǎn)介

讓我們把Scheme解釋器當(dāng)作計(jì)算器來(lái)使用。它比Windows附帶的計(jì)算機(jī)方便多了。

2.2?將Scheme作為一個(gè)計(jì)算器

點(diǎn)擊?開(kāi)始?→?所有程序?→?MIT Scheme?→?Scheme?來(lái)啟動(dòng)Scheme解釋器以及如下圖所示的控制臺(tái)。

MIT-Scheme On Windows

首先,讓我們計(jì)算1加2的值,在提示符中輸入(+ 1 2)

1 ]=> (+ 1 2)

;Value: 3

1 ]=> 

解釋器返回3作為答案。請(qǐng)注意以下三點(diǎn):

  1. 一對(duì)括號(hào)代表了一次計(jì)算的步驟。本例中,(+ 1 2)代表步驟1+2。
  2. 左括號(hào)后緊跟著一個(gè)函數(shù)的名字,然后是參數(shù)。Scheme中大多數(shù)的操作符都是函數(shù)。在本例中,函數(shù)+首先出現(xiàn),然后緊跟兩個(gè)參數(shù):12.
  3. 標(biāo)記的分隔符是空格(Space)制表符(Tab)或者換行符(Newline)。逗號(hào)和分號(hào)不是分隔符。

讓我們來(lái)詳細(xì)地分析計(jì)算過(guò)程。在這個(gè)函數(shù)中,當(dāng)所有的參數(shù)被求值后,計(jì)算開(kāi)始處理。對(duì)參數(shù)的求值順序是沒(méi)有被規(guī)范的,也就是說(shuō),參數(shù)并不是總是會(huì)從左到右求值。

  • 符號(hào)+被求值為加法過(guò)程。僅在前端輸入+,解釋器會(huì)返回:[arity-dispatched-procedure 1]?這表明+是代表“過(guò)程1”的一個(gè)符號(hào)
  • 對(duì)1求值得到1。通常來(lái)說(shuō),對(duì)布爾值,數(shù)字,字符以及字符串求值的結(jié)果就是它們本身。另一方面,對(duì)符號(hào)求值的結(jié)果可能是一些它的東西。
  • 對(duì)2求值得到2。
  • 最后,對(duì)(+ 1 2)求值得到3并跳出括號(hào)。在Scheme中,求得的值會(huì)跳出括號(hào)外,并且這個(gè)值(表達(dá)式的最終值)會(huì)被打印到前端。

函數(shù)+可以接受任意多的參數(shù)。

(+)       ;→ 0
(+ 1)     ;→ 1
(+ 1 2)   ;→ 3
(+ 1 2 3) ;→ 6

2.3?四種基本算術(shù)操作

Scheme(以及大多數(shù)Lisp方言)都可以處理分?jǐn)?shù)。

函數(shù)exact->inexact?用于把分?jǐn)?shù)轉(zhuǎn)換為浮點(diǎn)數(shù)。Scheme也可以處理復(fù)數(shù)。復(fù)數(shù)是形如a+bi的數(shù),此處a稱為實(shí)部,b稱為虛部。+、-、*/分別代表加、減、乘、除。這些函數(shù)都接受任意多的參數(shù)。

例:

(- 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

括號(hào)可以像下面這樣嵌套:

(* (+ 2 3) (- 5 3)) ;→ 10
(/ (+ 9 1) (+ 2 3)) ;→ 2

形如這些由括號(hào)、標(biāo)記(token)以及分隔符組成的式子,被稱為S-表達(dá)式。

練習(xí) 1

使用Scheme解釋器計(jì)算下列式子:

  1. (1+39) * (53-45)
  2. (1020 / 39) + (45 * 2)
  3. 求和:39, 48, 72, 23, 91
  4. 求平均值:39, 48, 72, 23, 91(結(jié)果取為浮點(diǎn)數(shù))

2.4?其它算術(shù)操作

2.4.1?quotient,remainder,modulo和sqrt

  • 函數(shù)quotient用于求商數(shù)(quotient)。
  • 函數(shù)remaindermodulo用于求余數(shù)(remainder)。
  • 函數(shù)sqrt用于求參數(shù)的平方根(square root)
(quotient 7 3) ;→ 2
(modulo 7 3)   ;→ 1
(sqrt 8)       ;→ 2.8284271247461903

2.4.2?三角函數(shù)

數(shù)學(xué)上的三角函數(shù),諸如sincos,tanasin,acosatan都可以在Scheme中使用。atan接受1個(gè)或2個(gè)參數(shù)。如果期望atan的結(jié)果是1/2 π,就使用第二個(gè)參數(shù)指明使用弧度制。

(atan 1)   ;→ 0.7853981633974483
(atan 1 0) ;→ 1.5707963267948966

2.4.3?指數(shù)和對(duì)數(shù)

指數(shù)通過(guò)exp函數(shù)運(yùn)算,對(duì)數(shù)通過(guò)log函數(shù)運(yùn)算。ab次冪可以通過(guò)(expt a b)來(lái)計(jì)算。

練習(xí)2

使用Scheme解釋器求解下列式子:

  1. 圓周率π。
  2. exp(2/3)。
  3. 3的4次冪。
  4. 1000的對(duì)數(shù)

2.5?小結(jié)

本章中,我們已經(jīng)將Scheme解釋器當(dāng)作計(jì)算器來(lái)使用。這會(huì)讓你快速上手Scheme。我會(huì)在下個(gè)章節(jié)講解Scheme的數(shù)據(jù)類型‘表’。

2.6?習(xí)題解答

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
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)