姚帥華
摘 要: 算法與程序設計是高中信息技術中對學生思維嚴謹性要求較高的一個模塊,雖然不在必修課之列,但是對學生的邏輯能力的提高有非常大的幫助。在學生學有余力的條件下,做好“算法與程序設計”教學,將會使學生的學習能力得到發展。
關鍵詞: 信息技術 高中教學 心得體會
算法與程序設計這個模塊在高中的教學體系中不在主流之列,涉及信息技術程度較深。但是算法與程序設計的內在邏輯卻是高中的關鍵思維,在數學必修3中算法設計成了獨立的一章,占有較大比重。筆者以VB語言為例,從實例教學、上機訓練、設計提高三個方面,分享在教學過程中的一點心得體會。
一、呈現實例,確立概念
在大家的印象中,程序設計就是所謂的敲代碼,一行一行,無窮無盡。事實上程序設計相互獨立且相互聯系。代碼的意義在于實現某一項功能,眾多功能就組成了一個程序。因此程序設計的教學也是模塊化的,呈現一個個實例,讓同學們明確程序的概念。
以一個求平均成績的程序為例。求平均成績的算法比較簡單,核心算法是一個加法配合除法。這是一個非常簡單的例子,但是涉及基本概念,可以作為一個實例呈現給學生。具體代碼如下:
Dim a As Integer,b As Integer,c As Integer,d As Integer,e As Integer,f As Integer
a=Val(InputBox(“輸入語文成績”)),b=Val(InputBox(“輸入數學成績”)),c=Val(InputBox(“輸入英語成績”)),d=Val(InputBox(“輸入物理成績”)),e=(a+b+c+d),f=e/4,Print“總成績;”;e,Print“平均成績;”;f,End Sub
在這個例子中,我先明確vb語言的概念。首先dim是進行定義的動作,后面緊跟的就是變量。一個程序離不開變量,當然也就離不開dim語句。a,b,c,d就是本程序中的變量,變量起到傳遞值的作用,是程序中的“搬運工”。“as”后就是變量的類型,在本程序中變量類型為“integer”,即整數型變量。接下來的幾個帶有“=”號的語句,就是本程序中實現功能的主要語句,不同的程序有著各種各樣的形式。在這一部分,通常是一些功能性的函數和賦值。明確這個概念,程序設計的主體框架就能建立起來了。在程序的最后,往往有“print”等語句進行輸出,形式不一而足。“End Sub”則是整個程序的結束,沒有實際的功能,而作為一個間隔的符號。
初識VB語言,很多概念一擁而入,實在難以掌握概念。對于基礎的概念定義來說,算法與程序設計中的說法比較抽象,難以把握其中的內涵。因此,從多個方面來講,用一個實例進行概念的認知,是非常必要的。
二、上機作業,強化練習
程序設計有個顯著的特點,就是嚴密性。找“bug”(漏洞)是程序設計中最令人頭痛的事情,而且非常浪費精力。對于VB程序設計來說,嚴密設計還可以用電腦程序來輔助。正因為這樣,程序設計不能與上機實驗分割開來。
以VB程序調試功能為例。我在教學過程中反復強調上機操作的重要性。然而在課堂上我只能精心講解案例,介紹基本操作,留給同學們的時間很少。在上機課上的時間也很有限,因此我特別重視上機實驗這段時間。我設計了一些上機任務,供同學們在上機時強化練習。其中,我突出說明了調試對于上機操作的作用。由于程序設計的代碼繁多,我也不可能把同學們各自的“bug”都找出來,因此調試是一種自主評判、修正的方式,適合同學們在作業中加以運用。在正常視圖下,點擊菜單欄中的“視圖”按鈕或者按下快捷鍵“F8”,即可開始逐語句調試程序。如果被調試語句有問題,字體就會被標紅,我們需要對標紅的語句進行仔細審查,對與該語句相關的語句要檢查是否邏輯有誤。調試是上機作業中一項必備的技能,讓程序實現功能,調試無誤后,該程序基本就可以確認合格了。
三、課程設計,鞏固技能
(一)理解范例,完善思維。
課程設計是程序設計的最終考核。高中階段的算法與程序設計學習,只需停留在了解的層面就可以了,課程設計的要求只是能夠獨立設計一個簡單的小應用。這種應用與單獨的程序不同,有著高度的獨立性,對學生的思維嚴謹性有著更高的要求。
以期末考試成績統計軟件作為一個講解的范例。下面是部分代碼:
Private Sub fenshu_KeyPress(Index As Integer,Key Ascii As Integer),If KeyAscii<48 Or KeyAscii>57 Then,If KeyAscii=46 Then,KeyAscii=46,Else,KeyAscii=0,End If,End If,End Sub
這段代碼的作用是將輸入文本框中的內容限制為小數和小數點。其實從全局來看,限制文本形式是一個非常精細的環節。但是輸入內容如果不加限制,那么影響到的是數據源,最后成績計算會出現問題。程序設計者當然知道成績輸入框要輸入數字,那么設計者在調試的過程中會想當然地輸入數字進行調試,從而忽略限制文本形式的問題。那么這樣的話,整個程序設計出來,肯定是要出現問題的。講課程設計就要講它的注意點,注意點其實就是一些想不到的細節。
(二)自主設計,拓展提高。
課程設計是綜合技能的考驗,學生最終的目標是自主完成。當然,完成課程設計,即獨立完成一個簡單應用的全部代碼和組件,還是有一定難度的。這部分教學還是以拓展提高為目的,不做硬性要求。
在基本的教學任務完成之后,我還安排了課程設計。設計以簡單功能的應用為主,并且各個題目都有近似的范例作為參考,基本就是照貓畫虎。課程設計的選題有很多,功能也各具特色,激發了同學們的興趣,其實無論結果,這就已經達到教學目的了。不加入“考試”這種壓力元素,課程設計其實是一個完美的結課手段。大部分同學都運用“排比”的手法堆積語句,就可以實現程序的基本功能。例如:
If song.Value=True Then,Label.FontName=“宋體”,End If,If fangsong.Value=True Then,Label.FontName=“仿宋”,End If
簡單的排比語句,加上細節修飾,完成課程設計問題不大。
自主課程設計本身不是一項考核,更像一個引導。一行行敲代碼看不到希望,將代碼組成一個小應用,就增強了學生的成就感。任何學習都離不開自主,讓學生漸漸獨立思考,才是最終的教學目標。
參考文獻:
[1]浦曉英.案例教學法在高中算法與程序設計中的應用探索[J].中小學電教,2014(3).
[2]趙楠楠.高中《算法與程序設計》課程教學的改革[J].科技風,2014(18).