☆楊曉峰
(上海松江二中現代教育技術組,上海 201600)
算法與程序設計是上海市高中信息科技教學的三個選修模塊之一。筆者在多年的高中算法與程序設計教學中發現,學生學習的主動性不足,部分學生反映“算法與程序設計的學習枯燥乏味”。
筆者以為產生這種情況的根本原因是學生的學習動機不足。很多教師專注于教學方法的優化和教學設計的推陳出新,卻忽略了對學生學習動機的研究。高中的算法與程序設計教學需要學生積極主動的思考,培養學生的抽象思維,進行知識的建構。學生在沒有明確為什么學習算法與程序設計,沒有切身體驗到學習內容對自己的學習和生活有什么幫助的情況下,他們的學習只能是被動地學習。而缺乏了學生積極主動的參與,無論教師如何改進教學方法,教學的效果必然大打折扣。
ARCS動機設計模式是由美國南佛羅里達大學的心理學教授J.M.Keller提出的。這一模式認為,影響學生學習動機的因素有四類:注意(attention)、切身性(relevance)、自信心(confidence)、滿足感(satisfaction)。因此,教師在進行教學設計的同時,還應該進行適當的動機設計,即針對學生群體的動機狀況和教學內容的特點設計相應的動機策略,設法使教學過程能夠引起并維持學生的注意、建立起教學與學生之間的切身性、使學生產生并維持對學習的自信心、并提供一種滿意感,那么教學就能激發學生的學習動機。
筆者運用ARCS教育理論,在高中算法與程序設計教學中進行了實踐研究。以激發學生的學習動機,促進學生主動學習為目標,在研究過程中不斷改進和優化我校的算法與程序設計課程。
注意是學習者進行學習活動的前提條件。教學應該有效地激發學生對教學內容的好奇心。在學生產生學習興趣的前提下有效維持學生的注意力,才能使學生主動地投入到高效率的學習中。
對于高中學生而言,算法和程序設計不僅是一門全新的課程,更是一個全新的學習領域。學生必然會產生“我為什么要學,學了有什么用”之類的疑問。這樣的疑問,并非開展教學活動的絆腳石。相反,如果很好解決這樣的疑問,幫助學生看到學習算法和程序設計的美好前景,反而會有效地激發學生的學習興趣,成為學生主動學習的助推器。
以“驗證歌德巴赫猜想”作為課題引入,開始算法和程序設計課程第一節課的教學。方案如下:
(1)連續設問:“大家了解數學皇冠上璀璨的明珠——歌德巴赫猜想嗎?”、“根據歌德巴赫猜想,偶數8可以是哪兩個質數的和呢?”。大多數學生對于歌德巴赫猜想是耳熟能詳的,所以,很容易就回答了以上兩個問題。
(2)繼續提問:“大家有沒有辦法算出2388是哪兩個質數的和呢?”學生開始拿出草稿紙進行計算。由于缺少正確的算法,他們的計算更多的是在碰運氣地湊兩個質數。題目的復雜讓大多數學生在一段徒勞無功地嘗試后選擇了放棄。
(3)程序演示:教師運行設計好的程序,在瞬間算出了正確的解答:1187+1201=2388。學生中一下子炸開了鍋。有的學生在贊嘆:“太給力了!”有的學生迫不及待地問:“老師,快告訴我們怎么編這個程序吧!”。
(4)教師引導:現在講解這個程序,大家理解上會有一些難度。但是,在大家學習了程序設計的知識和算法的思想后,我確信每個同學都能編寫這樣的程序。
教學中提出一些在學生認知最近發展區內的難題,雖然學生現階段無法獨立解決,卻能夠有效喚起學生的探究活動,啟發積極的思考。而對這些問題的求解,可以是我們進行下一階段教學的“潤滑劑”。
在學生掌握分支結構的基礎上,提出分支結構無法解決的難題,然后提出循環結構并有效解決難題。這不僅使新教學內容的引入自然順暢,也讓學生充分了解了循環結構的用途和適用范圍。
隨著教學過程的開展,學生的學習興趣和熱情會逐漸地消退,注意力也會開始分散。教師可以通過教育形式和教學媒體的改變,或是教師本人的肢體語言,或是表達風格的切換(幽默-嚴肅、大聲-輕聲等)以保持學生的注意力。
從教育心理學的角度看,有意義、有變化的教學內容更容易保持學生的注意力。
在講解符號“+”在字符中的連接作用時,筆者按照常規舉了個例子。A=“a”;B=“b”;C=A+B,所以,C的值是“ab”;D=B+A,所以,D的值是“ba”。學生的反應冷淡,自己也覺得索然無味。
于是在下一節課的教學中,筆者更換了舉例的內容。A=“開”;B=“放”;C=A+B,所以,C 的值是“開放”;D=B+A,所以,D的值是什么呢?教學到這步,學生已經搶著回答了“放開”。很多學生在這個時刻發出了會心的笑聲。
通過解決與學生切身相關的問題,使學生認識到算法與程序設計的學習與自己的學習和生活密切相關,與過去的經驗和以前學習的知識相互關聯。
明確學習的目的并取得學生的認同,對提高學習的主動性和保持學生的注意力至關重要。通過設計評委打分程序,并實際應用于社團評比活動中,使學生明確學習算法與程序設計有助于解決生活中的實際問題。通過一題多解,使學生感受到學習促進了自己創新思維的培養,思維的廣度和深度獲得了提升。類似的教學既突顯了算法與程序設計教學的特點,也讓學生切身感受到自身能力的提升。
利用學生經驗中熟悉的東西進行教學,從學生已有的生活經驗和知識體系出發開展教學,能有效降低學生參與新的教學活動的陌生感,提升學習的熱情。
在講解邏輯表達式的運算規則中,采用學生比較熟悉的單科獎學金和綜合獎學金進行舉例。
條件1:語文成績超過90分。條件2:數學成績超過90分。
P1(單科獎學金)的規則:只要有一門課超過90分。
P2(綜合獎學金)的規則:必須兩門課都超過90分。
由于以上規則是建立在學生熟知的基礎上,在下面學習邏輯運算符“AND”和“OR”的運算規則時,學生的學習顯得非常的順利。

