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

BSL编程语言简介

文章目录

0. 选择编程语言

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

2. 表达式求值

3. 字符串和图像

4. 常数

0. 选择编程语言

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

Language -> Choose Language (或直接按Ctrl + L),看到如下洁面后选择Beginning Student,点击OK

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

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

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

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

(+ 3 4)

1

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

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

1

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

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

(+ 3 (* 2 2))

1

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

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

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

1

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

1

2

3

4

5

6

7

8

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"

1

2

3

4

5

6

7

8

9

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

; 一些基本图形

(circle 10 "solid" "red")

(rectangle 20 40 "outline" "blue")

(text "Hello" 24 "orange")

1

2

3

4

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

; 一些图形组合

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

1

2

3

4

5

6

7

8

4. 常数

定义常数,可以增加程序的可读性,并方便日后的修改

通常,使用大写字母作为常数名称,定义时可以用表达式作为常数名的值

(define WIDTH 400)

(define WIDTH-TO-HEIGHT 1.5)

(define HEIGHT (* WIDTH WIDTH-TO-HEIGHT)) ; 用表达式定义常数

---------------------

作者:CSDoneRight

来源:CSDN

原文:https://blog.csdn.net/CSDoneRight/article/details/90720786

版权声明:本文为博主原创文章,转载请附上博文链接!

原文链接:https://blog.csdn.net/CSDoneRight/article/details/90720786

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Jerry的SAP技术分享

JavaScript实现的水果忍者游戏,支持鼠标操作

智能手机刚刚普及时,水果忍者这款小游戏可谓风靡一时。几年过去了,现在,让我们用纯JavaScript来实现这个水果忍者游戏,就算是为了锤炼我们的JavaScri...

12030
来自专栏Jerry的SAP技术分享

使用JavaScript给对象修改注册监听器

我们在开发一些大型前端项目时,会遇到这样一种情况,某个变量上有个字段。我们想知道是哪一段程序修改了这个变量上的字段。比如全局变量window上我们自定义了一个新...

9330
来自专栏Jerry的SAP技术分享

如何计算CDS view里两个时间戳之间的天数间隔

有个需求:计算这两个时间戳之间的天数间隔,丢弃时间戳年-月-日8位后面的小时:分钟:秒。

10330
来自专栏Jerry的SAP技术分享

webpack-dev-server启动后,localhost:8080返回index.html的原理

webpack-dev-server是一个采用Node.js Express实现的微型服务器, 内部使用webpack-dev-middleware来响应发送到...

17230
来自专栏Jerry的SAP技术分享

一个JSON字符串和文件处理的命令行神器jq,windows和linux都可用

假设我有一个复杂的json文件,用Sublime Text等文本编辑器打开,格式很乱。

6610
来自专栏Jerry的SAP技术分享

很多高手的JavaScript代码里都有array.slice(0),这语句有什么用

版权声明:本文为博主汪子熙原创文章,未经博主允许不得转载。 https://jerry.bl...

11030
来自专栏Jerry的SAP技术分享

Fiori launchpad里tile的个数是如何从后台取回来的

版权声明:本文为博主汪子熙原创文章,未经博主允许不得转载。 https://jerry.bl...

10420
来自专栏Jerry的SAP技术分享

使用JavaScript将当前页面保存成PDF,支持图片和文字的保存

前端开发的朋友们可能会遇到这个需求:将您负责开发的网页的全部内容,包括文字和图片,一起保存成一个PDF文件。如果采用屏幕截图的话,默认Windows操作系统的截...

13640
来自专栏Jerry的SAP技术分享

单步调试理解webpack里通过require加载nodejs原生模块实现原理

在webpack和nodejs里,我们经常使用require函数加载原生模块或者开发人员自定义的模块。

7820
来自专栏Jerry的SAP技术分享

webpack打包过程如何调试?

本文适用于已经会使用webpack的前端开发人员,但是想进一步了解webpack细节和进阶。

10010

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励