關(guān)于我們
書單推薦
新書推薦
|
零基礎(chǔ)學(xué)Scratch編程 本書面向沒有任何程序設(shè)計(jì)基礎(chǔ)的四年級以上小學(xué)生。本書內(nèi)容分為基礎(chǔ)技能、思維訓(xùn)練、創(chuàng)新應(yīng)用三個部分,小讀者按章節(jié)內(nèi)容提示一步步的自學(xué)和實(shí)踐,逐步掌握和熟練Scratch程序設(shè)計(jì)。在本書的學(xué)習(xí)過程中,小讀者的自學(xué)能力、計(jì)算思維、創(chuàng)新創(chuàng)意和編程實(shí)踐能力均能得到有效地鍛煉和提高,為將來進(jìn)一步學(xué)習(xí)計(jì)算機(jī)專業(yè)知識與技術(shù)打下扎實(shí)的基礎(chǔ)。本書編程內(nèi)容少量來自于Scratch老版本自帶的英文幫助,其他均為原創(chuàng)設(shè)計(jì),新穎有趣,符合少兒心理特點(diǎn)。 前言 某天,上小學(xué)二年級的兒子突然對我說: “爸爸,我想學(xué)編程。”其實(shí)更早時候我就在網(wǎng)上看到過有關(guān)兒童學(xué)習(xí)編程的一篇文章,其中提到了幾個軟件,都是充滿游戲風(fēng)格,著重設(shè)計(jì)與規(guī)劃,以完成特定任務(wù)為目的的模式。這些軟件并沒有涉及指令或語句的概念,所傳授和培養(yǎng)的是一種更廣義的“編程”(也許翻譯為“規(guī)劃”或“設(shè)計(jì)”更合適)思維和能力。文章指出幾歲孩子就可以通過這些軟件學(xué)習(xí)編程。 兒子還在上幼兒園時就在手機(jī)上玩過LightBot游戲。當(dāng)時給他玩的是初級版本,但已經(jīng)有循環(huán)、函數(shù)調(diào)用等功能,比起網(wǎng)上那篇文章所介紹的軟件,更像計(jì)算機(jī)編程。LightBot游戲中的小機(jī)器人能夠按照玩家編寫的指令序列執(zhí)行動作,對玩家的編程成果給予直接且明確的反饋,因此即使我沒有給兒子講過任何編程概念,他也完全能夠在游戲軟件中學(xué)習(xí)、理解和掌握那些編程元素,通過不斷嘗試來修正自己的程序,完成游戲中的所有關(guān)卡任務(wù)?梢,一個吸引人的有趣平臺加上直觀的反饋,完全能夠讓孩子在玩中學(xué)習(xí)編程,而且是學(xué)習(xí)相對抽象的計(jì)算機(jī)指令的編程。 我在清華大學(xué)計(jì)算機(jī)系取得本科、碩士和博士學(xué)位,在計(jì)算機(jī)系教程序設(shè)計(jì)課程,而且負(fù)責(zé)程序設(shè)計(jì)競賽,自然早想過什么時候讓孩子學(xué)編程、學(xué)什么程序設(shè)計(jì)語言、怎么學(xué)這類問題。雖然還沒有明確的答案和計(jì)劃,但可以肯定的是——小學(xué)階段就可以學(xué)編程,因?yàn)楹芏嗑幊痰母拍畈⒉桓呱。更小年齡的孩子雖然也可以學(xué)一些編程,但受認(rèn)知能力所限,學(xué)不了太多,不得不淺嘗輒止。而對于小學(xué)生,特別是小學(xué)中高年級學(xué)生來說,完全能夠在相當(dāng)長的一段時間內(nèi)有計(jì)劃地學(xué)習(xí)一定量的內(nèi)容,而且所學(xué)內(nèi)容足以用來進(jìn)行豐富的創(chuàng)作或解決一些實(shí)際問題。同時,正因?yàn)閷W(xué)習(xí)者是小學(xué)生,往往教與學(xué)雙方都更關(guān)注基礎(chǔ)和必要的編程元素,不易受細(xì)枝末節(jié)的干擾而偏離“大道”。 我相信和追求“快樂學(xué)習(xí)”,希望學(xué)習(xí)路徑方向正確,不走彎路。我認(rèn)為C/C++語言、Java語言用作學(xué)習(xí)編程的入門語言并不理想,因?yàn)槌鯇W(xué)者難以用所學(xué)的內(nèi)容編寫出有趣的程序,即使最簡單的“Hello world!”程序也會留給初學(xué)者一大堆問題,而且這些問題的答案不是初學(xué)者適合去了解的。如果未來想在程序設(shè)計(jì)方面往更專業(yè)一些的方向發(fā)展,我認(rèn)為不宜在學(xué)習(xí)C/C++語言、Java語言之前就接觸Python語言。我曾考慮過讓兒子學(xué)習(xí)Logo語言,我初中時就學(xué)過它,有一定了解,但Logo語言除了畫簡單圖形外好像也沒有其他直觀有趣的功能!澳阆雽W(xué)編程,很好呀!但是你具體想學(xué)些什么呢?”我問兒子。 “我想學(xué)Scratch!眱鹤雍敛华q豫地回答。我聽說過Scratch,但沒有專門了解過。兒子想學(xué)Scratch,是因?yàn)閷W(xué)校高年級學(xué)生在風(fēng)采展示的活動中展示了一些用Scratch編寫的程序,引起了他的興趣。我告訴兒子: “沒問題。爸爸可以幫你了解一下,看看怎么來學(xué)! 零基礎(chǔ)學(xué)Scratch編程前言我從MIT的Scratch網(wǎng)站上下載了Scratch 2離線編輯器,從軟件自帶的教程開始了解。教程由若干很小的編程任務(wù)組成,各個任務(wù)大體上按照從最簡單到略復(fù)雜的順序排列。我一步一步照著做,完成前幾個小任務(wù)就已經(jīng)熟悉了Scratch的常用積木語句。我認(rèn)為這些小的編程任務(wù)非常適合用來進(jìn)行Scratch入門教學(xué),對兒子來說,只需要幫他克服語言上的障礙——將英文翻譯成中文。很自然地,我將教程內(nèi)容展開并翻譯做成PowerPoint幻燈片,同時把自己實(shí)踐時所想的一些問題,也總結(jié)并在幻燈片中提出來,鼓勵兒子通過動手嘗試來找到答案。一些我認(rèn)為基礎(chǔ)和重要的程序設(shè)計(jì)概念和思想,在編程任務(wù)涉及時,及時在幻燈片中提出來。 我將筆記本電腦與家里的電視機(jī)連接,教兒子用雙屏模式來學(xué)習(xí),一個屏幕播放PPT幻燈片,另一個屏幕進(jìn)行Scratch編程操作。PPT幻燈片的動畫控制與頁面切換,既避免了書本內(nèi)容的一覽無余,又能形成一種有控制的交流,還能讓孩子自己來主導(dǎo)學(xué)習(xí)的進(jìn)度。兒子對Scratch的學(xué)習(xí)就這樣開始了,基本上是一種自學(xué)的模式,當(dāng)他實(shí)踐遇到困難時才找我?guī)兔鉀Q。 兒子學(xué)Scratch學(xué)得很快樂。教學(xué)實(shí)驗(yàn)室的同事知道后,向我要了幻燈片給自己兒子學(xué)。他兒子也學(xué)得很快樂,而且會主動與老爸討論“什么是變量”之類的問題。同事建議:可以開個班,讓系里老師們的孩子一起來學(xué)Scratch。清華大學(xué)計(jì)算機(jī)系教職工孩子們的第一期編程學(xué)習(xí)班就這樣開始了,每周五晚上一次課,持續(xù)大半個秋季學(xué)期。在學(xué)習(xí)內(nèi)容上,除了更新最初的PPT幻燈片以外,我認(rèn)真地規(guī)劃了各次課的內(nèi)容,一是考慮新知識循序漸進(jìn)地分布在各次課程中,二是考慮后面的課程內(nèi)容能夠起到復(fù)習(xí)鞏固前面課程內(nèi)容的作用。課程內(nèi)容前期主要來自于Scratch教程,后期來自于自己的設(shè)計(jì)安排。教學(xué)方式同樣采取雙屏自學(xué)模式,孩子們利用機(jī)房的計(jì)算機(jī)播放PPT幻燈片,同時在自帶的筆記本電腦上進(jìn)行Scratch編程操作。這個編程學(xué)習(xí)班的助教隊(duì)伍超級豪華,因?yàn)楹⒆觽兊募议L,即清華大學(xué)計(jì)算機(jī)系的老師們,可以陪著孩子一起參加這個編程學(xué)習(xí)班輔導(dǎo)自己孩子,因此這個編程學(xué)習(xí)班也是一個親子活動班。系里老師們都沒有用過Scratch,對這種編程語言也很感興趣,有時兩位大牌教授會丟下孩子,相互討論眼前的Scratch編程任務(wù)。這并不奇怪,我在學(xué)習(xí)了解Scratch的過程中,同樣很快就喜歡上了它。每次課程中,我會在機(jī)房走動,了解各個孩子的自學(xué)進(jìn)展,解答他們的問題,幫他們排除一些困難,不過更多時候是引導(dǎo)他們自己來排查問題解決困難。一些共性的問題,我會總結(jié)并在下一次課程時講解。這樣的編程學(xué)習(xí)班得到了孩子和家長們廣泛的好評,有兩次我出差無法上課,還有家長主動代課,并且提前與我討論并準(zhǔn)備PPT幻燈片。同樣的課程內(nèi)容,后來又開了一期編程學(xué)習(xí)班,為了達(dá)到更好的教學(xué)效果,還專門為每次課程設(shè)計(jì)了課后練習(xí)。本書的第一部分就來自于這一期編程學(xué)習(xí)班的內(nèi)容。 在第一期編程學(xué)習(xí)班孩子與家長們的要求下,我開設(shè)了后續(xù)的Scratch編程學(xué)習(xí)班。在這后續(xù)的“提高組”(第一期相應(yīng)稱為“入門組”)編程學(xué)習(xí)班上,我主要讓孩子們體驗(yàn)編程與數(shù)學(xué)的關(guān)系,了解計(jì)算機(jī)解決問題的方式方法,普及一些基礎(chǔ)而重要的程序設(shè)計(jì)算法思想,為進(jìn)一步深入學(xué)習(xí)程序設(shè)計(jì)甚至是信息學(xué)競賽打基礎(chǔ)。提高組編程學(xué)習(xí)班仍然采用PPT幻燈片自學(xué)的方式,教學(xué)內(nèi)容形成了本書的第二部分。 在組織孩子們學(xué)習(xí)Scratch編程的過程中,我看到了孩子們的學(xué)習(xí)能力和創(chuàng)新能力,多次從心底為他們的優(yōu)異表現(xiàn)喝彩。這兩種能力也是我采用這種教學(xué)模式所希望激發(fā)和培養(yǎng)的能力,相信對孩子們的一生都有裨益。言歸正傳,該系統(tǒng)地介紹一下本書的內(nèi)容了。本書共20章,分為三個部分。第1章~第10章為第一部分“基礎(chǔ)技能”,主要介紹Scratch中角色、造型等基礎(chǔ)概念,由淺入深地引入各類積木語句的實(shí)踐應(yīng)用;第11章~第16章為第二部分“思維訓(xùn)練”,從繪制圖形入手,強(qiáng)化數(shù)學(xué)思維,介紹遞歸、遞推、枚舉、篩法、二分法等算法思想;第17章~第20章為第三部分“應(yīng)用實(shí)踐”,是Scratch編程實(shí)踐的綜合與提高。 本書的前兩個部分分別來源于前文提到的“入門組”和“提高組”編程學(xué)習(xí)班的課程內(nèi)容,沒有任何編程經(jīng)驗(yàn)的孩子也能夠輕松地從第1章開始學(xué)習(xí)。在寫作本書過程中,官網(wǎng)的Scratch 2離線編輯器改版升級為Scratch 3桌面編輯器,在界面上有較大改動,在功能上也有變化,經(jīng)過考慮將章節(jié)內(nèi)容都更新為與新版編輯器一致。第三部分的內(nèi)容來源于孩子們學(xué)習(xí)Scratch過程中實(shí)際編寫的游戲項(xiàng)目,以及我本人特別想用Scratch實(shí)現(xiàn)的功能(我實(shí)在太喜歡Scratch這一編程語言了)。與PPT幻燈片相比,書本缺少了逐步呈現(xiàn)的控制,但可以用更詳細(xì)的文字進(jìn)行解釋說明,算是各有優(yōu)劣。此外,在寫作過程中,產(chǎn)生了一些新的想法和更深入的思考,也融入到本書的內(nèi)容中。如何學(xué)習(xí)本書呢?不建議小學(xué)低年級甚至更小的孩子學(xué)習(xí)本書。雖然他們也能夠完成前幾章的學(xué)習(xí),但后續(xù)的章節(jié)對他們來說挑戰(zhàn)太大,而學(xué)得太少的話,意味著掌握的工具少,實(shí)踐與創(chuàng)新的空間小,得到的鍛煉與相應(yīng)收獲少,樂趣也少。另外,因?qū)W習(xí)內(nèi)容太難導(dǎo)致半途而廢并不是好的體驗(yàn),沒必要給孩子留下編程很難學(xué)的印象。 建議孩子自學(xué)。家長可以給一些基礎(chǔ)的幫助,例如,安裝Scratch桌面編輯器,教孩子基本的計(jì)算機(jī)操作,例如登入系統(tǒng)、運(yùn)行程序、輸入漢字等,但學(xué)習(xí)Scratch編程還是讓孩子按自己的節(jié)奏來。自學(xué)能力是個人不斷成長的必備能力,培養(yǎng)鍛煉孩子的自學(xué)能力,是本書的重要目的之一。 學(xué)習(xí)編程的方法與學(xué)習(xí)語文、數(shù)學(xué)、英語都不一樣。編程是一種思維與實(shí)踐緊密結(jié)合的創(chuàng)造性活動。書上的內(nèi)容都理解了,并不意味著就會編程。我敬愛的導(dǎo)師吳文虎教授給學(xué)生們上課時,就多次強(qiáng)調(diào): “編程不是學(xué)會的,是練會的。”本書建議的自學(xué)方法是: 逐段地閱讀理解→實(shí)踐探索→思考總結(jié)→實(shí)踐應(yīng)用。 閱讀本書時,身邊應(yīng)該有一臺已經(jīng)打開的計(jì)算機(jī)。書中講到了什么操作,讀者就應(yīng)該同步地在計(jì)算機(jī)上進(jìn)行相應(yīng)的操作;書中提出一個問題,讀者就應(yīng)該暫停住,先思考自己的想法和答案,再往下閱讀;書中提出要自己嘗試,讀者就應(yīng)該自覺地想辦法去探索和嘗試;書中有時只提出問題,并不給出答案,但讀者真正實(shí)踐了就會得到正確的答案。我希望給予孩子探索與收獲的學(xué)習(xí)樂趣。 本書并沒有采用講解展示語句功能的方式介紹Scratch語言,而是從要完成的任務(wù)、要實(shí)現(xiàn)的功能或效果出發(fā),即從需求出發(fā)引入可用的語句,把語句、編程語言視為解決問題的工具。與編程語言相比,分析問題→設(shè)計(jì)方案→規(guī)劃程序→具體實(shí)現(xiàn)→修正調(diào)優(yōu)這種以程序設(shè)計(jì)為手段解決問題改變世界的方法,才是更重要的。這種方法,以及在方法運(yùn)用的過程中涉及的思想和技術(shù),與具體編程語言無關(guān),才是學(xué)習(xí)編程所真正要學(xué)的東西。我相信,這樣的編程學(xué)習(xí)才能夠更好地培養(yǎng)孩子解決問題的能力,才能更好地支持孩子將心中的創(chuàng)意展示出來,將創(chuàng)新的想法具象化,敢想敢干,能想能干。 本書剛開始的幾章內(nèi)容簡單,學(xué)起來較快,后續(xù)章節(jié)會不斷用到前面已學(xué)的內(nèi)容,越來越復(fù)雜,對思維能力和動手能力的要求也越來越高,學(xué)習(xí)進(jìn)度自然會慢下來。而且,隨著綜合的編程能力提升,孩子會想要實(shí)現(xiàn)自己設(shè)計(jì)的動畫和游戲,這是應(yīng)該鼓勵的事情。家長最好能夠給孩子一些命題編程任務(wù),即給出一個主題,讓孩子想辦法編程來表現(xiàn),例如,讓孩子實(shí)現(xiàn)一個堆雪人的場景或游戲。這些書本外的編程活動,是孩子學(xué)習(xí)編程最好的練習(xí),比每章后面的練習(xí)題好百倍。能夠多做這些自由的編程練習(xí)的話,完全不必著急學(xué)后續(xù)章節(jié)。畢竟學(xué)完一本書并不是真正的目的,打下堅(jiān)實(shí)基礎(chǔ),熟能生巧,讓孩子將來學(xué)得更好才是目的。另外,本書第二部分、第三部分靠后的章節(jié)難度很大,對初中生來說也是不小的挑戰(zhàn),因此建議孩子按自己舒適的進(jìn)度去學(xué)習(xí),花兩年、三年甚至更長時間也可以。 編程學(xué)習(xí)遇到的最大困難可能就是查錯調(diào)試了。初學(xué)者可能犯任何錯誤,而且自己完全找不出問題來。雖然編程調(diào)試有利于培養(yǎng)孩子的耐心和細(xì)致,但最好能夠有懂程序設(shè)計(jì)的人提供“保底”的幫助,避免孩子長時間無法解決問題,學(xué)習(xí)熱情受到打擊。如果有同樣在學(xué)Scratch的小伙伴一起討論查錯,也是非常好的。本書附錄D專門介紹了一些調(diào)試的方法和技巧,但對初學(xué)者的幫助有限。有條件的家長,可以考慮和孩子一起來學(xué)Scratch,這樣與孩子有共同的語言,一起學(xué)習(xí)、一起討論、一起成長,也是珍貴和難得的體驗(yàn)。飲水思源,感謝促使本書成文的所有人!首先感謝以吳文虎教授為首的師尊前輩,本書一脈相承了他們關(guān)于程序設(shè)計(jì)教學(xué)的理念。感謝教學(xué)實(shí)驗(yàn)室和系里的同事們對編程學(xué)習(xí)班的支持,感謝孩子們、家長們對編程學(xué)習(xí)班的學(xué)習(xí)方式和學(xué)習(xí)內(nèi)容的肯定。感謝系里的喻文健老師,本書中基礎(chǔ)彈球游戲的若干項(xiàng)擴(kuò)展來自他的創(chuàng)意。特別感謝金山西山居的唐一鳴先生,本書第20章來源于特邀他給提高組編程學(xué)習(xí)班帶來的一次課程。當(dāng)然,也要感謝兒子促成我進(jìn)入了Scratch的奇妙世界。孩子是我們未來的希望,愿本書的小讀者們永保學(xué)習(xí)的愿望與樂趣! 鄔曉鈞2020年5月新冠肺炎疫情期間于清華園 鄔曉鈞,本碩博均就讀于清華大學(xué)計(jì)算機(jī)系,現(xiàn)為清華大學(xué)計(jì)算機(jī)系高級工程師,長期從事程序設(shè)計(jì)的教學(xué)實(shí)踐。他十多年來擔(dān)任清華大學(xué)程序設(shè)計(jì)競賽代表隊(duì)主教練,也是中國大學(xué)生程序設(shè)計(jì)競賽的主要發(fā)起人和組織者。 目錄 第1篇基 礎(chǔ) 技 能 第1章準(zhǔn)備工作3 1.1程序與程序設(shè)計(jì)語言3 1.2Scratch語言4 1.3安裝編程環(huán)境4 1.3.1安裝桌面編輯器4 1.3.2設(shè)置界面語言7 1.3.3打開與關(guān)閉7 1.3.4版本更新8 1.4如何學(xué)習(xí)編程8 1.5本章小結(jié)9 第2章簡單舞步10 2.1初識Scratch桌面編輯器10 2.1.1界面布局10 2.1.2積木語句與參數(shù)11 2.1.3積木語句的拼接組合11 2.2讓小貓?zhí)?1 2.2.1順序執(zhí)行11 2.2.2重復(fù)執(zhí)行12 2.2.3事件響應(yīng)13 2.2.4從背景庫中選取背景15 2.3增加伴舞者15 2.3.1從角色庫中選取角色16 2.3.2同步不同角色17 2.3.3角色與造型17 2.3.4角色間的腳本復(fù)制18 2.3.5運(yùn)行模式18 2.4保存文件19 2.5本章小結(jié)20 2.6練習(xí): 燈光師21 零基礎(chǔ)學(xué)Scratch編程目錄第3章動畫賀卡22 3.1動畫基礎(chǔ)22 3.1.1刪除與新建角色22 3.1.2第一個字母角色23 3.1.3第二個字母角色25 3.1.4第三個字母角色28 3.1.5第四個角色29 3.2萬圣節(jié)賀卡31 3.2.1跳動的紅心31 3.2.2為舞臺編程32 3.2.3文本角色33 3.2.4奇幻角色34 3.3本章小結(jié)36 3.4練習(xí): 我的賀卡37 第4章石頭剪子布38 4.1街舞38 4.1.1設(shè)置舞臺背景38 4.1.2街舞者39 4.1.3自拍角色39 4.1.4同步的調(diào)試42 4.2石頭剪子布43 4.2.1設(shè)置背景43 4.2.2添加角色導(dǎo)入圖片44 4.2.3編寫程序44 4.2.4復(fù)制角色44 4.3本章小結(jié)46 4.4練習(xí): 我的動畫46 第5章彈球游戲47 5.1彈跳的球47 5.2添加擋板47 5.3讓球碰到擋板就反彈48 5.4游戲結(jié)束49 5.5游戲得分50 5.6更多游戲效果52 5.7雙人對戰(zhàn)54 5.7.1游戲設(shè)計(jì)54 5.7.2判斷游戲輸贏55 5.8本章小結(jié)56 5.9練習(xí): 優(yōu)化雙人對戰(zhàn)游戲57 5.9.1基礎(chǔ)練習(xí): 控制球的速度57 5.9.2提高練習(xí): 控制球的反彈角度57 第6章沙灘賽跑59 6.1準(zhǔn)備賽場59 6.2比賽選手60 6.3跑向終點(diǎn)61 6.4隨機(jī)速度62 6.5勝利歡呼62 6.6升級彈球游戲64 6.6.1擋板與球的修改64 6.6.2增加蝙蝠怪65 6.6.3計(jì)分與增速65 6.6.4更多游戲功能65 6.7本章小結(jié)66 6.8練習(xí): 游戲中的計(jì)時66 第7章超級英雄68 7.1繪圖模式68 7.1.1體驗(yàn)位圖模式69 7.1.2體驗(yàn)矢量圖模式69 7.1.3繪圖模式比較70 7.2繪制背景70 7.2.1白云與紅日71 7.2.2城堡71 7.3英雄角色73 7.3.1造型與大小73 7.3.2跳起與落下75 7.4怪物角色75 7.5壓死怪物76 7.6完善游戲功能76 7.7本章小結(jié)77 7.8練習(xí): 星際旅行77 第8章捉迷藏79 8.1游戲設(shè)計(jì)79 8.2準(zhǔn)備場景79 8.3隨機(jī)確定小猴位置80 8.3.1隨機(jī)選擇樂器80 8.3.2隨機(jī)露出部分身體81 8.4實(shí)現(xiàn)躲藏效果83 8.5本章小結(jié)83 8.6練習(xí): 完善捉迷藏游戲84 第9章時尚換裝85 9.1游戲效果說明85 9.2使用變量86 9.2.1用單個標(biāo)志變量實(shí)現(xiàn)86 9.2.2用多個標(biāo)志變量實(shí)現(xiàn)87 9.2.3改進(jìn)單個標(biāo)志變量的實(shí)現(xiàn)87 9.3使用消息89 9.4更多換裝89 9.5本章小結(jié)90 9.6練習(xí): 電風(fēng)扇91 第10章百蟲來襲93 10.1發(fā)射魔法93 10.1.1編程實(shí)現(xiàn)93 10.1.2腳本分析95 10.2游戲的基本元素95 10.3克隆與控制96 10.3.1實(shí)現(xiàn)克隆96 10.3.2控制克隆體96 10.3.3關(guān)于刪除克隆體的問題97 10.4結(jié)束畫面的優(yōu)化98 10.5本章小結(jié)98 10.6練習(xí): 完善百蟲來襲游戲100 10.6.1基礎(chǔ)練習(xí)100 10.6.2提高練習(xí)100 第2篇思 維 訓(xùn) 練 第11章繪圖基礎(chǔ)103 11.1試用“畫筆”類積木103 11.1.1“畫筆”類積木103 11.1.2嘗試畫線104 11.2繪制正多邊形105 11.3繪制蜂巢圖106 11.3.1問題分解107 11.3.2繪制單個蜂巢107 11.3.3繪制一排蜂巢107 11.3.4調(diào)整落筆和抬筆109 11.3.5完成蜂巢圖110 11.4自制帶參數(shù)的積木110 11.5復(fù)制已編寫的部分程序112 11.6本章小結(jié)112 11.7練習(xí): 繪制圖形113 11.7.1了解畫筆透明度的效果113 11.7.2畫n角星113 11.7.3畫螺旋113 11.7.4提高練習(xí): 幻影移動114 第12章函數(shù)繪圖116 12.1函數(shù)與圖像116 12.1.1畫坐標(biāo)系116 12.1.2函數(shù)、坐標(biāo)與圖像116 12.2畫圓117 12.2.1圓上點(diǎn)的函數(shù)關(guān)系117 12.2.2畫上半圓117 12.2.3完成畫圓119 12.3畫橢圓120 12.4畫拋物線120 12.5公轉(zhuǎn)與自轉(zhuǎn)121 12.6萬花尺筆尖位置的函數(shù)表示122 12.7實(shí)現(xiàn)萬花尺程序123 12.8本章小結(jié)124 12.9練習(xí): 繪圖與思考125 12.9.1研究萬花尺程序125 12.9.2畫點(diǎn)成圖125 第13章遞歸與迭代計(jì)算126 13.1遞歸126 13.2繪制彩色雪花127 13.3繪制Koch雪花128 13.3.1分形128 13.3.2Koch曲線與Koch雪花129 13.3.3畫Koch曲線與Koch雪花130 13.4繪制Julia集131 13.4.1函數(shù)的迭代計(jì)算131 13.4.2二元函數(shù)的迭代計(jì)算132 13.4.3圖像化132 13.4.4其他Julia集134 13.5本章小結(jié)136 13.6練習(xí): 繪制圖像137 13.6.1繪制心形137 13.6.2繪制Mandelbrot集138 第14章數(shù)列與數(shù)字謎題139 14.1數(shù)列求和139 14.1.1編程思路139 14.1.2編程練習(xí)140 14.2數(shù)列求項(xiàng)140 14.2.1問題與編程思路140 14.2.2編程練習(xí)142 14.3數(shù)字謎題142 14.3.1六位整數(shù)問題142 14.3.2兩數(shù)相乘問題143 14.3.3編程練習(xí)144 14.4本章小結(jié)145 14.5練習(xí): 解決問題145 14.5.1數(shù)表145 14.5.2兩數(shù)相乘146 14.5.3和與積146 第15章整除與質(zhì)數(shù)147 15.1整除計(jì)數(shù)147 15.1.1小試牛刀147 15.1.2編程練習(xí)148 15.2判斷質(zhì)數(shù)148 15.2.1基本方法148 15.2.2加速測試149 15.3篩法求質(zhì)數(shù)150 15.3.1篩法操作150 15.3.2篩法實(shí)現(xiàn)153 15.3.3顯示質(zhì)數(shù)表155 15.4本章小結(jié)156 15.5練習(xí): 解決問題157 15.5.1分組問題157 15.5.2雞兔同籠問題157 15.5.3韓信點(diǎn)兵157 第16章控制輸贏比例158 16.1輸贏比例158 16.2模擬比賽159 16.2.1程序設(shè)計(jì)159 16.2.2輸贏統(tǒng)計(jì)160 16.2.3輸贏比例162 16.3控制輸贏比例162 16.3.1二分法162 16.3.2二分法的終止條件163 16.4本章小結(jié)165 16.5練習(xí): 編程計(jì)算π166 第3篇應(yīng) 用 實(shí) 踐 第17章九連環(huán)169 17.1九連環(huán)游戲169 17.1.1九連環(huán)的操作170 17.1.2九連環(huán)的解法171 17.2編程實(shí)現(xiàn)九連環(huán)172 17.2.1繪制圖形172 17.2.2實(shí)現(xiàn)操作173 17.2.3實(shí)現(xiàn)完整游戲175 17.2.4隨機(jī)開局175 17.3思考與挑戰(zhàn)176 17.3.1最佳操作數(shù)176 17.3.2自動完成九連環(huán)游戲177 第18章七巧板178 18.1繪制七巧板178 18.1.1繪制三角形178 18.1.2繪制其他形狀179 18.1.3拼出初始圖形179 18.2拖動與旋轉(zhuǎn)180 18.2.1拖動模式180 18.2.2旋轉(zhuǎn)的活躍狀態(tài)180 18.2.3實(shí)現(xiàn)拖動181 18.2.4實(shí)現(xiàn)旋轉(zhuǎn)183 18.3保存與載入185 18.4思考與挑戰(zhàn)185 18.4.1保存多個拼圖185 18.4.2為拼圖命名186 第19章華容道187 19.1繪制華容道187 19.1.1繪制棋盤棋子187 19.1.2設(shè)定棋盤棋子位置188 19.1.3添加文字189 19.2保存與載入189 19.2.1棋局的表示方式189 19.2.2表示棋子擺放情況191 19.2.3用列表表示棋局192 19.2.4保存與載入192 19.2.5用單個變量保存棋局193 19.2.6關(guān)于起始編號的討論194 19.3移動棋子195 19.3.1操作方式的設(shè)計(jì)195 19.3.2選中狀態(tài)195 19.3.3判斷棋子可移動196 19.4自動求解華容道198 19.4.1自動求解思路198 19.4.2設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)198 19.4.3細(xì)化求解算法199 19.5思考與挑戰(zhàn)201 19.5.1加快自動求解1201 19.5.2加快自動求解2201 19.5.3最優(yōu)解法202 第20章打氣球205 20.1基礎(chǔ)游戲205 20.1.1準(zhǔn)星205 20.1.2隨機(jī)氣球206 20.1.3其他206 20.2讓游戲更豐富有趣207 20.3改進(jìn)打氣球游戲208 20.3.1加入樂趣點(diǎn)“選擇”209 20.3.2加入情緒調(diào)節(jié)手段209 20.3.3提升基礎(chǔ)體驗(yàn)211 20.3.4提升表現(xiàn)力212 20.4思考與挑戰(zhàn)213 附錄 附錄A流程圖217 A.1順序結(jié)構(gòu)217 A.2循環(huán)結(jié)構(gòu)218 A.3分支結(jié)構(gòu)218 附錄B按鍵的偵測220 附錄C幾種重復(fù)語句的比較221 附錄D調(diào)試226 D.1明確問題226 D.2細(xì)查代碼226 D.3查看和設(shè)置變量值227 D.4設(shè)置斷點(diǎn)228
你還可能感興趣
我要評論
|