1. 如何调试程序
a. 语法错误
语法错误指的是不符合程序语言的语法,这样的程序无法执行
const draw = function(l) {
//变量len未定义
len = l + 20
log('draw, len', len)
forward(len)
}
draw(100)
//运行结果:
运行时有错误产生,函数调用情况:
C:\Users\jixia\Documents\快编程\lesson03\lesson.gua | 第 161 行 | 全局
draw(100)
C:\Users\jixia\Documents\快编程\lesson03\lesson.gua | 第 156 行 | draw
len = l + 20
变量未定义:
b. 逻辑错误
逻辑错误指的是程序可以运行,但是得到的不是预期的结果
const draw = function(l) {
//要打印变量l的值,错写成数字1
log('draw, l', 1)
forward(1)
}
draw(100)
//运行结果:
draw, l 1 //预期结果为100
c. 调试程序的两个难点
1.程序的运行路径你不知道,要想去办法让它显示出来
- 程序的运行状态(变量的值)你不知道,要去看到它
PS:因此可以使用log()来进行调试,使用log()函数时一定要标记输出值的含义,否则会混淆
2.数组
a. array 可以存储很多元素, 每个元素的值、类型都可以不同
var demoArray = function() {
// array(数组)常用操作
// 创建数组
// 使用 [] 符号, 每个元素用逗号分隔
var a = [1, 3, 4, 5]
// 现在 a 是一个 array, 拥有 4 个元素
// 可以用 .length() 的方式得到 array 的长度
log('求 array 长度', a.length())
// 使用 .length() 可以求出数组的长度(数组中元素的个数)
// 值可以用变量接住
var length = a.length()
log('a.length() ', length)
// 访问元素
// 对于数组中的每个元素, 可以通过下标访问
// 下标就是元素在数组中的序号, 从 0 开始
// 下标访问语法是 [] 中括号
log('用下标访问 array 中的元素')
log('a[0]', a[0])
log('a[1]', a[1])
log('a[2]', a[2])
log('a[3]', a[3])
// 因为一共只有 4 个元素, 所以访问不存在的下标会出错
// log(a[4])
// 手动访问元素当然是低效的
// 可以用循环来访问元素, 这个过程叫 遍历
log('循环访问 array 所有元素')
var i = 0
//这里a.length()在每次循环时,都要计算一次,可以先将a.length赋值给一个变量,再使用
while(i < a.length()) {
log('a[i]', a[i])
i = i + 1
}
}
//运行结果:
求 array 长度 4
a.length() 4
用下标访问 array 中的元素
a[0] 1
a[1] 3
a[2] 4
a[3] 5
循环访问 array 所有元素
a[i] 1
a[i] 3
a[i] 4
a[i] 5
b.可以用数组的 push 函数往列表末尾插入一个元素,并且, 这个新元素可以是任意类型, 这里是一个字符串 ,数组类型的变量可以用 .函数() 的方式来进行操作
var demoArrayAdd = function() {
var a = [1, 3, 4, 5]
a.add('新元素')
log('a push ', a)
// [1, 3, 4, 5, '新元素']
a.add(0)
log('a.add(0)', a)
// [1, 3, 4, 5, '新元素', 0]
// 多添加几个元素
a.add(12)
a.add(34)
a.add(56)
log('a.add 12 34 56', a)
}
//运行结果:
a push [1, 3, 4, 5, '新元素']
a.add(0) [1, 3, 4, 5, '新元素', 0]
a.add 12 34 56 [1, 3, 4, 5, '新元素', 0, 12, 34, 56]
3. 字符串
a. 串可以判断相等、可以相加拼接,可以用加号进行拼接,或者使用字符串有一个 .format 函数可以替换其中的 {}
var name = 'gua'
var hello = '{}, 你好'.format(name)
// 简单说来, 就是 {} 会被变量 name 替换形成新字符串
log('format dmeo ', name)
//运行结果:
format dmeo gua
b. 字符串相当于一个 array, 可以用下标访问,也可以使用循环进行遍历,字符串不能使用下标来赋值,只能拼接起来生成一个新的字符串
c. 字符串可以用 .cut 函数来获取子字符串, array 也可以这样切片,可以省略结束下标参数, 表示取到底
PS: cut 操作不会影响原来的字符串