錢小芳
(江蘇省丹陽市第六中學(xué)電教處,江蘇 丹陽 212300)
程序設(shè)計是學(xué)生進(jìn)行軟件開發(fā)必備的專業(yè)基礎(chǔ)。先前,教學(xué)的載體主要依附于章節(jié)的內(nèi)容,重視基本數(shù)據(jù)結(jié)構(gòu)和算法的講授、程序設(shè)計三種基本結(jié)構(gòu)的訓(xùn)練,學(xué)生獲取了一個良好地基礎(chǔ)后,就能可持續(xù)的發(fā)展,進(jìn)行更深入的學(xué)習(xí)。
隨著學(xué)校計算機課程的擴展,依附于章節(jié)的內(nèi)容的教學(xué)模式,對于四星級高中學(xué)生來說,顯得非常難學(xué),因而,必須探索出一套既符合教學(xué)規(guī)律,又能激發(fā)學(xué)生興趣,即探索方便好學(xué)的現(xiàn)代教學(xué)模式,顯得十分重要。根據(jù)多年的教學(xué)經(jīng)歷,文中探索了一種用“思維”貫穿整個教學(xué)過程的模式:教師以講授程序設(shè)計思想為主線,對學(xué)生進(jìn)行思維訓(xùn)練為主導(dǎo)、將各章節(jié)的內(nèi)容有機地貫穿起來,方便學(xué)生的學(xué)習(xí)。
程序設(shè)計是利用已有的軟件包,進(jìn)行應(yīng)用開發(fā)。使用者必須依據(jù)具體的應(yīng)用和依附的具體平臺來設(shè)計計算方法,這個設(shè)計的過程中充滿了計算思維,因而程序設(shè)計的關(guān)鍵轉(zhuǎn)變?yōu)閷栴}的理解能力、對問題的描述能力、對問題的具體流程控制能力。對問題的理解主要是抽象、分析及等效轉(zhuǎn)換;對問題的描述主要是進(jìn)一步轉(zhuǎn)換、遞推、約減、細(xì)化;常用的描述工具有用流程圖描述問題、用偽代碼描述問題、用程序代碼描述,程序的控制主要體現(xiàn)在具體的設(shè)計流程中路徑的走向。[1]
思維的形式多樣化,應(yīng)該支持發(fā)散、反思、推理思維。
第一種,橫向思維
主要用于理解算法的描述方式。算法的描述方式很多,比如,從1加到100的和的算法描述可以表示為“1+2+3+……100”數(shù)學(xué)表達(dá)形式,也可以表達(dá)成偽代碼形式,也可以表達(dá)成圖的形式,也可以把表達(dá)式分解為程序的形式。
為了更好地說明程序設(shè)計思想,我們強調(diào)的是“思維性”,在程序設(shè)計過程中我們要動腦筋,我們把開動腦筋的過程,進(jìn)行反向分析,針對一題多解問題,探索了幾種形式思維:橫向思維、轉(zhuǎn)換思維、縱向思維。
對于同一問題,我們可以從語法角度去解題,也可以從語義角度去解題。
語法角度利用do while;while;for求1~100內(nèi)的元素的和;語義的角度利用數(shù)組的首地址、一維指針、二維指針對一個二維數(shù)組的所有元素進(jìn)行遍歷。
代碼內(nèi)轉(zhuǎn)換能力是一種形式;算法各種形式的轉(zhuǎn)換;將for轉(zhuǎn)換成while循環(huán),if與switch的功能轉(zhuǎn)換,甚至if加goto與循環(huán)的等效;在迭代過程中初始值換掉、循環(huán)次數(shù)邊界問題理解;將相同算法思想,表達(dá)成圖、偽代碼、代碼,及這三者之間的轉(zhuǎn)換。[2]
基于不同的知識點對同一問題給出解答;基于認(rèn)知規(guī)律的遞進(jìn)性思維,對于問題的原子型解答、改進(jìn)型解答、完美型解答。這樣得到的算法可以比先前的算法更優(yōu)化、更綜合、更有突破性;對于輸出40行斐波拉契數(shù)列,原子型的解答(f3=f1+f2;f1=f2;f2=f3),改進(jìn)型的解答每個八個換行,輸出效果好,聯(lián)系具體輸出設(shè)備的局限,基于數(shù)組的解答,并且將其與小兔子的繁衍聯(lián)系在一起,以月份的形式輸出。[3]最后這種叫完美型或應(yīng)用型。對于菱形圖形的輸出,可以用窮舉法,顯然局限最多,可以用上三角、下三角,空格、星號、回車三句來描述,也可以不分上下三角、基于絕對值來進(jìn)行統(tǒng)一表達(dá);甚至還可以用二維數(shù)組的兩次賦值來互補進(jìn)行菱形圖案的輸出。從不同的角度,進(jìn)行問題解答。
總之,利用各種方式、開動動腦筋是程序設(shè)計的思維訓(xùn)練的法寶。在培養(yǎng)學(xué)生基本能力的時候,是夠用化地教授學(xué)生最基本的知識、技能,還是系統(tǒng)化教授最基本知識、技能,其實都是一個問題的兩個方面,夠用化強調(diào)傳授知識的同時,要發(fā)展學(xué)生的能力,因知而費能,系統(tǒng)化看上去偏向研究能力,很深奧,高中學(xué)生可能達(dá)不到。
[1]劉曉玫等.關(guān)于數(shù)學(xué)推理問題的幾點思考[J].數(shù)學(xué)教育學(xué)報,2002,11(2):54-56.
[2]Grant Wiggins&Jay McTighe.Understanding by design[M].ASCD,1998:5-20.
[3]J Sternberg.The Nature of Mathematical Reasoning[J].National Council of Teachers of Mathematics,1999(1):37-44.