学习目标

  • 能够编写对基本数据类型(包括数字、字符串、图像和布尔值)进行操作的表达式
  • 能够编写常量和函数定义
  • 能够逐步写出简单表达式(包括函数调用)的求值过程
  • 能够使用步进器自动逐步执行表达式的求值过程
  • 能够使用 DrRacket help desk 来发现新的基本操作

内容

Expressions

首先,在打开 DrRacket 后,确保顶部工具栏Language > Choose Language打开后,对话框内选择的是Teaching Languages > Beginning Student,之后点击OK保存。

DrRacket 上方编写代码的部分被称为定义区 (Definitions Area),下方的输出部分被称为交互区 (Interaction Area)

我们可以在定义区编写一个简单的表达式:

1
(+ 3 4)

之后点击右上角的Run按钮,就可以在交互区看到其,即7

从这个例子可以看出,Racket 是通过计算表达式来得到的。

Expressions

表达式 (Expression) 是程序中被求值 (Evaluate) 以产生值 (Value) 的元素,语法为(<primitive> <expression>)。例如 (+ 3 4) -> 7(+ 3 (* 2 3)) -> 9(/ 12 (* 2 3)) -> 2

上述表达式中的<primitive>+ * /等,它们被称为基本操作符 (Primitive Operator)

关键的是,数字本身也是表达式。

ps: 以防有人不知道,在大多数编程语言中,/是除法

之后,我们可以选中目前已经写好的表达式们,点击Racket > Comment Out with ";",将你选中的表达式注释掉。

Comment

在 Racket 中,一行代码前的分号;后的所有内容都是注释 (Comment),注释旨在向人传达关于程序的重要信息。Racket 在运行时会忽略这些注释。

ps: 将所有表达式注释掉后,运行将不会有任何值输出

在加减乘除之外,本章还会涉及两个基本操作符,第一个是sqr,即平方;以及sqrt,即开平方。后面的表达式可以传递参数 (Argument) 给这两个基本操作符以将其平方/开平方。

1
2
3
4
5
6
7
(sqr 3)
; 此处 sqr 是基本操作符。3 是参数,同时也是表达式
> 9

(sqrt 16)
; 此处 sqrt 是基本操作符。16 是参数,同时也是表达式
> 4

之后会学到 Parameter 的概念,极容易与 Argument 混淆,这里打个预防针

接下来是课后小练习,我们可以先下载来自edX的 pythag-starter.rkt 文件。将这个文件拖动到 Racket 编辑器中,或者在上方工具栏File > Open...中选择该文件打开。之后就能看到一个带有题目的代码文件。

这个大型注释块可以通过选中你想要将其称为注释一部分的表达式们,然后点击Racket > Comment Out with a Box,将它们变成注释块。

Solution

已知直角三角形的两条直角边长,求斜边长度,可用勾股定理解决。

(sqrt (+ (sqr 3) (sqr 4))) -> 5

Evaluation

Strings and Images

Constant Definitions

Function Definitions

Booleans and if Expressions

Using the Stepper

Discovering Primitives

Practice Problems