趙凱
閱讀,作為學(xué)習(xí)、生活中的重要組成部分有著重要的意義,學(xué)校和家庭都會積極鼓勵學(xué)生進(jìn)行閱讀,同時努力為他們構(gòu)建良好的閱讀環(huán)境和氛圍。編程學(xué)習(xí)同樣也需要閱讀,這里的閱讀是指對程序的閱讀。好的程序就如同一篇精美的文章,讀起來令人陶醉,從中獲益匪淺。閱讀程序可以了解別人的優(yōu)秀創(chuàng)意、技術(shù)的創(chuàng)新應(yīng)用、一些編程的技巧等,能夠激發(fā)學(xué)習(xí)者的靈感和創(chuàng)意。程序閱讀能力可以理解為學(xué)生解讀程序的思想、功能實現(xiàn)以及算法的能力,是學(xué)習(xí)編程的一種必不可少的能力。
編寫程序和閱讀程序也可以理解為兩個互逆的過程,就如同“編碼”和“解碼”的關(guān)系。筆者發(fā)現(xiàn)很多學(xué)生在閱讀自己編寫的程序時比較輕松,但是閱讀別人編寫的程序或者稍微復(fù)雜的程序時就很困難,有時甚至在閱讀一個沒有超出其知識能力范圍水平的程序時,也會表現(xiàn)得比較吃力。這就是平時程序閱讀得少,導(dǎo)致程序閱讀能力和水平相對較低。作為一個編程學(xué)習(xí)者,多閱讀,多學(xué)習(xí),多模仿,是提升編程能力的一個重要途徑。
● 獲得閱讀資源的途徑
1.Scratch網(wǎng)絡(luò)社區(qū)平臺
Scratch官方社區(qū)里有世界各地很多學(xué)生的作品,學(xué)生們樂于在社區(qū)里把自己優(yōu)秀的作品展示出來。國內(nèi)一些社區(qū)平臺上也有很多優(yōu)秀的作品,很多網(wǎng)絡(luò)平臺的作品甚至開放源程序,允許訪問者在作者源程序的基礎(chǔ)上進(jìn)行二次創(chuàng)作。國內(nèi)的一些網(wǎng)絡(luò)編程平臺在組織一些編程比賽時也會將一些優(yōu)秀的作品放在平臺上并開放源程序。這些源程序都是寶貴的資源,教師要鼓勵學(xué)生定期訪問這些資源平臺,多閱讀,多學(xué)習(xí)。
2.書籍配套光盤
現(xiàn)在,市面上出售的Scratch編程書籍大都配有光盤,里面會附上相應(yīng)的源程序,或者在網(wǎng)絡(luò)上提供相應(yīng)的源程序,這些源程序都是很好的閱讀資源。此外,不同類型和主題的書籍提供的程序也可以滿足學(xué)習(xí)者的不同需求,如互動游戲設(shè)計、算法設(shè)計類的書籍所提供的源程序等。
3.學(xué)生間程序的分享
學(xué)生之間年齡相仿,更易于交流。彼此的作品,互相觀摩、學(xué)習(xí),更容易發(fā)揮榜樣的效應(yīng)。教師可以有意識地組織學(xué)生間的作品交流,還可以借助國內(nèi)具有教學(xué)管理及展示交流功能的網(wǎng)絡(luò)平臺,以班級為單位組織學(xué)生進(jìn)行交流展示及學(xué)習(xí)。
● 掌握程序閱讀的一些技巧
1.從整體把握程序架構(gòu)
Scratch可以添加很多角色,并在舞臺上實現(xiàn)角色間的交互,因此深受學(xué)生們的喜愛。一個程序如果角色繁多,會給程序的閱讀和理解帶來困難,因此在閱讀時,首先需要理清諸多角色之間的相互關(guān)系,以及各個角色的功能和作用,還要了解角色按時間先后出現(xiàn)的關(guān)系、隱藏與出現(xiàn)的控制、角色之間是如何進(jìn)行聯(lián)系的、通過廣播進(jìn)行交互或利用變量進(jìn)行數(shù)值的傳遞與控制。在把握整體架構(gòu)后按照角色進(jìn)行分解,對于同一個角色下的程序,可以從功能或技術(shù)實現(xiàn)的層面再進(jìn)行分解,從整體到局部,對一個個小的知識點進(jìn)行理解和消化,最后再從局部到整體,從而讀懂整個程序。
2.明白循環(huán)嵌套的作用
循環(huán)的嵌套在程序設(shè)計中占有非常重要的地位,利用循環(huán)的嵌套可以實現(xiàn)很多重要的效果,很多算法類的程序往往也會使用多重循環(huán)。在使用了循環(huán)嵌套的程序中,閱讀時需要搞清楚外循環(huán)控制的是什么,內(nèi)循環(huán)控制的是什么,內(nèi)循環(huán)與外循環(huán)之間的相互關(guān)系是什么,哪些變量需要復(fù)位清零,在循環(huán)中的什么位置進(jìn)行復(fù)位清零,內(nèi)循環(huán)中的變量和外循環(huán)中的相關(guān)變量之間的關(guān)系是怎樣的,這些都是閱讀時需要注意和思考的方面。
3.理解邏輯判斷及分支結(jié)構(gòu)的作用
程序往往離不開邏輯判斷,所以閱讀時要明確判斷條件的含義,對于與、或、非的組合運算要能夠根據(jù)邏輯運算的優(yōu)先級,理解其具體的作用。例如,閏年的判斷條件是能被4整除但不能被100整除,或者能被400整除的年份,可以把邏輯運算組合為一個判斷條件,使用一個分支結(jié)構(gòu)就可以實現(xiàn)判斷。程序中的分支結(jié)構(gòu)有時也會嵌套使用,嵌套得越多,理解起來也會越復(fù)雜。這些都是學(xué)生閱讀分支結(jié)構(gòu)嵌套時需要關(guān)注的問題。
4.把握變量的功能
一個復(fù)雜的程序往往擁有很多的變量,看上去甚至眼花繚亂。擁有良好編程習(xí)慣的程序編寫者往往會根據(jù)變量在程序中的作用進(jìn)行命名,這一點十分重要,因此在教學(xué)中務(wù)必要使學(xué)生養(yǎng)成變量合理命名的良好習(xí)慣。閱讀程序時,學(xué)生首先要看清變量的名稱,根據(jù)名稱就很容易判斷出變量的作用,如“計時”“計次”等。此外,還需要關(guān)注變量控制了哪些角色,控制了角色哪些屬性的變化,變量是如何在不同角色間進(jìn)行數(shù)值傳遞的,有沒有進(jìn)行過轉(zhuǎn)換,按照怎樣的關(guān)系進(jìn)行了轉(zhuǎn)換。了解了某一個變量的功能,有時還需要了解這個變量和其他變量之間的相互關(guān)系,這樣能使學(xué)生從整體上去把握變量的作用并利用它們更好地去讀懂程序。
5.結(jié)合算法原理進(jìn)行閱讀
Scratch雖然是基于圖形化的編程軟件,但同樣能夠?qū)崿F(xiàn)非常復(fù)雜的算法功能。算法是在程序之前就確定下來的一種解決問題的方法和策略,程序是算法實現(xiàn)的載體和具體體現(xiàn)。筆者發(fā)現(xiàn)學(xué)生往往在閱讀一些算法類的程序時會有畏難情緒,容易放棄閱讀,因此,閱讀之前,最好再鞏固一下算法的原理,然后再去閱讀程序,這樣閱讀就會輕松一些。比如冒泡排序、選擇排序,閱讀程序時再把原理和程序結(jié)合起來。邊閱讀,邊思考,邊利用算法原理去促進(jìn)理解,利用算法的特點、功能促進(jìn)對一些命令作用的理解,這樣閱讀起來會提高效率,同時也能降低閱讀和理解的難度。
6.閱讀程序中的注釋
注釋可以體現(xiàn)程序編寫者的想法、技巧的應(yīng)用、一些命令的主要功能等,程序中的注釋對閱讀者有很大的幫助。閱讀程序時,注釋的內(nèi)容如果直觀具體,能讓閱讀者一目了然。因此,在編寫程序的時候,教師要鼓勵學(xué)生養(yǎng)成添加注釋的好習(xí)慣,這樣不僅方便自己閱讀及調(diào)試,而且便于將程序與別人分享和交流。
● 從閱讀、模仿到提升
臨摹是學(xué)習(xí)書法的重要途徑,通過臨摹能夠促進(jìn)水平的提升。學(xué)習(xí)編程同樣需要“臨摹”,多閱讀、多臨摹實踐,是提升編程能力的好方法。在日常的學(xué)習(xí)中,很多學(xué)生看了別人的程序后總感覺自己已經(jīng)懂了,但真正寫程序的時候又寫不出來。一味地看而不練會造成學(xué)生眼高手低,實踐能力低下。
對于優(yōu)秀的程序,可以進(jìn)行分解閱讀和學(xué)習(xí),即先從一小段程序、某個角色的程序或某個關(guān)鍵的技術(shù)點去讀,去模仿編寫,實現(xiàn)具體的功能,然后再去模仿編寫下一個部分的程序。這樣,從局部到整體,再到完整的架構(gòu),直至能編寫出完整的程序,甚至融入自己的思想與創(chuàng)新。
● 結(jié)語
計算機(jī)科學(xué)是一門實踐性非常強的科學(xué),學(xué)習(xí)編程需要持之以恒地去實踐,能力才能得以提升。信息技術(shù)教師在課堂教學(xué)中要有意識地去培養(yǎng)學(xué)生的程序閱讀能力,鼓勵學(xué)生利用課余時間多去閱讀源程序,建立起自己的一套行之有效的源程序閱讀以及學(xué)習(xí)、利用的方法,從中體會程序設(shè)計者的思想精髓,以及程序規(guī)范、技術(shù)創(chuàng)新應(yīng)用等,獲得學(xué)習(xí)編程的快樂,激發(fā)習(xí)編程的熱情和動力,提升編程的能力和水平。