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