编程思维可以分解为4个部分:问题分解,模式识别,抽象思维,算法设计。这是一种高效且实用的思维方式,尤其在处理看起来很复杂的问题上,非常有效。生活上处处可以运用编程思维。在21世纪的今天,各项各业都已经和信息技术相结合,科学研究更是如此,由此而产生众多交叉学科,编程便成为了交叉学科的*基本技能。编程思维涵盖了反映计算机科学之广泛性的一系列思维活动,是适合每个人的一种普遍的认识和一类普适的技能。本教程希望通过Blockly可视化编程语言作为编程入门工具,通过类似拼图的方式构建出程序,结合游戏案例教学,激发学生们学习编程的兴趣,推动他们更深入的探究程序设计和进行算法设计。此外,Blockly功能非常强大,可以用它开发出功能更强大的编程工具,如非常流行的编程工具Scratch、App Inventor等。用Blockly编写程序的代码可以自动转换成Javascript、Python、PHP、Lua、Dart等语言。笔者将通过游戏引入课程内容讲解,再到能力提升,增加了学习的趣味性;本教材将全面系统介绍所有知识点,并结合程序设计思维和算法思维讲解,由易到难进行编写,将更加适合不同层次的读者的使用。通过本教材的编写,提升学生学习编程的兴趣,促使学生了解计算机解决问题的一般步骤,理解程序设计思维、算法思维在问题解决过程中所发挥的作用,提高学生运用计算机知识实现问题的抽象、进行问题求解和形式化描述的能力,*终能使用计算机知识解决本专业的实际问题。深度融合现代信息技术,构建复合型的教学内容体系,集教材、微课、MOOC、互动于一体的新形态教材。本教材是湖南师范大学校级规划立项教材。
本教程希望通过Blockly可视化编程语言作为编程入门工具,通过类似拼图的方式构建出程序,结合游戏案例教学,激发学生们学习编程的兴趣,推动他们更深入的探究程序设计和进行算法设计。此外,Blockly功能非常强大,可以用它开发出功能更强大的编程工具,如非常流行的编程工具Scratch、App Inventor等。用Blockly编写程序的代码可以自动转换成Javascript、Python、PHP、Lua、Dart等语言。笔者将通过游戏引入课程内容讲解,再到能力提升,增加了学习的趣味性;本教材将全面系统介绍所有知识点,并结合程序设计思维和算法思维讲解,由易到难进行编写,将更加适合不同层次的读者的使用。通过本教材的编写,提升学生学习编程的兴趣,促使学生了解计算机解决问题的一般步骤,理解程序设计思维、算法思维在问题解决过程中所发挥的作用,提高学生运用计算机知识实现问题的抽象、进行问题求解和形式化描述的能力,*终能使用计算机知识解决本专业的实际问题。深度融合现代信息技术,构建复合型的教学内容体系,集教材、微课、MOOC、互动于一体的新形态教材。本教材是湖南师范大学校级规划立项教材。
Blockly作为一种可视化编程语言,通过类似拼图的方式构建出程序。本书采用体验式教学方法,将趣味性和知识性有机结合起来。学习的知识点通过游戏案例的引入,采用游戏案例知识点讲解模拟实现能力提升的教学方式,提升读者学习编程的兴趣,训练读者的程序思维和算法思维,*终达到解决复杂工程问题的目的。本书前期内容以吸引读者兴趣为主,尽量采用游戏和图形化方式教学,让读者在玩的过程中掌握基本的编程知识,中后期逐步加入较多的编程语法知识和算法知识。教材内容设计、教材案例设计和教学实践都遵循以学生为中心的教学模式,强调学生学习的主体地位,以问题和应用为导向,提升学生解决工程问题的能力,让学生不仅理解知识本身,更知道利用知识解决实际工程问题。课程内容设计和教学实施做到由浅入深、由易到难、由简到繁。以开发的教学资源为保障,充分发挥教师的主导作用、学生的主体作用,提升学生自主学习和终身学习的能力,培养学生的学习兴趣和提升教师的教学质量。本书将程序设计思维、算法思维和课程思政有机融合起来。教程编写坚持立德树人,再结合课程知识点,提炼思政元素,让学生在学习专业知识的同时,也培养他们的科学思维方式,以及正确的人生观和价值观,提升他们正确认识问题、分析问题和解决问题的能力。本书的出版得到了湖南师范大学2021年校级规划教材建设Blockly趣味编程与算法思维和*2021年第一批产学合作协同育人项目(202101123005)的资助。为方便教师教学,本书配备有丰富的电子资源,包括Blockly-Master和Blockly-Games、源代码、教学课件和课后习题答案等。由于编者水平有限,书中难免有欠妥之处,敬请广大读者批评指正。读者在使用过程中若有任何疑问,可与出版社联系或发邮件(E-mail:powerhope@163.com)与编者联系。瞿绍军2023年1月于长沙
主编教材2部;主持Google校企合作课程项目3项、校级教改项目3项;指导大学生创新项目省级和*各2项;分别荣获2012年、2015年湖南师范大学教学成果二等奖;指导学生在省级和*竞赛获奖20多项。主持*校企合作专业综合改革项目1项、湖南省科技计划项目1项、教育厅课题1项和校级课题5项;主持Google横向课题8项;指导大学生创新项目省级和*各2项;参与国家自然科学基金1项和省部级项目多项。在省级及以上刊物发表论文10余篇。
第1章 Blockly简介和编程环境的准备 1
1.1 Blockly简介 1
1.2 Blockly编程环境 3
1.3 Blockly代码编辑器的使用 7
1.4 代码块的操作方法 9
1.5 课程学习方法 11
1.6 习题 12
第2章 输入和输出 13
2.1 Blockly输入 13
2.2 Blockly输出 14
2.3 习题 16
第3章 顺序结构 17
3.1 导入案例:Blockly Games迷宫游戏 17
3.2 顺序结构程序设计 19
3.3 习题 21
第4章 变量和数据类型 22
4.1 变量 22
4.1.1 变量的创建 22
4.1.2 变量的使用 23
4.2 Blockly数据类型 26
4.2.1 数字 26
4.2.2 文本 29
4.2.3 逻辑类型 30
4.3 习题 31
第5章 运算符和表达式 32
5.1 Blockly运算符 32
5.1.1 赋值运算符 32
5.1.2 算术运算符 33
5.1.3 求余运算符 34
5.1.4 关系运算符 35
5.1.5 逻辑运算符 36
5.1.6 运算符优先级 37
5.2 表达式 37
5.3 习题 38
第6章 选择结构 39
6.1 Blockly导入案例 39
6.2 单分支选择结构 43
6.3 双分支选择结构 45
6.4 多分支选择结构 48
6.5 选择结构嵌套 52
6.6 习题 54
第7章 循环结构 55
7.1 重复次数循环 55
7.1.1 Blockly导入案例 55
7.1.2 重复次数循环 58
7.2 步长循环 59
7.3 条件循环 60
7.3.1 Blockly导入案例 60
7.3.2 条件循环 63
7.4 直到型循环 64
7.4.1 Blockly导入案例 64
7.4.2 直到型循环 66
7.5 中断与继续 67
7.5.1 中断循环 67
7.5.2 继续下一轮循环 69
7.6 循环嵌套 70
7.6.1 Blockly导入案例 70
7.6.2 循环嵌套 72
7.7 列表循环 73
7.8 循环的应用 74
7.9 习题 76
第8章 函数程序设计 77
8.1 Blockly导入案例 77
8.2 函数 79
8.2.1 无参数无返回值函数 80
8.2.2 带参数函数 81
8.2.3 带返回值函数 82
8.2.4 如果……返回…… 83
8.2.4 递归函数 83
8.3 断言 84
8.4 数学函数 85
8.5 习题 90
第9章 数据结构 91
9.1 列表 91
9.1.1 创建列表 92
9.1.2 一维列表 92
9.1.3 二维列表 95
9.1.4 列表函数 96
9.1.5 列表应用 104
9.2 文本 105
9.2.1 文本的基本用法 105
9.2.2 大小写转换及消除空白 106
9.2.3 寻找文本 107
9.2.4 从文本中获取字符 107
9.2.5 从文本中取得子串 108
9.3 习题 109
第10章 算法复杂度分析 110
10.1 算法复杂度 110
10.2 算法时间复杂度 111
10.3 算法空间复杂度 114
10.4 习题 114
第11章 排序算法 116
11.1 冒泡排序 116
11.2 插入排序 117
11.3 习题 119
第12章 分治算法 120
12.1 分治算法思想 120
12.2 二分查找 120
12.3 习题 123
第13章 贪心算法 124
13.1 基本思想 124
13.2 贪心算法求解问题的特性 124
13.3 求解步骤 124
13.4 会场安排 125
13.5 习题 127
第14章 动态规划算法 128
14.1 动态规划算法基础 128
14.1.1 动态规划概念 128
14.1.2 动态规划性质 128
14.1.3 解题方法 128
14.2 兔子繁殖问题 129
14.3 数字三角形 130
14.4 习题 132
第15章 Blockly的二次开发 133
15.1 块工厂 133
15.1.1 自定义块 134
15.1.2 输入 135
15.1.3 字段 136
15.1.4 类型 141
15.1.5 颜色 142
15.1.6 输入类型 142
15.1.7 连接方式 143
15.1.8 自定义块示例 144
15.1.9 保存自定义块 145
15.2 块导出器 145
15.3 工作区工厂 146
15.4 配置工作区 149
15.5 自定义工作区和工具箱代码分析 150
15.5.1 固定尺寸工作区 150
15.5.2 可调尺寸工作区 153
15.5.3 工具箱配置 154
15.5.4 类别 155
15.5.5 动态类别 156
15.5.6 添加自定义块 157
15.5.7 代码生成器 163
15.5.8 执行代码 167
15.5.9 网格 170
15.5.10 缩放 171
15.6 puzzle游戏开发 172
15.6.1 自定义块 172
15.6.2 导出代码块 175
15.6.3 导出工作区 177
15.6.4 整理文件和代码 178
15.6.5 检查答案功能实现 179
15.6.6 为猫增加多个特征块 182
15.6.7 增加鸭子拼图块 183
15.7 自定义代码编辑器和转换器 186
15.8 习题 192