【摘 要】在教育研究和實踐過程中,教學策略已經越來越引起人們的重視,教師在教學策略方面素質的優劣,一定程度上決定著教師解決教學問題能力的高低,并最終影響到學生的學習效果。本文以“排序算法”教學為例歸納教學活動中常存在的比較突出問題,并就教學經驗和教學理論為解決此問題而采用的教學策略進行論述。
【關鍵詞】教學策略 排序算法 數據結構
在全國計算機二級等級考試的綜合知識考核部分,常用算法特別是排序算法給大部分學生帶來了難度,為此,我也展開了思考:如何讓學生在較短的時間內對重要的知識留下印象;如何讓學生分辨相似算法的區別;如何讓學生對知識加以靈活應用。在教學活動中也經常會遇到各種各樣的問題,不解決好這些問題,就會直接影響學生的學習效果。從教學活動的推進過程中歸納起來,問題主要集中體現在三個方面。
一﹑排序概念不清
排序是目的,完成排序的方法很多,各種不同排序方法的名稱和含義經常讓學生頭昏腦脹。例如常見的排序方法有插入、選擇、交換排序三大類,每一類又有好幾種不同的排序方法,如冒泡排序、簡單插入排序等。如果學生吃不透相關排序算法的概念,那排序的思路就是混亂的,不清晰的,后期的教學就無法繼續,就不能將算法轉化成相應的程序,更別說不同排序算法的優劣和使用環境了。
二﹑從排序算法到流程圖的轉換能力差
算法就是解決問題的思路、過程和方法,它可以非常明確的分解成一步一步,并最終用流程圖等類似工具圖形象描述出來。一般而言,流程圖就是程序的前身。但由于我們學生,一是職高學生理論知識體系本來相對較差,理解起來更困難些;二是學生剛接觸程序設計,對相關知識沒有基礎,所以學生在接受起來困難重重。教學中,普遍存在這種情況:學生明白某一排序算法的概念,并能用語言明確的描述算法,但不會借用流程圖來表述,這就相當于排序算法學習的鏈條上斷了一節。
三﹑學生靈活運用能力欠缺
雖然經過舉一反三,學生明白了幾種常用算法的排序思路,知道它們的區別,但大部分同學仍然只有單邊能力:明確算法→相應流程圖→相應程序,而反向的能力不具備。一旦涉及先給出程序,反方向走學習過程,就又會學習困難。例如程序填空題型,給出一段排序程序代碼,空出幾句關鍵語句,許多學同就會暈頭轉向了。學生們無法從程序代碼細小的差異處找出問題解決的關鍵,這種對知識靈活運用的能力,是學生所欠缺的,也是課堂教學中需要培養學生養成的能力。
為了解決“排序算法”課堂教學中的這些問題,我在自己后來的課堂中進行了相應的設置,使用恰當的教學策略,讓問題迎刃而解。
四﹑為突出幾個概念,使用比較分析法教學
概念是學生理解排序算法的基礎,概念是否清晰是進一步學習的前提。在“排序算法”教學中,應該重點突出幾個概念,如常用排序算法的算法描述、排序算法的穩定性等。以排序算法的穩定性為例,在講解這個概念時,先給出書本概念:
排序算法的穩定性:若待排序的序列中,存在多個具有相同關鍵字的記錄,經過排序,這些記錄的相對次序保持不變,則稱該算法是穩定的;若經排序后,記錄的相對次序發生了改變,則稱該算法是不穩定的。
詢問學生能明白這個概念所描述的意思嗎?大家都搖頭,少數幾個皺著眉在思考。接下來我給出一個實例:
待排序的序列為:(49,38,65,97,76,13,27,49)
排序后的序列1:(13,27,38,49,49,65,76,97)
排序后的序列2:(13,27,38,49,49,65,76,97)
請同學們比較排序后兩個序列的區別,并參照排序算法穩定性的概念進行分析,由學生得出哪種是穩定的,哪種是不穩定的,學習效果非常好。經過課堂上這番推進后,學生很快就理解了“排序算法的穩定性”概念。之后,我又提出課后思考,排序算法考慮它的穩定性有何實際意義,哪位同學能在現實生活中找到它的應用。大家都會費盡心思去想,相互之間會熱烈討論,同時也找到了一些現實中具體的應用,比如,網上答題積分,當積分相同的時候,肯定是先提交的人優先,這里穩定的排序算法就非常重要了。經過這番教學和引導,這個概念就很難忘記了。
五﹑排序過程形象化,讓學生易于理解
沖出概念迷霧后,進入到了排序算法的實際教學過程中,這個環節是教學環節的重點和難點。傳統課堂教學中,老師大多是黑板上列幾個數的隨機序列,然后根據不同排序算法思路,一趟一趟寫出排序結果。而這樣上課的效果往往是學生不以為然,事后了解,好多學生都在下面想:這個排序如此簡單,一看便知,有必要搞得這么復雜嗎?這一趟一趟到底是在干什么呀?問號一個接一個。
如果能把排序的過程形象化,效果卻大不一樣。我的辦法也很簡單,就是由學生親自參與排序過程。以插入排序、選擇排序和冒泡排序三種排序算法為例,采用形象化教學的演示方法。
理論上,插入排序、選擇排序和冒泡排序的思路和方法如表1。
如果僅以這樣的描述來講解這三種排序算法,大多數學生都會有很多疑問,究其原因,我發現是學生沒有真正投入到排序的過程中來。為此,我做了這樣的設置,將給出的8個數分別寫在一張張卡片上,交給第一組的同學,身高最高的拿最大數,最矮的拿最小數,依此規則每位同學分得一個數字。8位同學按待排原序列在教室前排列好。然后,請第二小組的同學按插入排序算法的思路對教室前的8位同學進行排序,另兩組檢查排序過程是否出錯,并進行記錄,錯一次得一個“哭臉”。同樣,第三小組完成選擇排序算法,第四小組完成冒泡排序算法。
課堂如此設計,上課效果非常好。課堂上少了沉悶多了活力;少了老師的說教,多了同學的思考;少了數字的枯燥,多了同學們的笑臉。同樣是對三種排序算法的講解,花去的學習時間差不多,但最后的學習效果卻完全不同。下課后,同學們依然還沉浸在這個排序游戲中,可見,調動了學生,學習也不在是件難事。當然,此類方法在課堂上應用時,一定要把握好度,不能沒了課堂紀律,亂哄哄吵成一團,如果是這樣,不僅不能事半功倍,反而連起碼的教學目標也無法達到。
六﹑學習評價多樣化,培養學生的創新能力
如何對學生的學習進行評價是一門學問,老師對學生學習過程的評價很大程序上決定著學生下一次的學習表現。對于“排序算法”的課堂評價,不能僅局限于學生是否能完整地寫出程序這個最終目標,而是要看學生在課堂上的參與興趣、思維活躍度等各個方面,以鼓勵、激勵為主,激發學生的創新精神,進而提升他們在今后學習中的熱情,這種熱情終將轉換為編程的能力。
教學中總會有這樣或那樣的問題,只要善于發現問題并找出合適的方法解決這些問題,師生就會共同進步。
【參考文獻】
[1]柳夕浪. 關于課堂教學研究方法的幾個問題. 江蘇教育研究,1994(4).
[2]陳瑤著. 課堂觀賞指導. 教育科學出版社,2002.