編程思維可以分解為4個(gè)部分:?jiǎn)栴}分解,模式識(shí)別,抽象思維,算法設(shè)計(jì)。這是一種高效且實(shí)用的思維方式,尤其在處理看起來(lái)很復(fù)雜的問(wèn)題上,非常有效。生活上處處可以運(yùn)用編程思維。在21世紀(jì)的今天,各項(xiàng)各業(yè)都已經(jīng)和信息技術(shù)相結(jié)合,科學(xué)研究更是如此,由此而產(chǎn)生眾多交叉學(xué)科,編程便成為了交叉學(xué)科的*基本技能。編程思維涵蓋了反映計(jì)算機(jī)科學(xué)之廣泛性的一系列思維活動(dòng),是適合每個(gè)人的一種普遍的認(rèn)識(shí)和一類普適的技能。本教程希望通過(guò)Blockly可視化編程語(yǔ)言作為編程入門工具,通過(guò)類似拼圖的方式構(gòu)建出程序,結(jié)合游戲案例教學(xué),激發(fā)學(xué)生們學(xué)習(xí)編程的興趣,推動(dòng)他們更深入的探究程序設(shè)計(jì)和進(jìn)行算法設(shè)計(jì)。此外,Blockly功能非常強(qiáng)大,可以用它開發(fā)出功能更強(qiáng)大的編程工具,如非常流行的編程工具Scratch、App Inventor等。用Blockly編寫程序的代碼可以自動(dòng)轉(zhuǎn)換成Javascript、Python、PHP、Lua、Dart等語(yǔ)言。筆者將通過(guò)游戲引入課程內(nèi)容講解,再到能力提升,增加了學(xué)習(xí)的趣味性;本教材將全面系統(tǒng)介紹所有知識(shí)點(diǎn),并結(jié)合程序設(shè)計(jì)思維和算法思維講解,由易到難進(jìn)行編寫,將更加適合不同層次的讀者的使用。通過(guò)本教材的編寫,提升學(xué)生學(xué)習(xí)編程的興趣,促使學(xué)生了解計(jì)算機(jī)解決問(wèn)題的一般步驟,理解程序設(shè)計(jì)思維、算法思維在問(wèn)題解決過(guò)程中所發(fā)揮的作用,提高學(xué)生運(yùn)用計(jì)算機(jī)知識(shí)實(shí)現(xiàn)問(wèn)題的抽象、進(jìn)行問(wèn)題求解和形式化描述的能力,*終能使用計(jì)算機(jī)知識(shí)解決本專業(yè)的實(shí)際問(wèn)題。深度融合現(xiàn)代信息技術(shù),構(gòu)建復(fù)合型的教學(xué)內(nèi)容體系,集教材、微課、MOOC、互動(dòng)于一體的新形態(tài)教材。本教材是湖南師范大學(xué)校級(jí)規(guī)劃立項(xiàng)教材。
本教程希望通過(guò)Blockly可視化編程語(yǔ)言作為編程入門工具,通過(guò)類似拼圖的方式構(gòu)建出程序,結(jié)合游戲案例教學(xué),激發(fā)學(xué)生們學(xué)習(xí)編程的興趣,推動(dòng)他們更深入的探究程序設(shè)計(jì)和進(jìn)行算法設(shè)計(jì)。此外,Blockly功能非常強(qiáng)大,可以用它開發(fā)出功能更強(qiáng)大的編程工具,如非常流行的編程工具Scratch、App Inventor等。用Blockly編寫程序的代碼可以自動(dòng)轉(zhuǎn)換成Javascript、Python、PHP、Lua、Dart等語(yǔ)言。筆者將通過(guò)游戲引入課程內(nèi)容講解,再到能力提升,增加了學(xué)習(xí)的趣味性;本教材將全面系統(tǒng)介紹所有知識(shí)點(diǎn),并結(jié)合程序設(shè)計(jì)思維和算法思維講解,由易到難進(jìn)行編寫,將更加適合不同層次的讀者的使用。通過(guò)本教材的編寫,提升學(xué)生學(xué)習(xí)編程的興趣,促使學(xué)生了解計(jì)算機(jī)解決問(wèn)題的一般步驟,理解程序設(shè)計(jì)思維、算法思維在問(wèn)題解決過(guò)程中所發(fā)揮的作用,提高學(xué)生運(yùn)用計(jì)算機(jī)知識(shí)實(shí)現(xiàn)問(wèn)題的抽象、進(jìn)行問(wèn)題求解和形式化描述的能力,*終能使用計(jì)算機(jī)知識(shí)解決本專業(yè)的實(shí)際問(wèn)題。深度融合現(xiàn)代信息技術(shù),構(gòu)建復(fù)合型的教學(xué)內(nèi)容體系,集教材、微課、MOOC、互動(dòng)于一體的新形態(tài)教材。本教材是湖南師范大學(xué)校級(jí)規(guī)劃立項(xiàng)教材。
Blockly作為一種可視化編程語(yǔ)言,通過(guò)類似拼圖的方式構(gòu)建出程序。本書采用體驗(yàn)式教學(xué)方法,將趣味性和知識(shí)性有機(jī)結(jié)合起來(lái)。學(xué)習(xí)的知識(shí)點(diǎn)通過(guò)游戲案例的引入,采用游戲案例知識(shí)點(diǎn)講解模擬實(shí)現(xiàn)能力提升的教學(xué)方式,提升讀者學(xué)習(xí)編程的興趣,訓(xùn)練讀者的程序思維和算法思維,*終達(dá)到解決復(fù)雜工程問(wèn)題的目的。本書前期內(nèi)容以吸引讀者興趣為主,盡量采用游戲和圖形化方式教學(xué),讓讀者在玩的過(guò)程中掌握基本的編程知識(shí),中后期逐步加入較多的編程語(yǔ)法知識(shí)和算法知識(shí)。教材內(nèi)容設(shè)計(jì)、教材案例設(shè)計(jì)和教學(xué)實(shí)踐都遵循以學(xué)生為中心的教學(xué)模式,強(qiáng)調(diào)學(xué)生學(xué)習(xí)的主體地位,以問(wèn)題和應(yīng)用為導(dǎo)向,提升學(xué)生解決工程問(wèn)題的能力,讓學(xué)生不僅理解知識(shí)本身,更知道利用知識(shí)解決實(shí)際工程問(wèn)題。課程內(nèi)容設(shè)計(jì)和教學(xué)實(shí)施做到由淺入深、由易到難、由簡(jiǎn)到繁。以開發(fā)的教學(xué)資源為保障,充分發(fā)揮教師的主導(dǎo)作用、學(xué)生的主體作用,提升學(xué)生自主學(xué)習(xí)和終身學(xué)習(xí)的能力,培養(yǎng)學(xué)生的學(xué)習(xí)興趣和提升教師的教學(xué)質(zhì)量。本書將程序設(shè)計(jì)思維、算法思維和課程思政有機(jī)融合起來(lái)。教程編寫堅(jiān)持立德樹人,再結(jié)合課程知識(shí)點(diǎn),提煉思政元素,讓學(xué)生在學(xué)習(xí)專業(yè)知識(shí)的同時(shí),也培養(yǎng)他們的科學(xué)思維方式,以及正確的人生觀和價(jià)值觀,提升他們正確認(rèn)識(shí)問(wèn)題、分析問(wèn)題和解決問(wèn)題的能力。本書的出版得到了湖南師范大學(xué)2021年校級(jí)規(guī)劃教材建設(shè)Blockly趣味編程與算法思維和*2021年第一批產(chǎn)學(xué)合作協(xié)同育人項(xiàng)目(202101123005)的資助。為方便教師教學(xué),本書配備有豐富的電子資源,包括Blockly-Master和Blockly-Games、源代碼、教學(xué)課件和課后習(xí)題答案等。由于編者水平有限,書中難免有欠妥之處,敬請(qǐng)廣大讀者批評(píng)指正。讀者在使用過(guò)程中若有任何疑問(wèn),可與出版社聯(lián)系或發(fā)郵件(E-mail:powerhope@163.com)與編者聯(lián)系。瞿紹軍2023年1月于長(zhǎng)沙
主編教材2部;主持Google校企合作課程項(xiàng)目3項(xiàng)、校級(jí)教改項(xiàng)目3項(xiàng);指導(dǎo)大學(xué)生創(chuàng)新項(xiàng)目省級(jí)和*各2項(xiàng);分別榮獲2012年、2015年湖南師范大學(xué)教學(xué)成果二等獎(jiǎng);指導(dǎo)學(xué)生在省級(jí)和*競(jìng)賽獲獎(jiǎng)20多項(xiàng)。主持*校企合作專業(yè)綜合改革項(xiàng)目1項(xiàng)、湖南省科技計(jì)劃項(xiàng)目1項(xiàng)、教育廳課題1項(xiàng)和校級(jí)課題5項(xiàng);主持Google橫向課題8項(xiàng);指導(dǎo)大學(xué)生創(chuàng)新項(xiàng)目省級(jí)和*各2項(xiàng);參與國(guó)家自然科學(xué)基金1項(xiàng)和省部級(jí)項(xiàng)目多項(xiàng)。在省級(jí)及以上刊物發(fā)表論文10余篇。
第1章 Blockly簡(jiǎn)介和編程環(huán)境的準(zhǔn)備 1
1.1 Blockly簡(jiǎn)介 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è)計(jì) 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章 運(yùn)算符和表達(dá)式 32
5.1 Blockly運(yùn)算符 32
5.1.1 賦值運(yùn)算符 32
5.1.2 算術(shù)運(yùn)算符 33
5.1.3 求余運(yùn)算符 34
5.1.4 關(guān)系運(yùn)算符 35
5.1.5 邏輯運(yùn)算符 36
5.1.6 運(yùn)算符優(yōu)先級(jí) 37
5.2 表達(dá)式 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 步長(zhǎng)循環(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è)計(jì) 77
8.1 Blockly導(dǎo)入案例 77
8.2 函數(shù) 79
8.2.1 無(wú)參數(shù)無(wú)返回值函數(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 算法時(shí)間復(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 貪心算法求解問(wèn)題的特性 124
13.3 求解步驟 124
13.4 會(huì)場(chǎng)安排 125
13.5 習(xí)題 127
第14章 動(dòng)態(tài)規(guī)劃算法 128
14.1 動(dòng)態(tài)規(guī)劃算法基礎(chǔ) 128
14.1.1 動(dòng)態(tài)規(guī)劃概念 128
14.1.2 動(dòng)態(tài)規(guī)劃性質(zhì) 128
14.1.3 解題方法 128
14.2 兔子繁殖問(wèn)題 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 動(dòng)態(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 檢查答案功能實(shí)現(xiàn) 179
15.6.6 為貓?jiān)黾佣鄠(gè)特征塊 182
15.6.7 增加鴨子拼圖塊 183
15.7 自定義代碼編輯器和轉(zhuǎn)換器 186
15.8 習(xí)題 192