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
版权声明:本文为博主原创文章,转载请附上博文链接!
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。