江蘇省陶都中等專業學校 蔣紫燕
“C語言程序設計”是中職學校電子信息類、計算機類、通信類專業的一門基礎課程,側重于培養學生的計算思維和利用計算機處理問題的能力。利用項目教學法進行授課是一種非常普遍的方式。由于課程本身偏數理性、邏輯性的特點,中職學校所訂購的項目化教材過于成熟性、工具性,學生正處于青春期,常規項目不能引起學生注意,因此,本文探討通過“小游戲”項目寓教于樂,幫助學生培養良好的學習習慣,激發學生學習興趣,調動學生的積極性和主動性,提高課堂教學效率。
在周期一年的“C語言程序設計”課程教學實踐中,上半年發現,教師采用傳統的教學模式時,學生反響平平,普遍認為本課程難學、內容高深、難以理解、偏數理化,容易產生畏學、厭學的情緒。這樣不僅影響本課程的教學成效,學生也會帶著畏難情緒步入后續課程的學習,從而影響整個人才培養方案的實施。環環相扣,層層遞進,本課程作為專業課程的入門磚,若學生邏輯性思維、拆分問題的方法和能力未能得到培養,后續課程將效果大大減少。通過和專家的探討,一致認為產生這種現象的原因大致有三種。第一,C語言語法規則多而細,理論性深,知識點雜而多、抽象,對學生的學習基礎要求較高,學生理解起來較為困難。在實際編寫代碼過程中又十分靈活,初學者會感到有難度,無法很好地運用編譯軟件。第二,學生的數學和英語基礎較薄弱,沒有培養出較好的學習習慣,學習興致不高。第三,采用的是傳統的課堂教學模式:教師在講臺上講解,學生在講臺下被動接聽,這是一種“滿堂灌”且以教師為中心的教學模式,往往會忽略掉學生的主觀能動性。因此,即使教師很認真的備課、上課,但教學成果很不理想,學生抵觸情況時有發生,更有甚者會把本課程認為是一門“數學課”。
因此,筆者下半年嘗試采用項目教學法與上機實操相結合,通過若干個項目將教學內容融入編寫代碼的過程中,以小組教學為主,班級教學為輔,根據學生的學習現狀動態調整相應的項目內容。根據知識點將“C語言程序設計”課程分為基礎知識、程序控制結構、數組、指針、文件這五大模塊,針對不同模塊的知識點,設計相應的項目。常用的小型程序設計項目如表1所示。

