林梓雨
摘 要: 自新課程改革以來,高中信息技術(shù)教材內(nèi)容發(fā)生很大的變化。除了必修模塊外,還有五個模塊的選修課程,其中《算法與程序設(shè)計》相對于其他選修模塊,知識點多,內(nèi)容環(huán)環(huán)相扣,代碼學習起來枯燥難懂,大部分學生學習一段時間后都有厭煩情緒。因此,對于教師而言,如何有效組織教材、設(shè)計好教學內(nèi)容、采取有效的教學方式是一個極大的考驗。作者結(jié)合多年的教學心得,對選修模塊《算法與程序設(shè)計》的教學策略略作探討。
關(guān)鍵詞: 新課程 《算法與程序設(shè)計》 教學策略
近年來,國家一直提倡要提高自主創(chuàng)新能力,在信息技術(shù)領(lǐng)域,很多學科的自主創(chuàng)新都跟程序有不可分割的聯(lián)系,因此,高中生學習基礎(chǔ)編程正當其時,而《算法與程序設(shè)計》這門課正好可以作為啟蒙課程。但是,接觸過編程的人都知道,編程語言要記的內(nèi)容很多,包括各種數(shù)據(jù)類型、關(guān)鍵字等概念和術(shù)語,還要理解各種語法,并且要熟練應(yīng)用這些語法進行解題。這對于那些思維活躍、邏輯能力強的學生,學習這門課來得心應(yīng)手,事半功倍,但對于其他大部分學生,學習起來相對會吃力一點,畢竟編程里面的這些語言和語法比較抽象。因此,如何將這些知識通俗易懂地講解出來,讓學生既容易接受,又能融會貫通并應(yīng)用于解題中,這對教師而言是一個不小的考驗。下面我就自己講授這門課所采用的教學方式和手段與大家交流。
一、巧打比方,化解語法理解難題
學習編程,必須掌握的程序基本控制結(jié)構(gòu)有:順序、分支、循環(huán),這三種類型都有對應(yīng)的格式,在VB語言里,分支結(jié)構(gòu)有if和select case兩種語法,循環(huán)有for和 do while…loop等,正確理解并掌握這些程序結(jié)構(gòu)和語句的應(yīng)用是學好編程的基礎(chǔ),是重中之重。在教學中,難點正是這些語法和概念。這些內(nèi)容,教師若只是照本宣科地講授,把語句機械地進行“翻譯”,就算講得再好,學生也是一頭霧水,就算聽懂語法的含義,碰到問題無法靈活應(yīng)用,教學效果差強人意。如果在講解語法的過程中,巧打比方,把語法搬進生活化的例子中,就可以把這些抽象難懂的知識變得既形象又有趣,達到“一語道破天機”的教學效果。
在學習程序時,學生最先接觸的是順序結(jié)構(gòu),它是程序結(jié)構(gòu)中最簡單的一種,也是學生最容易理解的一種,學生只要根據(jù)題目,按解決問題的步驟依次寫出代碼,VB在執(zhí)行代碼時按照語句順序一條一條執(zhí)行,就稱為順序結(jié)構(gòu),這個好比是工廠里流水線加工產(chǎn)品一樣,原材料順著流水線的工序,一道一道加工后,最后做成產(chǎn)品,都是一樣的道理。在順序結(jié)構(gòu)里,一個經(jīng)典的例子就是數(shù)值交換,比如x=6,y=10,問學生如何交換x和y的值。很多學生剛看到這個問題,下意識地就回答:x=y,y=x,我也不直接說這樣是對是錯,讓學生打開VB軟件代碼一運行并輸出,就會發(fā)現(xiàn)這樣處理的結(jié)果是x和y都是變成10,學生就會思考為什么是這樣,然后我再總結(jié):這個問題,打個比方,就像我有兩瓶墨水,現(xiàn)在我想交換兩個瓶子里的墨水,我應(yīng)該怎么做?通過這個生活化的例子,學生很自然就想到:哦,我應(yīng)該再拿個空瓶子,才能完成這個交換過程。這個時候再去解釋數(shù)值交換語句:z=x,x=y,y=z,學生就恍然大悟,一下就明白。對于分支語句,相對而言是比較好理解的語句,在教學中,有很多生活中的例子可以用來對比,就像語文中的“如果出現(xiàn)什么情況,那么我會怎么做”。比如:明天是周天,你正打算明天怎么安排,那么有很多因素會影響到你的最終安排。
(1)如果明天下雨,那么我會待在家里練字(只考慮下雨情況);
(2)如果明天下雨,那么我會待在家里練字;否則,我要跟同學去郊游(考慮兩種情況)。
對比if語句的兩種常用格式:
“if條件then語句”及“if條件then語句一else語句二”。
理解好if語句的含義和用法,學生可以輕而易舉地處理各種分支語句的題目。分支語句中條件表達式是一個難點,主要是條件中出現(xiàn)的or和and運算,以a or b運算為例,只要a或者b有一個值是true,那么a or b的值就是true,打個成語,就是“一榮俱榮”;對應(yīng)地,a and b運算中,只要a或者b有一個值是false,那么a and b的值就是false,打個成語,就是“一損俱損”,通過打比方,學生就很容易記住or運算和and運算的規(guī)則了。在三種程序結(jié)構(gòu)中,循環(huán)語句是最難的一種結(jié)構(gòu),在VB語言里常見的循環(huán)語句有for循環(huán)和while循環(huán),大多數(shù)學生難于理解循環(huán)的過程,以及兩者之間的區(qū)別,以致不會靈活運用循環(huán)進行解題。因此,教學的關(guān)鍵就是如何讓學生通俗易懂地理解循環(huán)的含義,運用生活中的例子進行形象化對比,就可以輕松解決這個問題。比如在講解for語句時,我就拿生活中的爬樓梯作對比,for循環(huán)類似于爬樓梯,樓梯的階數(shù)就是給定的,從下到上編號為1,2……n,循環(huán)里的循環(huán)變量代表一個人,初始值和終值對應(yīng)于樓梯的階數(shù),步長的值就是走一步跨幾步樓梯;步長大于0代表上樓,步長小于0代表下樓。對比這個例子,讓學生理解以下幾個循環(huán):
1)for i=5 to 22 step 3
2)for i=56 to 4 step -2
3)for i=3 to 30 step -2
學生對比循環(huán)和走樓梯的過程,很容易就理解三個例子的含義和循環(huán)過程,加深對循環(huán)結(jié)構(gòu)程序的理解,為后面循環(huán)語句的應(yīng)用打下堅實的基礎(chǔ)。
二、以問題為主線,貫通知識點
要學好《算法與程序設(shè)計》,除了要識記各種常見的數(shù)據(jù)類型、運算符、關(guān)系表達式、關(guān)鍵字、語法外,更重要的是要根據(jù)題目的要求綜合運用這些知識。教師如果單純地按照課本的編排進行教學,僅這些識記的知識就要花好多課時,而一味講授這些知識點,教師教起來枯燥無味,學生聽起來興趣索然,嚴重打擊學生的學習信心。一種巧妙的做法是:以語法為主線,以題目為媒,把知識點分散到不同類型的題目中。通過教學課前精心準備的趣味題目,穿插該題用到的知識點和語法,讓學生在完成題目的同時,“順便”學習相關(guān)知識點,這樣,既可以達到“潛移默化”的教學效果,又讓學生“學以致用”,取得良好的教學效果。以前面介紹的程序結(jié)構(gòu)為例,在學習順序結(jié)構(gòu)時,我布置一道簡單的數(shù)學題:輸入梯形的上底,下底和高,求梯形的面積。這道題看似簡單,但是卻包含了很多VB的知識點:第一,讓學生分析這道題的解題過程,涉及編程里的算法;第二,讓學生分析變量的類型,用到數(shù)據(jù)類型中的integer和single;第三,計算梯形的面積,用到VB里的運算符;第四,代碼實現(xiàn)時,讓學生知道程序的四個基本組成部分:數(shù)據(jù)類型說明、輸入、程序處理、輸出;再比如分支結(jié)構(gòu),布置一道常識題:輸入一個年份,輸出它是否閏年,是閏年就輸出TRUE,不是就輸出FALSE。學生要完成這道題,至少要學會關(guān)系表達式、邏輯運算符、if語句的語法等。按照我的教學策略,幾乎每節(jié)課都會布置一道題目,每道題用到的新的知識點,都會加以備注或者適當講解,學生在學完用到的新知識,自行分析題目的解題思路,就可以直接加以運用,這樣既可以鍛煉學生的思維能力,又可以輕松實現(xiàn)課堂的教學目標。對于學生而言,每節(jié)課的題目的順利完成,就是他們最大的收獲,這里的收獲既包括知識,又包括學習的信心。
三、結(jié)合微課程,促進教學均衡
《算法與程序設(shè)計》教材用到的編程軟件是Visual Basic,它簡單易用,容易上手,對于初次接觸編程的學生來說,難度不是很大。當然,對于從農(nóng)村考入高中的學生而言,由于初中沒有什么條件接觸電腦,可能還是要花更多的時間熟悉這個軟件。用VB進行編程,主要分兩個部分:一個部分是界面設(shè)計,另一部分就是在界面的控件里編寫相應(yīng)的代碼。下面我主要介紹對界面部分的教學心得。其中VB界面的學習主要包括常用控件、屬性、資源管理器的學習,這些內(nèi)容,學生只要熟悉操作,一般都可以掌握,而利用微課程的優(yōu)點,可以讓不同進度的學生通過自學微課程,迅速縮小學習差距。具體做法如下:教師在課前精心組織,以VB常用控件的使用、屬性設(shè)置為重點,利用微課錄制軟件Camtasia Studio把教師的講解聲音和操作錄制成一個6分鐘左右的視頻,這樣在課堂上教師只要把這個視頻分發(fā)給學生或者放在教學平臺上,學生就可以隨時通過這個視頻給自己查缺補漏,完成本節(jié)課的教學目標,實現(xiàn)課堂教學的均衡。當然,在學習到語法內(nèi)容時,也可以利用微課程來進行輔助教學,比如前面接受的三種程序結(jié)構(gòu),涉及語法知識,教師同樣可以預(yù)先錄制好語法講解的微課程,滿足學生的不同需求。
在我看來,《算法與程序設(shè)計》是一門技術(shù)型課程,教師不能按部就班地照著課本的內(nèi)容講解。因為講授這門課的目的不是單純地讓學生識記那些語法語句,而是要讓學生掌握VB語言這個工具,解決實際的一些與數(shù)學相關(guān)的問題。正所謂“授之以魚,不如授之以漁”,學生只有真正掌握并會運用VB語言,才能在碰到問題時加以解決。因此,本文中提到的教學措施和手段,目的在于構(gòu)建能培養(yǎng)學生的學習興趣、促進學生實踐能力、提高教學效率的課堂模式,踐行新課程中培養(yǎng)學生動手能力的要求。