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