編程思維可以分解為4個部分:問題分解,模式識別,抽象思維,算法設(shè)計。這是一種高效且實用的思維方式,尤其在處理看起來很復(fù)雜的問題上,非常有效。生活上處處可以運用編程思維。在21世紀的今天,各項各業(yè)都已經(jīng)和信息技術(shù)相結(jié)合,科學(xué)研究更是如此,由此而產(chǎn)生眾多交叉學(xué)科,編程便成為了交叉學(xué)科的*基本技能。編程思維涵蓋了反映計算機科學(xué)之廣泛性的一系列思維活動,是適合每個人的一種普遍的認識和一類普適的技能。本教程希望通過Blockly可視化編程語言作為編程入門工具,通過類似拼圖的方式構(gòu)建出程序,結(jié)合游戲案例教學(xué),激發(fā)學(xué)生們學(xué)習(xí)編程的興趣,推動他們更深入的探究程序設(shè)計和進行算法設(shè)計。此外,Blockly功能非常強大,可以用它開發(fā)出功能更強大的編程工具,如非常流行的編程工具Scratch、App Inventor等。用Blockly編寫程序的代碼可以自動轉(zhuǎn)換成Javascript、Python、PHP、Lua、Dart等語言。筆者將通過游戲引入課程內(nèi)容講解,再到能力提升,增加了學(xué)習(xí)的趣味性;本教材將全面系統(tǒng)介紹所有知識點,并結(jié)合程序設(shè)計思維和算法思維講解,由易到難進行編寫,將更加適合不同層次的讀者的使用。通過本教材的編寫,提升學(xué)生學(xué)習(xí)編程的興趣,促使學(xué)生了解計算機解決問題的一般步驟,理解程序設(shè)計思維、算法思維在問題解決過程中所發(fā)揮的作用,提高學(xué)生運用計算機知識實現(xiàn)問題的抽象、進行問題求解和形式化描述的能力,*終能使用計算機知識解決本專業(yè)的實際問題。深度融合現(xiàn)代信息技術(shù),構(gòu)建復(fù)合型的教學(xué)內(nèi)容體系,集教材、微課、MOOC、互動于一體的新形態(tài)教材。本教材是湖南師范大學(xué)校級規(guī)劃立項教材。
本教程希望通過Blockly可視化編程語言作為編程入門工具,通過類似拼圖的方式構(gòu)建出程序,結(jié)合游戲案例教學(xué),激發(fā)學(xué)生們學(xué)習(xí)編程的興趣,推動他們更深入的探究程序設(shè)計和進行算法設(shè)計。此外,Blockly功能非常強大,可以用它開發(fā)出功能更強大的編程工具,如非常流行的編程工具Scratch、App Inventor等。用Blockly編寫程序的代碼可以自動轉(zhuǎn)換成Javascript、Python、PHP、Lua、Dart等語言。筆者將通過游戲引入課程內(nèi)容講解,再到能力提升,增加了學(xué)習(xí)的趣味性;本教材將全面系統(tǒng)介紹所有知識點,并結(jié)合程序設(shè)計思維和算法思維講解,由易到難進行編寫,將更加適合不同層次的讀者的使用。通過本教材的編寫,提升學(xué)生學(xué)習(xí)編程的興趣,促使學(xué)生了解計算機解決問題的一般步驟,理解程序設(shè)計思維、算法思維在問題解決過程中所發(fā)揮的作用,提高學(xué)生運用計算機知識實現(xiàn)問題的抽象、進行問題求解和形式化描述的能力,*終能使用計算機知識解決本專業(yè)的實際問題。深度融合現(xiàn)代信息技術(shù),構(gòu)建復(fù)合型的教學(xué)內(nèi)容體系,集教材、微課、MOOC、互動于一體的新形態(tài)教材。本教材是湖南師范大學(xué)校級規(guī)劃立項教材。
Blockly作為一種可視化編程語言,通過類似拼圖的方式構(gòu)建出程序。本書采用體驗式教學(xué)方法,將趣味性和知識性有機結(jié)合起來。學(xué)習(xí)的知識點通過游戲案例的引入,采用游戲案例知識點講解模擬實現(xiàn)能力提升的教學(xué)方式,提升讀者學(xué)習(xí)編程的興趣,訓(xùn)練讀者的程序思維和算法思維,*終達到解決復(fù)雜工程問題的目的。本書前期內(nèi)容以吸引讀者興趣為主,盡量采用游戲和圖形化方式教學(xué),讓讀者在玩的過程中掌握基本的編程知識,中后期逐步加入較多的編程語法知識和算法知識。教材內(nèi)容設(shè)計、教材案例設(shè)計和教學(xué)實踐都遵循以學(xué)生為中心的教學(xué)模式,強調(diào)學(xué)生學(xué)習(xí)的主體地位,以問題和應(yīng)用為導(dǎo)向,提升學(xué)生解決工程問題的能力,讓學(xué)生不僅理解知識本身,更知道利用知識解決實際工程問題。課程內(nèi)容設(shè)計和教學(xué)實施做到由淺入深、由易到難、由簡到繁。以開發(fā)的教學(xué)資源為保障,充分發(fā)揮教師的主導(dǎo)作用、學(xué)生的主體作用,提升學(xué)生自主學(xué)習(xí)和終身學(xué)習(xí)的能力,培養(yǎng)學(xué)生的學(xué)習(xí)興趣和提升教師的教學(xué)質(zhì)量。本書將程序設(shè)計思維、算法思維和課程思政有機融合起來。教程編寫堅持立德樹人,再結(jié)合課程知識點,提煉思政元素,讓學(xué)生在學(xué)習(xí)專業(yè)知識的同時,也培養(yǎng)他們的科學(xué)思維方式,以及正確的人生觀和價值觀,提升他們正確認識問題、分析問題和解決問題的能力。本書的出版得到了湖南師范大學(xué)2021年校級規(guī)劃教材建設(shè)Blockly趣味編程與算法思維和*2021年第一批產(chǎn)學(xué)合作協(xié)同育人項目(202101123005)的資助。為方便教師教學(xué),本書配備有豐富的電子資源,包括Blockly-Master和Blockly-Games、源代碼、教學(xué)課件和課后習(xí)題答案等。由于編者水平有限,書中難免有欠妥之處,敬請廣大讀者批評指正。讀者在使用過程中若有任何疑問,可與出版社聯(lián)系或發(fā)郵件(E-mail:powerhope@163.com)與編者聯(lián)系。瞿紹軍2023年1月于長沙
主編教材2部;主持Google校企合作課程項目3項、校級教改項目3項;指導(dǎo)大學(xué)生創(chuàng)新項目省級和*各2項;分別榮獲2012年、2015年湖南師范大學(xué)教學(xué)成果二等獎;指導(dǎo)學(xué)生在省級和*競賽獲獎20多項。主持*校企合作專業(yè)綜合改革項目1項、湖南省科技計劃項目1項、教育廳課題1項和校級課題5項;主持Google橫向課題8項;指導(dǎo)大學(xué)生創(chuàng)新項目省級和*各2項;參與國家自然科學(xué)基金1項和省部級項目多項。在省級及以上刊物發(fā)表論文10余篇。
第1章 Blockly簡介和編程環(huán)境的準備 1
1.1 Blockly簡介 1
1.2 Blockly編程環(huán)境 3
1.3 Blockly代碼編輯器的使用 7
1.4 代碼塊的操作方法 9
1.5 課程學(xué)習(xí)方法 11
1.6 習(xí)題 12
第2章 輸入和輸出 13
2.1 Blockly輸入 13
2.2 Blockly輸出 14
2.3 習(xí)題 16
第3章 順序結(jié)構(gòu) 17
3.1 導(dǎo)入案例:Blockly Games迷宮游戲 17
3.2 順序結(jié)構(gòu)程序設(shè)計 19
3.3 習(xí)題 21
第4章 變量和數(shù)據(jù)類型 22
4.1 變量 22
4.1.1 變量的創(chuàng)建 22
4.1.2 變量的使用 23
4.2 Blockly數(shù)據(jù)類型 26
4.2.1 數(shù)字 26
4.2.2 文本 29
4.2.3 邏輯類型 30
4.3 習(xí)題 31
第5章 運算符和表達式 32
5.1 Blockly運算符 32
5.1.1 賦值運算符 32
5.1.2 算術(shù)運算符 33
5.1.3 求余運算符 34
5.1.4 關(guān)系運算符 35
5.1.5 邏輯運算符 36
5.1.6 運算符優(yōu)先級 37
5.2 表達式 37
5.3 習(xí)題 38
第6章 選擇結(jié)構(gòu) 39
6.1 Blockly導(dǎo)入案例 39
6.2 單分支選擇結(jié)構(gòu) 43
6.3 雙分支選擇結(jié)構(gòu) 45
6.4 多分支選擇結(jié)構(gòu) 48
6.5 選擇結(jié)構(gòu)嵌套 52
6.6 習(xí)題 54
第7章 循環(huán)結(jié)構(gòu) 55
7.1 重復(fù)次數(shù)循環(huán) 55
7.1.1 Blockly導(dǎo)入案例 55
7.1.2 重復(fù)次數(shù)循環(huán) 58
7.2 步長循環(huán) 59
7.3 條件循環(huán) 60
7.3.1 Blockly導(dǎo)入案例 60
7.3.2 條件循環(huán) 63
7.4 直到型循環(huán) 64
7.4.1 Blockly導(dǎo)入案例 64
7.4.2 直到型循環(huán) 66
7.5 中斷與繼續(xù) 67
7.5.1 中斷循環(huán) 67
7.5.2 繼續(xù)下一輪循環(huán) 69
7.6 循環(huán)嵌套 70
7.6.1 Blockly導(dǎo)入案例 70
7.6.2 循環(huán)嵌套 72
7.7 列表循環(huán) 73
7.8 循環(huán)的應(yīng)用 74
7.9 習(xí)題 76
第8章 函數(shù)程序設(shè)計 77
8.1 Blockly導(dǎo)入案例 77
8.2 函數(shù) 79
8.2.1 無參數(shù)無返回值函數(shù) 80
8.2.2 帶參數(shù)函數(shù) 81
8.2.3 帶返回值函數(shù) 82
8.2.4 如果……返回…… 83
8.2.4 遞歸函數(shù) 83
8.3 斷言 84
8.4 數(shù)學(xué)函數(shù) 85
8.5 習(xí)題 90
第9章 數(shù)據(jù)結(jié)構(gòu) 91
9.1 列表 91
9.1.1 創(chuàng)建列表 92
9.1.2 一維列表 92
9.1.3 二維列表 95
9.1.4 列表函數(shù) 96
9.1.5 列表應(yīng)用 104
9.2 文本 105
9.2.1 文本的基本用法 105
9.2.2 大小寫轉(zhuǎn)換及消除空白 106
9.2.3 尋找文本 107
9.2.4 從文本中獲取字符 107
9.2.5 從文本中取得子串 108
9.3 習(xí)題 109
第10章 算法復(fù)雜度分析 110
10.1 算法復(fù)雜度 110
10.2 算法時間復(fù)雜度 111
10.3 算法空間復(fù)雜度 114
10.4 習(xí)題 114
第11章 排序算法 116
11.1 冒泡排序 116
11.2 插入排序 117
11.3 習(xí)題 119
第12章 分治算法 120
12.1 分治算法思想 120
12.2 二分查找 120
12.3 習(xí)題 123
第13章 貪心算法 124
13.1 基本思想 124
13.2 貪心算法求解問題的特性 124
13.3 求解步驟 124
13.4 會場安排 125
13.5 習(xí)題 127
第14章 動態(tài)規(guī)劃算法 128
14.1 動態(tài)規(guī)劃算法基礎(chǔ) 128
14.1.1 動態(tài)規(guī)劃概念 128
14.1.2 動態(tài)規(guī)劃性質(zhì) 128
14.1.3 解題方法 128
14.2 兔子繁殖問題 129
14.3 數(shù)字三角形 130
14.4 習(xí)題 132
第15章 Blockly的二次開發(fā) 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 塊導(dǎo)出器 145
15.3 工作區(qū)工廠 146
15.4 配置工作區(qū) 149
15.5 自定義工作區(qū)和工具箱代碼分析 150
15.5.1 固定尺寸工作區(qū) 150
15.5.2 可調(diào)尺寸工作區(qū) 153
15.5.3 工具箱配置 154
15.5.4 類別 155
15.5.5 動態(tài)類別 156
15.5.6 添加自定義塊 157
15.5.7 代碼生成器 163
15.5.8 執(zhí)行代碼 167
15.5.9 網(wǎng)格 170
15.5.10 縮放 171
15.6 puzzle游戲開發(fā) 172
15.6.1 自定義塊 172
15.6.2 導(dǎo)出代碼塊 175
15.6.3 導(dǎo)出工作區(qū) 177
15.6.4 整理文件和代碼 178
15.6.5 檢查答案功能實現(xiàn) 179
15.6.6 為貓增加多個特征塊 182
15.6.7 增加鴨子拼圖塊 183
15.7 自定義代碼編輯器和轉(zhuǎn)換器 186
15.8 習(xí)題 192