宋建年
摘要:2014新版《初中信息技術》首次將VB程序設計引入教材,程序設計課是培養學生計算思維一個非常重要的途徑。那么在《初中信息技術》教學中如何以程序設計為線索,滲透和培養學生的計算思維能力?作為一種教學嘗試,也是一種教學改革,現將其中的一些教學實踐與大家共同探討和分享。
關鍵詞:計算思維;VB程序設計
中圖分類號:G633.67 文獻標識碼:B 文章編號:1672-1578(2017)02-0165-02
隨著時代的發展,蘇科版《初中信息技術》教材也不斷更新改版,2014年蘇科版教材首次加入了VB程序設計教學內容。思考改版后的教材為何加入VB程序設計教學內容?我想這是與目前信息技術發展和教學現狀是分不開的。隨著家用電腦的普及,傳統應用軟件難度降低,許多知識學生能夠很快掌握,況且許多工具軟件的操作具有相同點,學生也有知識遷移能力,一個熟練使用office的學生,能很快操作wps軟件,教材上的知識點相對比較簡單,不易提起學生的學習興趣;初中信息技術的教學現狀是課堂上 教師過多了強調知識與技能的操作,忽略了對學生思維的開發與培養,長此已往造成學生缺乏獨立思考的能力,思維得不到鍛煉,不利于的學生的終身發展。
基于這樣背景下,將VB程序設計引入到新版教材中勢在必行。VB程序設計是培養學生計算思維的重要載體,可以通過程序設計來訓練學生思維,獲得終身有用的知識與能力。將計算思維滲透到程序設計教學中,亦可大大提高學生思維方式和解決實際問題的能力。
那么如何在信息課教學中依托程序設計來滲透和培養學生的計算思維?這給我們教師提出了新的要求,我在教學工作中也做出一點嘗試。
1.一題多解,培養學生的發散思維
發散思維是指根據已有信息,從不同角度、不同方向思考問題,從多方面尋求多樣性答案的一種思維形式,它的特點是想象豐富,不循成規,不落俗套,它是計算思維的核心。
程序設計具有靈活多變的特點,為了克服思維定勢,教師在程序設計教學中應重視發散思維,提倡學生用不同的思路和方法解決同類型的問題,培養學生的發散思維。教師引導學生一題多解是培養他們發散性思維的一種好方法。教師在教學中的適當拓展,可以讓學生有眼前一亮的感覺,增加他們學習程序設計的興趣。
【案例】例如:在講解兩個變量交換時,交換的經典算法表達方式為:t=a,a=b,b=t。在學生理解使用中間變量這一算法后,我又提出,如何在不增加變量的情況下完成兩個數的交換?方法二:a = a + b,b = a - b,a = a - b,當然這一表達式的建構需要一定的數學思維。教師再拓展讓學生思考這兩種算法在程序執行上有什么區別?(第一種增加變量占用內存,第二種有數據運算消耗時間。)
【分析】變量交換是程序設計中經常用的到知識點,許多學生一開始會錯誤的認為a=b;b=a;就可以完成數據的交換。為了便于讓學生理解兩個對象交換是通過中間值來完成的,教學中可以用一杯水,一杯酒精、一個空杯來做變換實驗,來啟發學生的思維。在學生理解這一算法后,教師再做思維拓展,使用數學方法來完成兩個數的交換,培養和訓練學生的發散思維。
2.一題多問,培養學生的創新思維
創新要靠科學素養,靠科學的思想與方法。學生掌握了科學的思想與方法,就能在今后的學習和生活中多層次、多視角、全方位地觀察和理解客觀世界的變化,運用已經掌握的知識和科學方法去理解事物、發現問題、提出問題、解決問題。創新思維是計算思維的一個重要體現。
好的程序一定有好的算法,一個好的算法本身也是程序優化的過程。在有許多算法都能夠完成時,我們要優先選擇執行效率高的代碼。教學中教師要倡導優化算法,培養學生創新思維。
【案例】在教學"判斷數p是否是素數"的問題時, 依據素數的判定條件:p不能被 2 、3 、……p - 1 之間的數整除。學生們想到的全是傳統算法:For i=2 to p-1;If p Mod i=0 Then Exit For ;Next i。接下來,我引導學生對算法進行優化:若p不是素數,則p必定能表示成兩數之積,據此判斷素數的條件可進行怎樣的優化呢?"只要判斷p能否被2、3……sqr(p)之間的數整除就行了"。于是可以將循環的for語句的終值改變為sqr(p)。考慮到除2外的偶數一定不是素數,我們只需對奇數進行判斷,而奇數一定不能被偶數整除。因此,判斷條件可進一步簡化為"判斷p是否能被2及3……sqr(p)之間的奇數整除"。
【分析】教學過程中教師不斷詢問引導學生找到判斷素數的最優算法。教師先要求學生根據定義寫出最容易想到的基本算法,然后在此基礎上引導學生根據數學知識,減小循環的終值,最后再次改變循環的步長,減少循環次數,進一步優化程序,增加程序執行效率。通過幾次算法的優化,培養了學生的創新思維,學生在教師不斷的提問過程中,學生積極思考潛能得到開發。
3.一法多用,培養學生的化歸思維
化歸思維就是在研究和解決有關問題時采用某種手段將問題通過變換使之轉化,化歸方向是將復雜問題通過變換轉化為簡單問題;將難解的問題通過變換轉化為容易求解的問題;將未解決的問題通過變換轉化為已解決的問題;而問題的實際不變,以便從不同的角度、不同的方向說明問題的本質,使本質的東西更全面更突出的顯露出來。
程序設計教學中許多算法是相同的,我們應該多注意"通法"的教學,是同一個方法就可能完成的,這就要求學生在理解基本程序的基礎上舉一反三,觸類旁通,正所謂"教是為了不教",從而培養學生的化歸思維。
【案例】一百元買一百只雞:假定小雞每只5角,公雞每只2元,母雞每只3元。現在有100元錢要求買100只雞,編程列出所有可能的購雞方案。如付錢問題:取1元,2元,5元的硬幣共10枚,問學生付25元錢,有多少方法?
【分析】這兩題雖然題目不一樣,但解題思路是一樣的。他們的算法也是一樣的,采用窮舉法就可以完成。程序設計中有許多題目可以化歸為窮舉法、遞歸法、回溯法等經典算法去完成,這就要求學生能夠透過題目的表象,利用化歸的思想去設計程序。
計算思維做為21世紀一種重要的思維能力,不僅僅在程序設計章節中有所體現,而在非程序設計教學模塊中也應得到充分的體現;計算思維的培養也應該滲透到學生日常的所有科目中,從小學到大學,所有學科都應當培養學生的計算思維能力,而不僅僅只寄希望與信息技術課堂教學中。
參考文獻:
[1] 周學東《程序設計教學中學生思維能力的培養》——《中國信息技術教育》2011.6
[2] 王移之 金一 周圍《基于"計算思維"能力培養的教學改革探索與實踐》——《中國大學教學》2014.3
[3] 陳寧波《VB教學研究》——網上資料
[4] 王榮良《計算思維:一種新的學科思維方式》——《中國信息技術教育》2012.6
[5] 李冬梅《關于中小學信息技術學科價值的幾點思考》——《中小學信息技術教育》2013.2