陳文青
(紹興職業(yè)技術學院 信息工程學院,浙江 紹興312000)
游戲算法融合情景模擬在高職C語言教學中的應用
陳文青
(紹興職業(yè)技術學院 信息工程學院,浙江 紹興312000)
對高職教師與學生來說,C語言是一門讓他們普遍覺得枯燥無味、難教難學的課程.若采用常規(guī)的教學內容與教學方式,學生往往難以理解與應用,許多學生喪失學習該課程的興趣與信心.研究主要從激發(fā)學生學習該課程的內在動機角度進行探索,采用難度適中的游戲算法融合情景模擬的方式進行教學,讓學生因有趣而愿主動探究、因難度不大而有學好的信心,激發(fā)學生學習的內在動機,從而達到良好的教學效果.
C語言;高職;游戲算法;情景模擬
隨著教學條件的改善,當前高職C語言程序設計教學一般采用多媒體加機房的授課方式,形成了以考試為中心來組織教學的現(xiàn)象,教學內容以考試內容是否涉及為取舍標準.多媒體課堂上選用一般的語法算法案例進行講解,然后在機房讓學生練習書上實踐題目或者是常規(guī)的實踐題目,若是課程考核與等級考試結合,則練習題目主要采用等級考試試題庫題目或相似題目.一段時間后,大多數(shù)學生開始感覺學習C語言枯燥無味,加上上機屢屢受挫,久而久之,學生便覺得學習C語言又難又無趣,喪失學習C語言的興趣,甚至放棄該課程的學習.本研究主要從如何激發(fā)學生學習該課程的內在動機角度進行探索,采用游戲算法融合情景模擬的方式進行教學,激發(fā)與維持學生學習C語言的興趣,讓學生因為興趣而自覺主動地去學習、去探究,真正實現(xiàn)課程的教學目標.
C語言的難教難學與枯燥乏味是授課教師與學生的普遍感受,目前國內有的高校已經(jīng)意識到從趣味性角度去改善枯燥乏味的問題,如把動畫作為案例融入教學中,通過對一個動畫程序的運行與解釋,加深學生對算法的理解與應用;有的僅是在第一次課或開始階段的課堂上展示一些用C語言開發(fā)的游戲或程序,由于難度之類的原因,之后的教學時間不再涉及,按一般常規(guī)進行教學;由于趣味性游戲案例匱乏,教師并未創(chuàng)新加工新的趣味游戲,僅是“漢諾塔”“百元買百雞”“兔子繁殖問題”等幾個非常有限甚至有些乏味的案例,未能很好地激發(fā)與保持學生的興趣[1].由于高職院校與本科院校的學生接受能力存在一定的差異,對于算法難度較高的游戲,學生難以理解,更談不上編寫,復雜度較高的游戲算法并不能真正應用到高職C語言程序設計教學中[2].
在C語言程序設計教學過程中,常用的有項目教學法、案例教學法、提問式、啟發(fā)式等教學方式[3],但在這些方法的教學過程中,較少或忽視了對算法或一些較難理解的概念的情景模擬.情景模擬體驗教學指的是教師通過創(chuàng)設教學情境,引發(fā)學生的體驗性學習,二者互為依托,構成一個完整的有生命的課堂發(fā)展系統(tǒng),從而形成有情感的、創(chuàng)新的、具有人文價值趨向的課堂教學[4].由于C語言程序設計課程本身具有的特性,對于常規(guī)的教學內容與教學方式,學生理解與消化授課內容比較困難,特別是高職院校,大多數(shù)學生的基礎知識薄弱,學習動力及自信心不強,自我管理以及自我約束力較差,由于不能理解與應用,對課程感到枯燥乏味,許多學生喪失學習信心與興趣.
對這樣一門普遍讓教師與學生覺得枯燥無味、難教難學的課程,如何進行教與學是值得探討的問題.從學生學習動機角度來說,學生學習的動機有外在動機和內在動機,外在動機也稱外源性動機,指由外在的獎懲或害怕考試不及格等活動之外的原因激起的動機;內在動機也稱內源性動機,是源于興趣、好奇心、求成的需要或自信心等個人特征的動機[5].如何讓該課程學習變得有趣?如何激發(fā)學生的好奇心、求知欲?如何讓學生自覺主動地去學習,課內課外都愿意花費時間與精力去研究它,而不僅僅是應付考試?如何讓該課程變得不難學,不難掌握,不讓學生因為難學而選擇放棄?
要讓學生了解本課程的用途,如展示用C語言編寫的實用控制程序,讓學生知道看得見的實際用途;愛玩是人的天性,那么就把游戲作為切入點,把游戲案例融入教學中,讓學生覺得編程也可以像游戲一樣好玩,主動去探究[6];針對因難學而想放棄該課程學習的問題,可想法使之變得簡單易理解,選擇或設計難度在學生能掌控范圍內的游戲,并對游戲算法及一些難理解的概念進行情景模擬,降低學習難度.當學生覺得學習C語言有用而想去掌控、有趣而想去探究、難度不大而有學好的信心時,就能夠調動激發(fā)學生學習C語言的內在動機.
簡單趣味游戲算法貫穿整個教學過程,激發(fā)學生主動探究精神.在教學中如果直接講解語法、算法,大多枯燥無味,學生很難聽下去,教學效果往往不理想.玩是人的天性,若能把這些枯燥的語法、算法變得像游戲一樣有趣,難度與復雜度又在大多學生能理解與掌控的范圍內,學習就如玩游戲,何樂而不為呢?教師對算法和一些難理解的概念進行情景模擬,使學生參與其中,提高學生的學習主動性,加深學生對知識點的理解.
由于篇幅有限,不能一一展示教學中的游戲案例,本文選取的三個游戲案例,主要對應C語言中的if語句、do-while語句、while語句、continue語句、break語句等知識點,教師可根據(jù)不同授課內容,對游戲案例靈活改動與擴展挖掘、設計更多實用的趣味游戲案例.
游戲案例一:單次抽獎游戲
輸入一個1-100之間的整數(shù),若輸入的整數(shù)恰好等于電腦隨機產生的整數(shù),則可以抽到大獎,獎品自行設置.
對應知識點:雙分支if語句使用.
創(chuàng)設情境:上課時,教師可先和學生們說明游戲規(guī)則,讓學生說出一個指定范圍的數(shù)字,若該數(shù)字與電腦產生的數(shù)字一致,則中獎.和學生們玩抽獎游戲,獎品可以是平時成績幸運分,也可是甜甜的棒棒糖,總之,調動學生的興致,開心參與即可.
案例分析:學生清楚游戲過程后,可和學生一起進行案例分析,如何實現(xiàn)抽獎過程.可定義2個整型變量存放輸入的整數(shù)與電腦產生的隨機數(shù),然后比較這兩個整數(shù)是否相等,若相等則中獎,否則給出不中獎提示信息,由于比較的結果只有2種,因此采用雙分支結構.
程序清單:
#include lt;stdio.hgt;
#include lt;stdlib.hgt;
#include lt;time.hgt;
main()
int rand num,key;
srand( time(NULL) );
rand num = rand()%100+1 ;//隨機產生第一個1~100間的數(shù)
if (key== rand num)
else
}
程序運行結果如圖1所示:
圖 1
案例小結:在完成該項試驗任務時,教師可告訴學生編碼的時候,中獎或未中獎的獎品.學生可自行設置,學生的獎品設置充滿個性與趣味性,課堂氣氛輕松、活躍.在完成該項試驗任務后,可對該案例進行擴展,對學生提出問題,比較的結果可產生各種等級的獎項設置情況,案例稍加修改就可變成if語句多分支結構.
游戲案例二:多次抽獎游戲
輸入一個1-100之間的整數(shù),電腦將隨機產生兩個1-100間的數(shù),若輸入的整數(shù)恰好在電腦隨機產生隨機數(shù)之間,則抽到大獎,若想繼續(xù)抽獎,則輸入“Y”或“y”字符,若想結束抽獎游戲,則輸入非“Y”或“y”字符,結束抽獎游戲.獎品可自行設置.
對應知識點:do-while循環(huán).
創(chuàng)設情境:總結單次抽獎缺陷,抽一次獎程序就結束,想再玩的話需要重新運行程序,能否讓玩家自己決定是否退出游戲,比如若想繼續(xù)玩就輸入“Y”,不想繼續(xù)玩了就輸入“N”或是其他字符.
案例分析:由于不限制抽獎次數(shù),因此該案例采用do-while循環(huán)語句更合適,在案例一基礎上,一次抽獎判斷結束后,給出提示信息,是否需要繼續(xù)抽獎(Y/y),由于接下來需要接收輸入的一個字符信息進行判斷,因此需要把提示信息后的回車符及輸入判斷字符后的回車符清空,以便進行下一輪的抽獎.
程序清單:
#include lt;stdio.hgt;
#include lt;stdlib.hgt;
#include lt;time.hgt;
main()
int randnum1, randnum2,key;
char try Again;
srand( time(NULL) );
do
{
randnum1 = rand()%100+1 ;//隨機產生第一個1~100間的數(shù)
randnum2 = rand()%100+1;
if (key lt;=randnum2 amp;amp; key gt;= randnum1 || key gt;= randnum2 amp;amp; key lt;= randnum1)
else
get char();
get char(); //清空輸入緩沖
}
程序運行結果如圖2所示:
圖 2
案例小結:本實驗是不限定玩的次數(shù),也可讓學生改成限定抽獎次數(shù)的情況,對應指定循環(huán)次數(shù)的for語句、while語句情況.
游戲案例三:必勝的乙方
有21枚硬幣,甲乙兩人輪流取硬幣,每人每次可拿1~4枚硬幣,不能多拿也不能不拿,誰取到最后一枚硬幣誰就輸了.要求甲先取硬幣,乙方如何抽取才能保證一定勝利.
對應知識點:while語句、continue語句、break語句
創(chuàng)設情境:在講解該案例之前,教師先和學生做游戲,教師帶21枚1元硬幣到課堂,和學生說明游戲規(guī)則,2人輪流取硬幣,每人每次可拿1~4枚硬幣,不能多拿也不能不拿,誰取到最后一枚硬幣誰就輸了,游戲參與對象為教師與學生,要求學生先取硬幣,若教師輸了,則21元歸贏的學生,作為加餐費,教師掌握著必勝法寶,游戲的結果當然是以學生挑戰(zhàn)失敗.
問題產生:為何多名學生上講臺挑戰(zhàn)教師,卻都全軍覆沒?教師掌握了什么規(guī)則,使之成為不敗者?
案例分析:教師要保證自己是必勝方,也就是讓學生拿到最后一枚硬幣,只有一種可能,那就是只給學生剩下1枚硬幣,于是問題轉化為“20枚硬幣,甲乙兩人輪流取硬幣,每人每次可拿1~4枚,不能多拿也不能不拿,誰取到最后一枚硬幣誰就贏”,為了讓乙方取到最后一枚硬幣,則要保證最后一輪抽取之前剩下5枚硬幣,這樣,無論甲方怎樣取硬幣,乙方都可將硬幣取走.于是問題轉化為“15枚硬幣情況”,同理,為了讓乙方取到最后一枚硬幣,則要保證最后一輪抽取之前剩下5枚硬幣.問題又轉化為10枚硬幣情況,可以推出這樣的結論,在抽取的過程中,乙方只要保證每一輪的抽取硬幣數(shù)與甲方抽取硬幣數(shù)量之和為5,就能保證自己一定勝利. 教師就是利用這個規(guī)則,使自己成為不敗者.
程序清單:
main()
{
int teacher , student, coin num = 21;// coin num存放初始硬幣數(shù)量
while(1)
{
if(studentlt;1 || studentgt;4 || studentgt;coin num)
coin num = coin num - student;
teacher = 5 - student;
coin num = coin num - teacher;
}
程序運行結果如圖3所示:
圖 3
好的游戲案例也需好的傳達,才能充分發(fā)揮游戲案例的趣味性,如一個好笑的故事若只是平淡地陳述,笑話也就變得不那么好笑.游戲算法融合游戲情景模擬,可活躍課堂氣氛,拉近師生距離,創(chuàng)設良好的學習氛圍,充分調動學生參與游戲的熱情,讓學生覺得編程也可以像游戲一樣好玩,激發(fā)學生學習的主動性.教師還可結合多媒體課件,通過flash制作的算法動畫、圖像等手段對游戲算法進行分析,使得講解更加生動、直觀、更好理解.
采用游戲算法融合情景模擬的方式進行教學,使得教師的“教”與學生的“學”都是一件愉快并令人期待的過程,許多學生對程序設計已不再感到乏味、枯燥、畏懼,而是覺得有趣、好玩;許多學生還想辦法改進游戲、創(chuàng)新游戲,為完成自己的游戲設計,課后主動學習,主動查詢資料.雖然紹興職業(yè)技術學院是一所普通的高職院校,通過C語言程序設計的教學改革與實踐,已取得了一系列豐碩的成果.課程組教師所指導的學生在紹興市大學生程序設計技能競賽中,多次獲一、二、三等獎;在浙江省第七屆至第十屆大學生程序設計競賽中多次獲得金獎、銀獎與銅獎.
與傳統(tǒng)的教學方法相比,游戲案例情景模擬融合游戲算法分析的教學方式使得算法教學生動、具體、形象,讓學生在輕松愉快的游戲與游戲編碼中掌握了編碼的基本技能,培養(yǎng)與鍛煉了學生的邏輯思維能力和創(chuàng)新能力.
[1]何欽銘,顏暉.C語言程序設計[M].杭州:浙江科學技術出版社,2010.
[2]黃國政.游戲促進學習——“掃雷”程序提高C語言學習興趣[J].連云港師范高等專科學校學報,2002(2):53-56.
[3]余小燕.C語言程序設計教學方法探討[J].計算機教育,2009(10):136-138.
[4]程守梅,賀彥鳳,劉云波.論情境模擬教學法的理論依據(jù)[J].成人教育,2011(7):43-44.
[5]皮連生.教育心理學[M].上海:上海教育出版社,2005.
[6]孫玉霞.基于教育心理學C語言教學探討[J].湖北師范學院學報(自然科學版).2011(01):105-108.
2014-03-22
紹興市教育科學2013年規(guī)劃項目(編號:SGJ13042)
陳文青 (1978-),女 ,廣東潮陽人,講師,主要研究方向:計算機應用技術、計算機教學.
G642
A
1008-293X(2014)08-0087-06