第1章 计算

Table of Contents

我们在 前言:如何编程 学习了如何编程,如下计算 1 + 2:

(+ 1 2)

计算结果:3


看下一段代码:

(+ 1 (+ 1 (+ 1 1) 2) 3 4 5)

计算结果 18

这个计算步骤:

(+ 1 (+ 1 (+ 1 1) 2) 3 4 5)
==
(+ 1 (+ 1 2 2) 3 4 5)
==
(+ 1 5 3 4 5)
==
18

Drracket 的单步执行功能

Drracket 提供了单步执行功能,让我们可以看到每一步的计算结果。



本章后续将介绍4种原子类型数据(atomic data):数值、字符串、图片和布尔值。

这里的原子不是物理概念,你只需要知道你无法窥探原子类型数据的内部了,不理解也无所谓。

1.1 数值的计算

数值的四则运算

(+ 3 4)
(- 4 3)
(* 5 5)
(/ 5 1)
(/ 5 2)

执行结果:
7
1
25
5
2.5

数值的计算:三角函数等

(abs -1)
(add1 10)
(sin 0)
(ceiling 11.1) ; 向上取整
(exact->inexact 1/2) ; 将不精确数转换为不精确数
(expt 10 2) ; 10的2次方
(expt 3 3) ; 3的3次方
(floor 11.9) ; floor 向下取整
(log 9 3) ;; 第2个参数为底数
(max 1 10 -100 3 4 999)
(sqr -33) ;; 求平方
  • ; 表示注释, ; 后的代码不会被执行

代码执行结果:

1
11
0
12
#i0.5
100
27
11
#i2.0
999
1089

精确数

初级语言将数值分为

  1. 精确数(exact)
  2. 非精确数(inexact)
    • (log 9 3) 的结果 #i2.0 就是非精确数,其值接近于2
    • (sqrt 2) 的结果 #i1.4142135623730951 也是非精确数

初级语言会尽可能将计算结果保存为精确值

帮助文档

如果你不知道某个函数的用途,可以 查阅帮助文档 .


习题1

定义笛卡尔坐标x y

(define x 3)
(define y 4)

计算(x y)到原点的距离 \(\sqrt{x^2+y^2}\)

解答

(define x 3)
(define y 4)
(sqrt (+ (* x x) (* y y)))

结果:5

1.2 字符串的计算

Author: turbolink

Created: 2025-01-14 Tue 19:49

Validate