李德川 方振國 梁霞



摘要:本文以三基色動態變換為例,從多個角度把算法、函數、頭文件等語法規則融入編程環節,讓學生從一個圖形的動態變換實例中領會到C語言編程的精髓,以此來完成C語言編程的入門教育。該課程的教學改革把知識傳授、能力培養和素質提升協同實施,通過調動學生的課堂參與度,激發學生學習的興趣和潛能,培養學生的創新能力。
關鍵詞:Easy X;圖形庫;C語言;教學改革
中圖分類號:G434? 文獻標識碼:A? 論文編號:1674-2117(2021)013-0103-04
C語言是部分專業的大學生入學后必修的一門基本語言,C語言課程可以訓練學生的編程思維,使學生擁有解決問題的方法和相應的項目執行能力,同時,該課程的學習也有助于數據結構、操作系統、單片機和嵌入式等軟硬件的開發和應用。然而,C語言的教學并不是那么容易的。首先,C語言的編程需要了解語法規則;其次,通常情況下,C語言的編程環境Visual C++ 6.0只能進行字符的顯示,無法顯示圖案和色彩,輸出結果單調,學生的注意力和學習興趣無法被精確掌控。因此,如何在有限的課堂時間內開展高效的教學活動就顯得尤為重要,圖形化教學方式的引入,可以使得單調的字符輸出變得生動起來,增加了學習的趣味性。在VC++6.0中引入EasyX圖形庫可以使編譯系統具備各種圖形的畫法、不同顏色的填充等處理條件[1-3],滿足了學生的好奇心,激發了學生的求知欲,鼓勵了學生的實踐意識,促進了學生創新思維的發展。本文以C語言程序設計課本為基礎[4],選用graphics.h頭文件,以三基色的動態變換為例,闡述圖形化設計在培養學生自由思考和自主創新能力方面的重要性,訓練學生自主編程和設計的能力。
● 教學課題的設計
在實踐教學環節,課題的設計很重要,開發的項目既要有原型,給學生一個直觀的印象,也要有一定的可操作性,避免挫傷學生的積極性,同時還要具有代表性,使得學生在參與的過程中掌握編程技法,習得課程的自學能力。本項目以紅綠燈為原型,設計了一種三基色變換進度條,要求一定寬度的進度條在三種顏色的圖形上依次移動,這樣設計的目的是鼓勵學生全員參與,體驗設計過程,了解項目設計的一般過程,增強編程的自信心。
首先,在教師的引導下對題目進行分解。紅綠燈由紅、黃、綠三種顏色組成,而本項目中是一種三基色,需要學生自己查找三基色究竟是什么顏色?其對應的RGB數值是多少?需要用哪些函數實現?這些函數屬于哪個頭文件?
其次,設計具體的圖形格式。引導學生設計自己喜愛的圖形形狀,如矩形、圓形、橢圓等。三種顏色怎么排列?是水平狀還是豎直狀?
再次,設計進度條的運動狀態。進度條如何運動?是連續移動還是閃爍?
最后,分組討論,分塊編程,全員參與程序的調試和運行,提升學生編程的成就感,激發學習熱情。
● 項目設計過程的引導
通過對項目的分解與分析,可以得知該課題涉及函數、頭文件、程序結構和調試等內容,幾乎涵蓋了程序設計的一般步驟,該項目的設計完全可以把學生帶入程序設計的大門。而色彩的運用和點綴,可以讓作品更加美觀,便于交流和展出,進一步觸發學生對自己的作品美化的激情,使學生在實踐中應用學到的理論知識。以下以三基色的動態變換為例進行說明。
1.獲取任務所需的基本函數
引導學生查閱和掌握有關三基色的定義和相應的RGB數值。通過查閱資料可以得知,三基色由紅、綠、藍組成,分別對應的RGB數值為(255,0,0)、(0,255,0)和(0,0,255),不同的數據組合可以獲得不同的顏色,多彩的顏色作為課后作業由學生自行探索和發現。
提醒學生在進行色彩的管理、畫圖時要及時聲明其所屬graphics.h頭文件,使用到的其他函數也必須聲明屬于哪一個頭文件,如windows.h等。在確定顏色的顯示形狀時,若為矩形,可以用帶色彩的線來畫出矩形,所需函數為setcolor()和line();也可以先畫出矩形框,再用色彩填充,所需函數為rectangle()、setfillcolor()和fillrectangle()。若為圓形,則可采用circle()函數等。具體采用哪種函數,依據相應算法進行選擇,而函數的具體參數由學生自己查詢,以此來提高學生的參與度。
2.全員參與的過程設計
首先,由學生討論確定該三基色變換的具體形式為三個分離的矩形色塊,排列方式為從上到下,進度條的運動方式為從上向下運動,進度條顏色為黑色,窗口背景色為黑色,其基本結構圖形如圖1所示。
其次,顯示圖像的初始化。在設計進度條之前,先要進行矩形色塊的初始化,明確三個矩形的位置坐標、顏色順序和圖形窗口的大小等信息。該部分的矩形初始化可以用線條畫滿矩形,也可以先畫出矩形框,用畫筆直接填充。教師給出用線條畫矩形的參考程序,用作參考。畫筆填充矩形框的算法,難度不大,可作為興趣拓展作業,課后訓練使用。線條畫矩形的參考程序如圖2所示。
再次,設計進度條的運動形式,幫助學生了解做項目時需要考慮的項目細節:進度條應該從最上面矩形的頂端開始向下運動;進度條要有一定的寬度用于識別;進度條的顏色要與當前顏色有明顯區別;進度條向下移動后,原始的色彩怎么再現;進度條的移動速度控制等。在這一環節可以引入分支語句和循環語句,通過對圖像的精細化分割,進行知識的傳授。在教學的演示活動中,可以采用順序結構對語句體進行解釋,把語句體的精簡放在自定義函數中,供學生課下實踐,提升學生的成就感,提高學生的學習興趣。部分參考程序如圖3所示。
最后,進行程序的調試,得到一個動態變化的三基色圖像,如圖4所示。
● 知識能力的拓展
在課程實施過程中,課堂教學能滿足大多數學生的聽課需求,但是如果能力考查僅停留在原始題目上,那對少數已經掌握該知識點的學生吸引力不大,因此,在教學內容設計時,要充分考慮該題目的拓展性和發散性,牢牢把控住全班學生的興趣點。為此,該題目可以在以下幾個方面進行延伸:
①調配出自己喜愛的顏色。這項任務全班學生都樂意去完成,通過改變函數RGB()中的參數值,即可顯示心中滿意的圖案,項目的趣味性進一步得到提升。
②進度條的顏色和寬度調節。這一項任務相對簡單,部分學生很樂意去更改,提升了顯示效果。
③用自定義函數精簡程序體。在這一項改裝中,要求學生用到自定義函數的定義方式,把反復用到的部分用函數來實現,實現程序體的精簡,這一項的實現能極大地提升學生學習程序的滿足感,很有意義??梢栽谶m當的時候給出參考程序,然后結合分支語句if…else來實現,自定義參考函數如下頁圖5所示。
④圖形顯示可以用圓形、橫向排列或進度條橫向運動。這一部分,要求學生有一定的調試能力,圓形顯示區域容易實現,可以用circle()函數,但是進度條上點線坐標要經過計算,然后用line()函數,參考圖像如下頁圖6所示。圖6(a)為初始化的紅綠藍,進度條從藍色開始運動[如圖6(b)],經過綠色[如圖6(c)],到達紅色[如圖6(d)],為一個周期,然后不斷循環,直至結束。對輕松完成該環節的學生,可布置能力進階題,進一步挖掘學生的實踐能力。
● 知識點的總結與歸納
通過三基色圖像的變換,從矩形到圓形,從豎直方向到水平方向,讓學生了解到在工程實踐中要具體考慮坐標的相對位置,認識了直線畫圖函數line()、矩形畫圖函數rectangle()、色彩設定函數setcolor()和自定義等函數的應用,進一步掌握了設計思想在實際工程中的應用,開闊了視野,為其他項目的開發提供了一定的參考范例。
● 結論
圖形化的教學實踐,使得C語言的教學從符號輸出向圖像輸出轉變,色彩的搭配極大地豐富了輸出結果的多樣性。同時,點、線、面等函數的應用有助于構筑更為復雜的結構,便于學生實現各種設計。本課的實施強化了學生的邏輯思維和實踐能力,提高了學生的編程興趣,為C語言課堂教學的改革提供了思路。
參考文獻:
[1]宋雅娟,邊晶.基于easy X動畫案例開發導向的C語言程序設計課程教學方法研究[J].長春大學學報,2018(06):111-119.
[2]李柯景.Easy X在C語言課程教學中的應用[J].科教導刊:上旬刊,2018(03):91-92.
[3]趙敏,龐蕊.基于EasyX圖形庫的C語言課程改革研究與實踐[J].電腦知識與技術,2015,11(32):124-125.
[4]譚浩強.C語言程序設計[M].北京:清華大學出版社,2013.
作者簡介:李德川(1985—),男,安徽懷遠人,博士,淮北師范大學副教授,研究方向為電子技術。
基金項目:安徽省“六卓越、一拔尖”卓越人才培養創新項目(2019zyrc056);淮北師范大學教學研究項目(JY19003,JY19037)。