


【摘 要】本文以C語言程序設計課程中的窮舉法教學為例,論述了培養學生創造思維能力的教學設計方法。
【關鍵詞】創造思維 窮舉 教學主線 教學實例
計算機科學是培養學員信息素養和創新能力的基本學科。而C語言程序設計是計算機基礎教育的核心課程,下面就以窮舉法教學為例,談談培養學生創造思維能力的教學設計方法。
1 創造思維能力
創造思維能力是指思維活動的創造意識和創新精神,表現為不墨守成規,奇異、求變,創造性地提出問題和創造性地解決問題。創造性思維不是與生俱來的,而是后天認真思考、培養、鍛煉出來的。創造思維能力的培養包含以下幾個方面:
1.1 好奇心與求知欲的激發
好奇心和求知欲是影響人的創造力強弱的推動力。實驗研究表明,一個好奇心強、求知欲旺盛的人,往往勤奮自信,善于鉆研,勇于創新。
1.2 發散思維和聚合思維的培養
發散思維和聚合思維在人類的創造性活動中均有著不可替代的作用。具有良好發散思維的人,一般對新事物很敏感,而且具有回避老一套解決問題的強烈愿望。具有良好聚合思維的人,則善于在大量雜亂無章的事件中尋找規律、發現問題。
1.3 直覺思維和邏輯思維的培養
直覺思維和邏輯思維在創造性活動中的作用是相輔相成的。所謂直覺思維,是指未經逐步分析而迅速地對解決問題的途徑和答案做出合理反映的思維。如猜測、預感、設想、頓悟等。一般情況下的直覺思維都是不完善和不明確的,甚至有時是錯誤的。邏輯思維是直覺思維的一個必要的檢驗、修改和訂正的完善過程。
2 窮舉法教學設計
2.1 教學主線設計
窮舉法是C程序設計中最基本也是最重要的一種算法設計方法,教學中不僅要闡明其基本思想,最重要的是要教會學生運用窮舉法編寫程序解決實際問題。
確定教學主線時主要考慮知識脈絡和學生的認知規律兩方面的問題。從知識脈絡方面看,應首先介紹窮舉法基本思想,再講解窮舉算法設計要點,最后分析算法的優化策略。從學生的認知規律分析也應由淺入深、由易入難,應從學生身邊的生活實例入手引出教學內容,然后在展開講解、深入分析的基礎上總結出應用要點,最后通過一個較難的實例驗證教學效果并提出改進策略?;谝陨蟽牲c分析教學主線的設計下所示:
趣例引入※窮舉法基本思想※窮舉法應
用要點※課堂實踐※窮舉法優化策略
2.2 教學實例的選取與組織
一個好的教學實例既能體現教學內容的實質,又具有一定的趣味性,并且稍加變通后即可用來強調知識點中不易被掌握的部分。
根據上述教學主線的設計,本次課程需要至少三個教學實例。首先在引入部分需要一個非常有趣并且學生能主動參與其中的窮舉法應用實例,這里選用“數字魔術”游戲;第二個教學實例應具有一定的難度,并且在求解的思維過程上要有別于第一個實例,最好帶有一定的歷史背景,這里選用“八皇后問題”;最后一個教學實例主要用于課后練習,難度上應介于前兩個實例之間,但在設計上仍需保有一定的挑戰性,這里選用“愛因斯坦的智力題”。
看似分散的三個實例,我們可以在組織形式上穿針引線、有的放矢,使它們成為一個邏輯整體。用有趣而簡單的實例啟發學生自主設計和總結運用窮舉思想設計算法的步驟,提出一個復雜的實例來驗證學生們總結出來的步驟是否適用,最后在實例演示時提出優化策略,拓展學生的設計思路。
3 培養創造思維能力的教學細節設置
教學中對學員創造思維能力的培養要滲透到教學內容設置的細節。以實際問題的解決為牽引對教學內容進行升華,創造性的遷移和組合知識點,在傳授知識的同時訓練學生的思維能力和創造能力。下面結合本文作者的教學實踐,談談窮舉法教學案例中培養學生創造思維能力的教學細節設置。
3.1 趣例引入激發學生好奇心和求知欲
在第一時間激發學生的好奇心和求知欲是啟發學生創新思維的關鍵。一個有趣且能全民參與的實例可以使教學內容在無形中自然推進。
本次窮舉法教學課例由一個“數字魔術”游戲引入,如圖1所示。一開始大家都很踴躍,想試試“電腦”是不是就真的那么神,能猜到自己心里想好的神秘數字,結果它真的猜到了,并且速度還很快。很自然的,同學們就很好奇,“這怎么可能?這個數字我沒有告訴任何人呀,它是怎么知道的呢?”瞬間,整個課堂就活躍起來了。
3.2 問題剖析促使直覺思維向邏輯思維轉化
運用直覺思維我們不可能發現“數字魔術”的秘密,那么運用邏輯思維來分析看看會有什么發現呢?
對于電腦而言,它所獲取的信息有兩個:①該數字是個3位數;②該3位數的個位、十位、百位排列組合后形成的其余5個數之和。由第一個條件可以確定要猜的數字在100到999之間,而第二個條件看上去對猜數字似乎沒有任何幫助,這時我們運用數學中簡單的提取公因式方法將其變換一下,即可得到如公式1所示的結果。至此,運用數學方法我們仍然不能得到確定的結果,怎么辦呢?只能用最笨的方法了,那就是“一一測試”即“窮舉”。其實,電腦也是這么做的,只是它的計算能力太強了,不到1秒就能得出答案。
122a+212b+221c = m 公式1
3.3 一題多解訓練發散思維
請A同學敘述一下他運用窮舉法猜數字的過程,然后按照A同學的敘述一步步編寫程序即可得到下表1中方法一所示的程序,這種方法在每次測試時都要先將i分解成a、b、c,那能不能直接對a、b、c窮舉呢?按照這種思路,就得到方法二。(由學生提出該方法更好)
3.4 沙里淘金培養聚合思維
分析上述兩種方法,雖然它們在形式上不盡相同,但在本質上它們是一致的,從兩種方法的解題思路上引導學生總結得出窮舉法的應用要點,主要包括如下四步:
①能不能用窮舉?只要問題的解是有限可列舉的即可用窮舉。
②確定窮舉對象。要求什么就窮舉什么,窮舉對象應作為循環變量,有幾個窮舉對象就用幾重循環與之相對應。
③確定窮舉范圍。確定每個窮舉對象的可能取值范圍,做到不遺漏、不重復。
④確定解的判定條件。用邏輯表達式表示解的判定條件,做到準確、不遺漏。
如上述所示的總結性知識要點最好由教師引導學生自主總結得到,不要采用平鋪直敘的方式直接給出結論。如若不然,就達不到訓練學生聚合思維的目的。
3.5難例應用啟發逆向思維
“八皇后問題”用窮舉法解決時有兩個設計難點:一是窮舉對象的表示,需要將棋盤上8個皇后的位置用一個整數表示出來。每個皇后的位置可用一個二元組表示,而且8個皇后兩兩不同行,因此可將位置信息中的行與整數的位對應,將對應行上的皇后列信息寫入對應的整數位即可,如圖2中a所示。二是解的判定條件中要求兩兩皇后不在同一斜線上的條件表示方法??偣?個皇后30條斜線,這個判定條件從正面分析是不可能得出結果的,此時就必須采用逆向思維的方法考慮兩兩皇后在同一斜線上的情況,很快就能寫出判定條件了。如圖2中b所示。
4 結束語
C程序設計的教學目標分為三個層次:知識本體的掌握、計算思維能力和編程能力的訓練、創新能力的培養。在教學設計過程中應綜合教學內容、教學目標和教學對象特點合理選擇和組織教學實例,使知識的掌握與能力的訓練有機結合以達到培養學生創新能力的目的。由于教學實例是實際的知識與能力的載體,因此選擇具有趣味性、承載力和表現力強的教學實例是教學設計成敗的關鍵。
【參考文獻】
[1]李雪竹,王鋒,蔡之讓.C程序設計中創新能力的培養.宿州學院學報, 2007,22(1): 156-158.
[2]郭理,秦懷斌,戴建國.《程序設計基礎》課程創新性教學的改革與實踐.兵團教育學院學報,2013,23(2):38-41.
[3]張子睿.大學生創新與創業能力提升.北京:科學出版社,2008.
[4]劉道玉. 創造教育概論.武漢:武漢大學出版社,2009.