BSL编程语言 —— 系统化程序设计

BSL编程语言简介

0. 选择编程语言

如果你第一次使用DrRacket,打开后需要选择Beginning Student Language (BSL)

Language -> Choose Language (或直接按Ctrl + L),看到如下洁面后选择Beginning Student,点击OK
在这里插入图片描述

定义区【Definition Area】—写代码的地方

互动区【Interactive Area】 — 代码结果输出的地方

1. 写简单的表达式(Expression)

让我们从最简单的四则运算开始【所有BSL表达式都必须在()中】

(+ 3 4)

点击右上角的运行按钮,互动区将显示7。其中,+是运算符(operator),34操作数(operand)。BSL使用前缀表示法,即把运算符放在前面,操作数放在后面。这与函数f(x)的表达方法相同,也保持了一致性,但与3+4的表达方法略有不同。即使是简单的表达式,如果将多个数字相加,只需要写1次加号:

(+ 3 3 1)   ; + can add more than 2 numbers

上面的表达式中,;表示注释,该行在分号后的内容运行时都将被忽略,可以用于解释代码。

表达式可以相互嵌套,下面的表达式同样返回7.

(+ 3 (* 2 2))

加(+)减(-)乘(*)除(/)都可以进行运算,这里再引入两个运算sqrsqrt:

(sqr 2)    ; 计算2的平方,4
(sqrt 4)   ; 计算4的平方根,2

2. 表达式求值

原始表达式求值规则(从左到右,从内到外):

  • 首先对操作数求值
  • 然后会原始表达式求值

To evaluate a primitive call:

  • first reduce operands to values
  • apply primitives to the values
; Example
; 从左到右,2个数相乘,从左到右,从内到外,依次求值
; =============================================
(/ (* 3 4) (+ (- 7 4) 3))
(/ 12      (+ (- 7 4) 3))
(/ 12      (+ 3       3))
(/ 12      6)
2

3. 字符串和图像

字符串是一系列由双引号框起来的字符组,如"Hello"

对于字符串的主要操作

(string-append "hello" "_" "world")    ; 连接字符串,返回"hello_world"
(string-length "hello")                ; 求字符串长度,返回5
(substring "hello" 1 3)                ; 取字符串的一部分,返回"el"

; 0-based indexing: 
; substring有三个参数,字符串,开始位置,结束位置(不包括)
; "hello"
; "01234"
; (substring "hello" 1 3) 返回 "el"

使用任何图形函数都需要在BSL文件头加入(require 2htdp/image),使用库中的相关函数。

; 一些基本图形
(circle 10 "solid" "red")
(rectangle 20 40 "outline" "blue")
(text "Hello" 24 "orange")

在这里插入图片描述

除了基本图形之外,我们还可以组合出一些更有趣的图形

; 一些图形组合
(above (circle 20 "solid" "red")
       (circle 20 "solid" "yellow")
       (circle 20 "solid" "green"))

(overlay (circle 10 "solid" "red")
         (circle 20 "solid" "yellow")
         (circle 30 "solid" "green"))

在这里插入图片描述

4. 常数

定义常数,可以增加程序的可读性,并方便日后的修改
通常,使用大写字母作为常数名称,定义时可以用表达式作为常数名的值

(define WIDTH 400)
(define WIDTH-TO-HEIGHT 1.5)
(define HEIGHT (* WIDTH WIDTH-TO-HEIGHT))  ; 用表达式定义常数
展开阅读全文

没有更多推荐了,返回首页