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