表1 常用小型程序設計
經過半個學期的實踐,在機房采用項目教學法后,師生互動明顯增加,學生提問頻率提升。比起使用傳統教學模式,學生更愿意接受這種教學方法,教學成效有所提升。
但生本主義告訴我們應該最大限度地鼓勵學生進行自主學習,包括自主發現問題,在團結合作中尋找解決方法,充分體現學生的主體地位,引導學生自立,自我學習與管理。同時,這個階段的學生正處于青春期,學習欠主動,“好斗”,愛玩游戲,采用傳統的項目教學方式無法培養學生的自主性,讓每一位學生都能完成項目,理解知識點,養成計算機的思維。
因此,設計一個更適合學校學情,更能引起學生興趣和自學能力的項目至關重要。
顧名思義,小游戲指一些體積較小、可執行程序的容量在100兆以內,游戲規則簡單,生命周期較短,無安裝,耐玩性強,無依賴性,操作方便,綠色的游戲娛樂項目。
在項目教學法實施過程中設計的小游戲項目,因其項目程序功能需求量較少,項目開發周期不超過2周,便于學生保持良好的專注度,可以滿足中職學生C語言學習內容的要求,和教學目標相匹配。項目整體偏益智類和廣泛性,學生對項目游戲規則十分熟悉,便于教師引導學生分析項目的執行過程、組成環節。小游戲項目無須安裝,無年齡層次之分,因此學生在完成項目后可將項目分享給身邊的人,一來能展示學習成果,二來能提高學生的自信心和成就感,無須追求華美的畫面感和游戲競技精神,因此游戲所占內存較少,對硬件配置要求不高,加載時間短,節省時間和資源,通過鼠標和鍵盤來控制游戲的進程,常用的實訓機房就能滿足要求。根據學生敏感度以團隊協作的方式共同完成小游戲項目,不僅幫助學生找到“同類”,還能增加友誼,增進組員之間的默契度。
筆者運用C語言的語法知識帶領學生從頭開始開發小游戲,通過小游戲項目逐步將知識點串聯起來,在實際編程中激發學生的興趣。每次開課前,教師都會將基礎語法知識準備好,便于學生預習和鞏固。提供多個步驟的代碼及對應的要求,以彈跳小球為例:在學習完常量、變量、運算符、表達式、printf、scanf輸入輸出函數,分支結構、循環結構知識后,簡單的彈跳小球講解步驟核心代碼如下。
●在控制臺(5,10)中繪制一個圓:
int i,j;
int x = 5;//X 軸坐標
int y = 10;//Y 軸坐標
for(i=0;i<x;i++)
// 輸出小球上面的空行
printf(" ");
for (j=0;j<y;j++)
//輸出小球左邊的空格
printf(" ");
printf("o");//輸出小球 o
●使小球下落:
//利用循環結構將小球從(1,10)下移到(9,10)
for (x=1;x<10;x++)
{system("cls"); // 清屏函數
for(i=0;i<x;i++)
printf(" ");
for (j=0;j<y;j++)
printf(" ");
printf("o"); }
●利用加速度彈跳
while (1)
{ //起點加上移動速度等于終點
x=x+velocity;
if (x==hight)//如果小球到達底部
velocity = -velocity;
if (x==0)//如果小球碰到達頭部
velocity = -velocity;}
●斜著跳
while (1)
{ //小球碰到上下邊界時
if ((x==top)| |(x==bottom))
velocity_x = -velocity_x;
//小球碰到左右邊界時
if ((y==left)| |(y==right))
velocity_y = -velocity_y;}
在拓展相關EasyX 圖形交互功能的知識后,可以對彈跳小球進行界面設計,相關的代碼如下。
# include<graphics.h>
initgraph(w idth,height);//設置控制臺面積,寬度800,高度600
cleardevice();//清屏
fillcircle(x,y,radius);//畫小球
Sleep(100);//暫停 100 毫秒
常用的小游戲項目如表2所示。

表2 常用的小游戲項目
結合學校的實訓材料,確定不應設計觸屏式、純文本類、靜態、3D的小游戲項目。在教學過程中,需要教師通過編寫代碼將語法知識融會貫通,因此大部分教師都是利用機房進行教學。所以在設計項目時,教師要充分考慮到機房的硬件、軟件配置問題,普通的機房只能滿足最基本的實訓教學要求,專業性不強,項目主要以黑白界面為主、鍵盤鼠標作為控件、單機,二維的小游戲項目。要讓項目“落地”,真正貼近教學實際,需要因地制宜,選擇最恰當的項目。
在設計項目時,應該把學生的現有基礎水平、認知能力的差異、興趣愛好、年齡特征等納入考慮因素范圍內。教師要始終站在學生的角度,根據學生的實際水平設計每一個小游戲項目,項目所涉及的知識不能超過教學大綱的范圍,最好能與后續課程產生關聯。項目應先易后難,層層遞進,到后期,偏難的項目可以先將超出大綱的代碼及知識點都準備好,并配好相應的教學視頻,讓學生自主選擇是否擴展,引導學生參與整個編寫代碼的過程,增強學生的成就感。
據研究,人的大腦通過視覺接收外部信息的比例最高達83%。所以,教師在設計項目時,應該盡可能地設計一些具有動態性、界面豐富、效果歡快、可視化的項目。學生對純理論性的語法知識無感、沒有充分的想象力,難以理解編寫規則和邏輯思維,而通過小游戲項目將理論知識的底層邏輯、語法、語義完美地展示出來,實現了所見即所得。教師可以利用輸入輸出庫函數實現相關操作,也可以采用EasyXGraphics Library這個繪圖庫,作為擴展知識。如果再結合一些音樂,效果會更佳。利用多媒體技術創造良好的教學環境,引導學生走上自學的道路。
相比傳統教學模式,采用項目教學法一定要注重項目的設計,在教學活動中需要采納具有趣味性、貼近學生實際的項目,才能促進學生學習效果的提升。趣味性的項目不僅能讓學生完成學習,而且能幫助學生找到真正熱愛的事情,讓他們帶著興趣學習,快樂成長,收獲也會頗多。小游戲項目普遍受學生的喜歡,將其運用于教學中能取得良好的效果。