條件1 條件2 P1(條件1 AND條件2) P2(條件1或 條件2)否否 否 否否是 否 是是否 否 是是是 是 是
在教師進行了必要的引導后,大部分的答案學生都可以自己推導出來了。
算法與程序設計要消除學生個人封閉學習的“偏見”,要挖掘共同學習的學習內容,形成濃烈的學習氛圍。
在模塊化程序設計教學中,筆者引導學生將設計評委打分程序的問題分解成四個模塊,并由四個小組各自完成一個模塊的求解。
第1小組:輸入8個評委的分數,并保存在數組a。
第2小組:根據數組中的分數,計算最高分,保存在max變量中。
第3小組:根據數組中的分數,計算最低分,保存在min變量中。
第4小組:根據數組中的分數,計算總分,保存在sum變量中。
當四個小組分別完成各自的任務后,計算平均分的工作就顯而易見了。學生利用(sum-max-min)/6就求出了平均分。
以上教學讓學生依靠集體的力量完成了工作量相對較大的任務,體驗了分工與合作的過程,也加深了對模塊化程序設計思想的認識。
算法與程序設計的很多思想對學生而言是全新的,是對常規的順序式的思維方式的突破。在教學中需要從學生已有的思維習慣入手,強調教學過程的循序漸進,幫助學生進行知識的建構。
在引入循環結構教學時,筆者采用了計算6個班級的捐款總額的例子。
學生固有的思維方式是順序式的依次累加。特別是學生習慣于將6個數字在草稿紙上全部記下來以后,然后計算總額。為此,筆者故意設置障礙,要求不得使用草稿紙。這樣學生不得不采用記住一個數值,和已有的總額累加,再獲取一個數值,再和已有的總額累加的方法。這樣,學生的計算方法就符合了計算機利用循環結構進行累加求和的方法,體驗到了循環體“輸入一個值,累加求和”反復執行的過程。
在此基礎上,筆者引導學生總結循環體“輸入一個值,累加求和”,分析循環次數,得出循環的結束條件,并確定循環變量的初值。與此同步,筆者在黑板上將上述的引導過程通過流程圖逐步勾勒出循環結構解決上述問題的過程,實現對知識的逐步建構。

步驟1:總結循環體 步驟2:分析循環次數,得出循環的結束條件步驟 3:并確定循環變量的初值
通過學習算法與程序設計,逐步解決從前無法解決的問題,掌握解決問題的方法,體驗到自身能力的提高,幫助學生在學習中樹立自信。提升學生的自信,是教學活動的目標。在教學過程中獲得的自信,也有助于學生在下一階段的學習中主動的投入。
在“驗證歌德巴赫猜想”的課題中,可以通過以下問題的設置。“如果n為偶數,a和b為所求的兩個質數,在確定a的值以后,b的值如何確定?”、“確定了b=n-a以后,分析 a的取值范圍?”、“當 a從 2到 n/2逐步取值時,b的值在如何變化?”、“如何驗證a是否為質數?”、“如何驗證a和 b同為質數?”,“當a和 b不同為質數時,a和b如何取值,逐步縮小取值范圍?”、“循環的結束條件是什么?”。最終學生得出a從 2到 n/2逐步取值,b始終取值為 n-a,當 a和 b同為質數時就得到了正確的答案。讓學生充分發揮學習的主動性,在不斷求解新問題的過程中獲取知識,在一步步的成功中看到自身能力的提升,從而增強學習的興趣和信心。教師對學生的每一份努力、每一次進步,應給予及時而適當的表揚,激發學生積極的學習心態。
通過一題多解等方式,突破常規思維方式,培養學生的創新意識和創造能力,強化學習的自信心。
在學習交換兩個變量的值時,教師先講解常規的解題方法。然后提出不用中間變量,引導學生思考更高效的解題方法。

