嚴樹 周雪瑩 嚴函
【摘 要】本文論述中學信息技術課程中程序設計課型的教學策略,針對學生在學習算法與程序設計課時欠缺符號和概念的理解能力、欠缺將復雜問題分解的能力、閱讀程序代碼能力差和缺乏調試修改程序代碼的能力等問題,提出形象直觀引入概念、垂直分解問題、掌握程序閱讀技巧、用錯糾錯學會調試等適用于算法與程序設計的教學策略。
【關鍵詞】中學信息技術課程 程序設計 教學策略 算法 ?邏輯思維
【中圖分類號】G ?【文獻標識碼】A
【文章編號】0450-9889(2019)08B-0151-03
信息時代,信息技術成為學科與學科之間的橋梁,尤其是算法與程序設計這一部分的內容,可以最大化地訓練學習者的邏輯思維能力,如果學生能很好地掌握,那么就能更好地輔助其他重點學科尤其是數(shù)理化的學習。近年來,廣東、四川、福建、北京、湖南、浙江等地都將算法與程序設計納入高中會考內容,由此可知其越來越占據(jù)著重要地位。中學信息技術課堂中算法與程序設計這一模塊內容主要集中在高中階段,其內容難度大且比較枯燥。因此,研究如何在算法與程序設計這一模塊的教學中采用好的教學策略有著重要的意義。
一、算法與程序設計教學中存在的問題
(一)欠缺符號和概念的理解能力。在信息技術學科里,抽象對象或者說抽象符號占據(jù)了絕大部分,抽象對象一般只存在于意識之中,對意識中的對象進行運用,需要有一定的中介,各種符號系統(tǒng)就充當了思維媒介的角色。在信息技術科學或者數(shù)學中,想要表示某一具體算法或程序時,就需要借助符號或概念來表示。算法在本質上蘊含著一種符號化抽象思維的特質,因此算法與程序設計的符號有些與數(shù)學上的符號表示是相同的,但是所蘊含的含義卻是大相徑庭。例如,變量的賦值號意義與數(shù)學等號含義在表現(xiàn)形式上是一樣的,但是意義卻是不一樣的,如果理解不清楚,往往容易出現(xiàn)知識的負遷移。一般負遷移的產生常在兩種學習相似又需要差別對待的情境下,但是符號抽象概念的理解能力欠缺的學生,往往就會在相近的兩種知識中產生混淆,因而對學習產生了阻礙作用。
(二)欠缺將復雜問題分解的能力。分解問題能力是算法與程序設計的一種重要的邏輯思維能力,學生在處理一些問題時,如果問題太難太復雜,要想他們一下子就能想出問題的解決策略,比較難做到,而且還會打擊學生學習的積極性。這時候就要把復雜整體問題分解成多個子問題。算法與程序設計中,學生遇到的問題經常是難度大而且復雜的,需要很強的邏輯思維能力。因此,如何在教學中培養(yǎng)學生分解問題和培養(yǎng)學生解決問題的邏輯思維能力成了當務之急。
(三)程序語言與日常使用的語言存在差異。程序語言是計算機能夠識別并執(zhí)行程序的語言,本身就具有抽象性。要將自然語言的描述轉換為嚴謹?shù)某绦?,這是學生最難跨越的地方。根據(jù)調查和上課的反饋發(fā)現(xiàn),有學生不知道該如何將自己的想法轉換為代碼。例如有的學生一到自己編寫代碼時,總是問老師有沒有這樣的例題或者程序模板,還有的學生會做題但就是不知道怎么寫代碼。
(四)缺乏調試修改程序的能力。程序調試時主要存在以下問題:
1.編輯錯誤。所謂編輯錯誤,就是在代碼窗口輸入程序代碼時,編程環(huán)境會自行檢查語法,當沒有輸入一句完整的代碼或者所輸入的關鍵詞有誤時,編程環(huán)境都會自動跳出一個錯誤提示窗口,提示學生修改所出現(xiàn)的錯誤。
2.編譯錯誤。在寫好程序時,都會先進行編譯,當學生點擊“啟動”按鈕運行程序時,編寫好的代碼被進行編譯,此時出現(xiàn)的錯誤就稱之為編譯錯誤。當學生沒有嚴格遵循編程的語法和規(guī)則時,就會出現(xiàn)編譯錯誤。
3.運行錯誤。當編寫好的代碼正在運行且被編程環(huán)境檢測期間,一個語句試圖執(zhí)行一個原本就不能執(zhí)行的操作時,運行錯誤就會呈現(xiàn)。這種錯誤從代碼表面上是無法識別出的,只有當學生運行程序時才能夠檢測到。這類錯誤,學生比較難發(fā)現(xiàn)。
4.邏輯錯誤。學生編寫好代碼,能運行并輸出結果,但是所產生的結果與預期的不一樣,這時候就是程序邏輯出現(xiàn)錯誤了。對于邏輯上的錯誤,編程環(huán)境是無法檢測出來的,因此也沒有提示信息,只能通過學生認真分析檢查程序并進行調試修改,這對學生來說難度最大。
二、解決學生學習中難點的教學策略
(一)形象直觀引入概念。形象直觀地引入概念,即是將所提出的問題與學生所熟悉的生活案例進行形象生動的類比,引入概念;或者運用直觀教具、視頻、圖片、PPT 展示及手動操作等,加深學生對概念的形象認識,將所學概念的本質理解得更為透徹。
例如在變量講解的教學過程中,教師可以具體形象地聯(lián)系實際進行教學,讓學生先對知識進行感性認識,做到形象直觀教學,重視揭示新知識的本質特征,加強學生對新知識的感性認知,克服知識負向遷移的影響,然后才能夠在自己的大腦里形成經驗和知識。
變量是某個空間的標識符,是代表某個空間的名稱,在程序執(zhí)行過程中,變量的值總是在變化,是新值代替舊值的過程。在程序設計過程中就需要這樣的臨時空間來存放中間結果和最終運算結果,而且變量是程序運行的一個動態(tài)的、可變的管理過程,不能夠只是停留在表面語句解釋上。但是臨時空間這個概念,是看不見摸不著的,是抽象的,只有靠學生自己去想象,才能理解。顯然,如果老師對變量的解釋就是這樣一句話帶過的話,缺乏抽象思維的學生就不能理解。我們可舉電腦室的管理方式這樣一個例子。首先,先讓學生明白變量就是某個空間位置的標識符,在日常管理中用標識符來表示空間位置的管理方法是經常用到的,給學生看表1這樣的表格。
學生看到這個表格就會知道這是三年來機房的使用情況,使用時,將某個空間用 303 號和 304 號分別表示某個空間位置,而學生是隨著時間的推移是在變化著的,同一個機房,因為年度不一樣,使用的學生也不一樣,新一個班的學生進來,老的班級學生就要出去了,這是一個動態(tài)的管理過程。
通過這樣進行比較形象化知識,將知識形象化來揭示其本質特征,克服知識負遷移對思維的阻礙作用,學生能順利地對新知識進行辨別和記憶以及運用,理解賦值過程是一個動態(tài)的過程,而賦值號也不是等號的概念。因此在教學中尤其是抽象難理解的新概念新知識,教師一定要想方設法將知識形象化和具體化,聯(lián)系實際生活,直觀教學,攻破難點。
(二)垂直分解問題,培養(yǎng)編寫程序的邏輯思維能力。垂直分解就是把一個學生認為難以解決的復雜問題,分解成一連串上下聯(lián)系緊密的問題。一般下一個問題的條件要從上一個問題的結果中尋找。因此,下一個問題能否解決取決于上一個問題解決的程度。垂直分解的關鍵點在于準確找到將問題分解的“連接點”,而分解問題的連接點尋找,一般是依于靠個人觀察題目、聯(lián)想、經驗、比較、總結得出。將復雜問題通過垂直分解成若干個小問題,從而降低問題解決的難度,有利于問題的解決。
例如,在“循環(huán)結構”的學習過程中,首先提出一個問題,讓學生用循環(huán)結構畫出 200 個同心圓。這樣一個復雜的問題一提出,學生就會覺得過程很復雜,不知道該從哪兒下手。此時,教師可以先讓學生寫出畫一個圓的程序,那么學生就會知道用 Circle 函數(shù)繪制一個圓,教師再呈現(xiàn)程序,學生可以猜出程序的各個參數(shù)的含義。學生通過改程序的參數(shù),可以在不同的位置畫出半徑大小不一樣的圓。接著,教師再讓學生畫5個同心圓,學生就會想到重復編寫五次畫圓的程序。此時,教師給出的后一個問題和前一個問題就通過了相類似程序代碼這一“連接點”連接起來。教師再對后一個問題進行提示、點撥,告訴學生凡是需要重復性的工作,計算機都會有自己的方法,也就是使用循環(huán)結構。接著跟學生展示使用循環(huán)結構畫五個同心圓的程序代碼,學生觀察代碼,教師再向學生展示使用循環(huán)結構畫 10個同心圓的代碼。學生分析教師給的代碼,能夠立刻領悟。
將比較難以理解的問題分割成為前后關聯(lián)的小問題,問題之間的設計具有層次性和系統(tǒng)性,從簡單到復雜。學生在解決這些問題的過程中,教師慢慢幫助學生層層推進,引導學生由基礎、簡單的問題不斷思考,建構出相應的模型。在不斷使用同一種問題解決思路解決問題的過程中,學生的能力將呈螺旋式上升,有助于鍛煉邏輯思維。以后再遇到復雜的問題時,學生就可以有序地、符合思維邏輯地解決,不至于束手無措。
(三)讓學生多閱讀程序,熟悉程序語言。既然計算機程序是一門語言,那么它就有語言的共性。學生在編寫代碼時,也知道代碼的基本語句,但是卻無法獨立地編寫出代碼。教師在教學中,首先,可以培養(yǎng)學生閱讀程序的能力,讓學生多觀察一些程序代碼,并要求學生給每一句代碼都注釋,不知道意思的可以自行查閱。一些專有的循環(huán)體和結構可以摘抄一下,觀察多了,自然就會形成一種條件反射,先寫什么后寫什么,學生腦子里就會有一個明確的思路。
其次,教師要求學生在自己寫代碼時,一定要言之有據(jù),每寫一句代碼,自己都要能解釋出來該句話的意思。程序代碼的編寫其實是一門藝術,如果學生養(yǎng)成良好的編寫習慣,不僅能讓自己對新問題自動生成一種解決思路,還能使代碼邏輯更加嚴謹,修改更容易、更好理解。這樣堅持一段時間,學生基本能克服程序語言表達的障礙。
(四)用錯糾錯,學會調試。當學生在向教師請教程序調試問題時,教師可以先觀察這些錯誤,若是很簡單很明顯的錯誤,比如字母打錯,或者中英文符號切換用錯,那么教師可以讓同桌之間互相檢查。若是學生自己或相互討論找出了原因,他們不僅覺得很有成就感,而且對這一程序會有新的認識,今后編寫代碼也不容易犯相同的錯誤。
同時,學生若是提問比較難發(fā)現(xiàn)而又是很典型的問題,教師可以用錯糾錯,引導學生自己去發(fā)現(xiàn)錯誤。如何用錯糾錯呢?在教學時,教師要做到以下三點:第一,巧妙設置“錯誤”,因勢利導。根據(jù)以往的教學經驗,教師知道學生在編程時哪個地方容易出現(xiàn)錯誤,那么就可以將這個錯誤拋給學生,學生發(fā)現(xiàn)這個問題與自己的想法沖突時,就會想知道問題出現(xiàn)在哪,增強學生的求知欲望。第二,典型錯誤,集體糾正,比如循環(huán)語句用成了選擇語句或者屬性設置錯誤,這些都是典型錯誤,可以集體糾正。那么不管是犯錯的學生還是糾錯的學生,在以后的編寫程序中都會多留一個心眼,考慮問題也會更加全面。第三,正誤對比,促進轉化。在教學中,教師在糾正學生的錯誤時,一定要將正確的程序和錯誤的程序都執(zhí)行一遍給學生看,然后將學生錯誤的代碼進行分析,修改后執(zhí)行一下,讓學生對比修改前和修改后的程序,學生自己就能發(fā)現(xiàn)問題在哪兒,進一步修改自己的代碼。學生發(fā)現(xiàn)自己寫的代碼在哪一點錯了,會比教師指出來還要記憶深刻。
中學信息技術課程中程序設計教學法研究任重道遠,算法與程序設計的教學策略更要不斷改變、不斷創(chuàng)新,以學生為主,不斷研究、不斷嘗試,找到適合學生個體差異和符合算法與程序設計內容的教學策略,讓學生愛上學習。
【參考文獻】
[1]范雪飛.高中學生算法學習的困難分析與對策研究[D].延邊:延邊大學,2010
[2]曹紅玲.研究程序設計中的并發(fā)復雜性[J].計算機光盤軟件與應用,2013(4)
[3]馬小龍.VB程序設計中“五步教學法”的應用研究[J].實驗室科學,2011(2)
【基金項目】2016年度玉林師范學院高等教育本科教學改革工程項目“教育技術學(信息技術)專業(yè)師范生教學技能訓練與考核標準研究”(2016XJJGZX14)。
【作者簡介】嚴 樹(1982— ),女,湖北嘉魚人,教育技術學碩士,玉林師范學院教育科學學院講師,研究方向:信息技術教育與應用。
(責編 江月陽)