常規方法 創新方法一 創新方法二a=5 b=3 t=a a=b b=t a=5 b=3 a=a+b b=a-b a=a-b a=5 b=3 a=a觹b b=a/b a=a/b
在教學中教師應組織強化,幫助學生達到自己的學習期望,使學生從學習中獲得滿足。而這份從學習中獲得的滿足感必將轉化為進一步主動學習的動力。
在評委打分程序的教學中,如果只是簡單地實現總分除以人數得出平均分是不能真正讓學生滿意的。經驗告訴他們實際比賽中使用的評委打分程序并非如此。這里需要引入最值問題的求解。只有讓學生掌握了求解最大值和最小值的方法,并在此基礎上實現了“計算總分,去掉一個最高分,去掉一個最低分,最后得出平均分”這一符合實際應用的方法后,他們才會略感滿足。
在和實際應用的比較中,學生又會發現程序新的不足。剛才設計的程序只能實現多個評委對一個學生的打分。對該學生的打分完成后,程序就結束了。顯然現實中并非如此。這里又需要引入雙重循環的概念,使用外部循環處理多個學生,使用內部循環實現多個評委對一個學生的打分。
在與現實應用的不斷比較中,學生不斷地發現現有程序的不足。通過進一步深入地學習,他們不僅拓寬了自己的知識面,更對自己的程序更具實用價值感到滿意。
意識到自己的程序具有使用價值以后,學生總是希望盡可能地在實際生活中使用它。學校的社團評比提供了應用評委打分程序的舞臺。教師幫助解決了電腦和投影設備等環境的布置。學生則對程序運行界面作了進一步的美化,在得出一個相對較高的得分時,程序還會發出驚嘆的擬人聲音。使用電腦程序進行評委打分的過程是令人滿意的。這不僅提高了評委打分的效率,也讓設計程序的學生獲得了成就感。
教學中提供給學生真實的問題解決環境,讓他們應用已有知識解決實際問題。在此過程中,讓每一位學生充分發表自己的見解,積極鼓勵學生大膽嘗試并提供必要的引導和幫助。當這些大膽的嘗試取得積極的成果,并且符合學生的預期時,學生的學習動機就會被激發,維持在一個較高的水平上。
幫助學生提煉解題方法,讓學生感受到自己學習的不是解決某個問題的步驟,而是解決一類問題的方法。這不僅有助于學生知識遷移能力的培養,更能幫助學生提升學習的效率。
通過例題“求 65+90+10+35+75的和 s”學習了累加求和的方法后,給出相似的題目“求s=1+2+3+……+n的值,其中n由鍵盤輸入”。學生發現這個問題的求解仍然是累加求和的方法,只是循環的次數不是事先確定的,而是在程序執行過程中由鍵盤輸入的。這時給出進一步的題目“求s=2+4+6+……+n的值,其中n為偶數,由鍵盤輸入。”學生會發現這個題目的求解也是累加求和的方法,只是在上一題的解題基礎上增加了“循環變量的值每次增加2”的變化。通過相似題目的類比和思考的逐步深入,學習累加求和方法的適用范圍。

求 65+90+10+35+75的和s求 s=1+2+3+……+n的值,其中n由鍵盤求 s=2+4+6+……+n的值,其中n為偶例題教學,學習了累加求和的方法題目的變形1:循環的次數不是事先確定的,而是在程序執行過程中由鍵盤輸入的題目的變形 2:增加了“循環變量的值每次增加2”的變化
筆者將ARCS動機設計模式運用于高中算法與程序設計教學,在高一年級的算法與程序設計教學中進行了5個月的實踐。實施策略前后,在實驗班和對照班的學生中分別進行了“高中算法與程序設計學習動機調查問卷”的調查。通過對5個月前后的調查結果和學業績效的分析、比較,發現學生的學習動機、情感反應和學業績效均有一定程度的提高。
運用ARCS教育理論,從注意、切身性、自信心、滿足感四個維度促進學生的主動學習,使學生成為學習的主人。學生主動地學習,必將推動三維教學目標的有效實現。
[1]郭德俊,汪玲,李玲.ARCS動機設計模式[J].首都師范大學學報(社會科學版),1999,(5).
[2]黨鳳良,劉恩山.高中生學習生物學動機的初步研究[J].生物學通報,2003,(7).
[3]張祖忻.如何將動機原理整合于教學設計過程[J].開放教育研究,2003,(2).