前言:想要寫出一篇令人眼前一亮的文章嗎?我們特意為您整理了5篇c語言程序范文,相信會為您的寫作帶來幫助,發(fā)現(xiàn)更多的寫作思路和靈感。
關(guān)鍵詞:考試系統(tǒng);多媒體技術(shù);數(shù)據(jù)源;連接數(shù)據(jù)庫
中圖分類號:TP311文獻(xiàn)標(biāo)識碼:A文章編號:1009-3044(2007)03-10854-03
1 課題研究的意義和目的
1.1研究意義
現(xiàn)在,多媒體技術(shù)日趨成熟,多媒體系統(tǒng)以其能輸出精彩的圖形和圖像、美妙的聲音、動感的畫面贏得了用戶和社會各界廣泛的關(guān)注和應(yīng)用。如果把按傳統(tǒng)考試方式同現(xiàn)代化的多媒體技術(shù)相結(jié)合,并且用多媒體著作工具及其它多媒體技術(shù),編制一套符合高??荚囆枨蟮南到y(tǒng)及其配套的多媒體教學(xué)軟件,利用多媒體技術(shù)生動、直觀、形象展示信息的特點,輔助教師授課和學(xué)生進(jìn)行考試,尤其對部分有限制性的實驗環(huán)節(jié),可利用活動視頻技術(shù)進(jìn)行展示,這將會解決一系列目前存在的問題。總之,該課題是在計算機(jī)輔助教學(xué)及考試上進(jìn)行的一次積極有意義的嘗試,為其他實踐性較強(qiáng)的課程進(jìn)行多媒體輔助教學(xué)開辟一條新的路子,具有一定的理論和現(xiàn)實意義。
1.2目的
傳統(tǒng)的考試手段主要依靠有紙試卷,幾乎沒有可重用性。本課題將實現(xiàn):用計算機(jī)輔助考試系統(tǒng),把多媒體生動、直觀的顯示出來,使學(xué)生不再將考試視為一種枯燥無味的東西,提高了考試效果,使學(xué)生在一種愉悅的心情中進(jìn)行考試,把枯燥的重復(fù)變?yōu)槌錆M樂趣、具有啟發(fā)性的考試過程,使學(xué)生能比較全面的學(xué)習(xí)知識,掌握技能,達(dá)到素質(zhì)教育的要求。
2 系統(tǒng)流程圖設(shè)計
2.1初始化流程設(shè)計
在使用Authorware創(chuàng)建任何多媒體項目的時候,都應(yīng)該先設(shè)置當(dāng)前項目文件的窗口大小,將其設(shè)置為“800×600”,然后選擇“演示居中屏幕”,同時取消對“顯示標(biāo)題欄”和“顯示菜單欄”復(fù)選框的選擇。
2.2主界面的設(shè)計
本界面采用了Photoshop7.0圖形圖像處理軟件來繪制。為了避免界面的單調(diào)和呆板,用蒙版和濾鏡技術(shù)加以美化。該界面把Photoshop中的圖層技術(shù)、圖層蒙版技術(shù)、文字效果及濾鏡等功能完美的結(jié)合了起來。并且在底部設(shè)置了一個Flas,增加視覺效果。
2.3背景音樂的交互控制
該多媒體教學(xué)以MIDI作為背景音樂,背景音樂的交互控制包括背景音樂的隨機(jī)選曲播放、停止等功能,另外當(dāng)該教學(xué)程序處于活動狀態(tài)時,能夠隨時調(diào)整背景音樂和講解聲音的大小及比例,讓使用者在一種輕松悅耳的環(huán)境中考試(調(diào)出WINDOWS的音量控制實現(xiàn)),還能夠暫停背景音樂,當(dāng)再次進(jìn)入活動狀態(tài)時則能重新播放背景音樂。
為了充分考慮用戶計算機(jī)的不同配置情況,首先利用BUDAPI.U32的BASOUNDCARD函數(shù)判斷用戶機(jī)器是否已經(jīng)安裝了聲卡,如果已經(jīng)安裝則執(zhí)行背景音樂播放,否則不允許播放任何背景音樂操作.程序如下:
IF BASOUNDCARD() THEN
MIDI:=1
TEST(MIDI,MIDILOOP (FILELOCATION^”MUSIC\\MUSIC-”^RANDOM(1,5,1)^”.MID”),STOPMIDI())
END IF
軟件中的背景音樂交互控制是通過交互響應(yīng)來實現(xiàn)的。在程序執(zhí)行過程中,用戶始終可以通過按鈕控制背景音樂的播放與暫停。在計算圖標(biāo)“播放音樂”后添加一交互圖標(biāo)并命名為“音樂控制”,并在交互圖標(biāo)右邊添加三個計算分支。設(shè)置“STOP/PLAY”分支為按鈕響應(yīng)交互,其功能是實現(xiàn)對背景音樂的控制。由于在整個程序執(zhí)行過程中它都是有效的,因此須設(shè)置其為永久按鈕,即選擇“PERPETUAL”屬性選項,同時設(shè)置“ACTIVE IF”條件為:BASOUNDCARD(),即檢測到用戶沒有安裝聲卡的情況下該按鈕及響應(yīng)分支無效。
2.4內(nèi)容的導(dǎo)航設(shè)計
該多媒體教學(xué)涉及內(nèi)容繁多,不僅包括文本、圖片、聲音和動畫,而且還有其它多媒體工具與Authorware 配合,同時,還把視頻文件導(dǎo)入,以增加實用性。為使用戶操作簡單方便,設(shè)計了合理的教學(xué)內(nèi)容導(dǎo)航。主文件與各章節(jié)之間的導(dǎo)航設(shè)計根據(jù)結(jié)構(gòu)規(guī)劃中的該章節(jié)內(nèi)容的欄目劃分,在流程設(shè)計中為這些欄目設(shè)計了導(dǎo)航,如圖1為主程序內(nèi)容導(dǎo)航的設(shè)計流程圖。
這樣的流程設(shè)計使整個主程序結(jié)構(gòu)清晰,可讀性強(qiáng)。由于該文件結(jié)構(gòu)是主-分結(jié)構(gòu),即主文件調(diào)用各章節(jié)模塊文件的方式,因此在主文件的章節(jié)內(nèi)容中實際存放的是一個起鏈接橋梁作用的調(diào)用腳本,而具體的考試試題題型內(nèi)容則放在各章節(jié)的模塊文件內(nèi)。
2.5各模塊的內(nèi)容流程設(shè)計
圖中的考試模式、練習(xí)模式、教學(xué)模式及退出系統(tǒng)這四部分主要程序流程圖如下圖2、圖3、圖4、圖5所示。
第五部分的原理演示則是通過熱區(qū)交互以及調(diào)入用VC6.0制作的演示內(nèi)容的庫文件,抽象的工作原理形象化,具體化。在打包的過程中采用了分步打包,首先對每部分進(jìn)行打包。通過主文件調(diào)用其它各部分,這樣避免了主文件過大,影響運(yùn)行速度。
3 以完成單選題為例來看具體實現(xiàn)過程
從單選題的數(shù)據(jù)庫題庫中隨機(jī)抽取相應(yīng)題數(shù)的問題;每一題只能選擇一個答案;用戶可以按次序做答,可跳過不答,在回答過程中,可以隨時返回已做過的題目進(jìn)行修改;交卷后會給出完成情況可以查看每題的回答情況.最后回到選題主界面,并把學(xué)生所做的答案成績保存到數(shù)據(jù)庫中。
當(dāng)用戶在主界面中,選擇了“考試模式”后,系統(tǒng)就會進(jìn)入到登錄界面系統(tǒng)會提示輸入用戶名和密碼,當(dāng)輸入后,點擊“確定”后,系統(tǒng)將會進(jìn)入到題型選擇界面。在提示框中輸入用戶名和密碼,我們點擊“確定”后,就會進(jìn)入到正式的單選題型界面中,選擇“單選題”單擊。
C語言程序設(shè)計考試系統(tǒng)的選擇題從數(shù)據(jù)庫中取出選擇題,在一個界面上顯示。利用三個熱區(qū)域交互按鈕“上一題”“下一題,”“完成”,按鈕和四個熱區(qū)域設(shè)置計算圖標(biāo)用來記錄學(xué)生所選擇的答案。在學(xué)生選擇“完成”后,彈出學(xué)生做題的情況界面,然后回到選題主界面,并把學(xué)生所做的答案成績保存到數(shù)據(jù)庫中。
3.1“未命名”用來擦除以前的圖像
(1) 打開“未命名”的屬性,進(jìn)入“未命名”的屬性窗口。
(2)在“屬性窗口”中單擊擦除標(biāo)簽在設(shè)置過渡效果進(jìn)行設(shè)置。
(3)單擊“確定”按鈕
3.2 設(shè)置“單選界面”插入一個圖像
(1)雙擊“單選界面”圖標(biāo)進(jìn)入顯示圖標(biāo)窗口
(2)單擊繪圖工具箱 圖標(biāo)進(jìn)行繪制一個和窗口矩形一樣大的矩形
(3)設(shè)置矩形的顏色為“綠色”
(4)單擊顯示圖標(biāo)窗口的關(guān)閉按鈕,關(guān)閉保存對“單選界面”的設(shè)置。
3.3 設(shè)置交互“進(jìn)入”
(1)在交互圖標(biāo)的右邊拖放一個群組“單選”。
(2)設(shè)置單選的熱區(qū)為“按鈕”。
(3)單擊確定后,雙擊“選擇”。
3.3.1“未命名”用來擦除上次運(yùn)行的圖形
3.3.2 在“打開數(shù)據(jù)庫”的輸入如下源程序:
hint0:="您的數(shù)據(jù)庫沒有連接上......"
--顯示連接數(shù)據(jù)庫的信息
title:="數(shù)據(jù)庫連接...."
ODBChandle:=ODBCOpen(WindowHandle,"","database","","")
--得到數(shù)據(jù)源
getrecord:="select count(sequence) from erigister"
--得到記錄的個數(shù)
record:=ODBCExecute(ODBChandle,getrecord)
if ODBChandle=0 then--測試連接數(shù)據(jù)庫是否連接成功
MessageBox(WindowHandle,hint0,title,17)
end if
ODBCClose(ODBChandle)
ODBChandle:=ODBCOpen(WindowHandle,"","database","","")
if ODBChandle=0 then
MessageBox(WindowHandle,hint0,title,17)
end if
sqlstring1:="select ssdb from erigister where sequence="^record^"" -從表中選擇單選庫表題
ssdatabase:=ODBCExecute(ODBChandle,sqlstring1)
getrecord:="select count(sequence) from "^ssdatabase^""
record:=ODBCExecute(ODBChandle,getrecord)
--ssdb數(shù)據(jù)庫的記錄個數(shù),以便產(chǎn)生隨機(jī)數(shù)
sssum:=0
number1:=1
sui:=[]
sui[1]:=Random(1,record,1)
--下面程序用來產(chǎn)生一個隨機(jī)數(shù)不能出現(xiàn)相同的題目
i:=2
repeat while i
flag:=0
repeat while flag=0
sui[i]:=Random(1,record,1)
flag1:=0
repeat with p:=1 to i-1
if sui[i]=sui[p] then flag1:=1
end repeat
if flag1=0 then flag:=1
end repeat
i:=i+1
end repeat
3.3.3 在“做選擇的背景”顯示圖標(biāo)中設(shè)計單選題的界面如上圖5.4
3.3.4 在“數(shù)據(jù)庫的操作”中輸入如下代碼:在這里,我們就要實現(xiàn)對數(shù)據(jù)庫的隨機(jī)讀取和跟蹤答案的長短來選擇界面
x:=0
ran:=sui[number1]
result:=""
record1:=Number(record)
record:=record1--得到記錄的個數(shù)
sqlstring1:="select topic from "^ssdatabase^" where sequence="^ran^""分別得到選擇題各項
sqlstring2:="select a from "^ssdatabase^" where sequence="^ran^""
sqlstring3:="select b from "^ssdatabase^" where sequence="^ran^""
sqlstring4:="select c from "^ssdatabase^" where sequence="^ran^""
sqlstring5:="select d from "^ssdatabase^" where sequence="^ran^""
sqlstring6:="select result from "^ssdatabase^" where sequence="^ran^""
get1:=ODBCExecute(ODBChandle,sqlstring1)
--get1得到選擇題目內(nèi)容
get2:=ODBCExecute(ODBChandle,sqlstring2)
--get2得到選擇項A內(nèi)容
get3:=ODBCExecute(ODBChandle,sqlstring3)
--get3得到選擇項B內(nèi)容
get4:=ODBCExecute(ODBChandle,sqlstring4)
--get4得到選擇項C內(nèi)容
get5:=ODBCExecute(ODBChandle,sqlstring5)
--get5得到選擇項D內(nèi)容
get6:=ODBCExecute(ODBChandle,sqlstring6)
--get6得到選擇題的答案
inputa:=1 --用來設(shè)置熱區(qū)域的激活條件
3.3.5空“操作”用來設(shè)置跳轉(zhuǎn)標(biāo)志
3.3.6在交互圖標(biāo)右邊拖入四個熱區(qū)域
在計算圖標(biāo)中從左到右的四個計算圖標(biāo)中輸入: result:="A" result:="b" result:="c" result:="d"在交互屬性中設(shè)置激活條件為inputa=1: ,鼠標(biāo)指針設(shè)置為標(biāo)準(zhǔn)鼠標(biāo)指針,其它的為默認(rèn)設(shè)置.其中result變量用來記錄用戶所選的答案.
3.3.7拖一個交互圖標(biāo)“未命名”在它的右邊拖兩個計算圖標(biāo)為“上一題”和“下一題”,再拖一個群組“完成”放在“下一題”右邊 ,設(shè)置熱區(qū)為按鈕。在“上一題”的激活條件中輸入number1>1,鼠標(biāo)指針設(shè)置為:標(biāo)準(zhǔn)的鼠標(biāo)指針。在“下一題”的激活條件中輸入:number1
4 結(jié)束語
根據(jù)對教師上課時課堂練習(xí)的分析,開發(fā)出該考試系統(tǒng),主要是能夠方便課堂練習(xí),同時還可用于期中期末測試,該系統(tǒng)主要是針對《C語言程序設(shè)計》課程來設(shè)計的。對該系統(tǒng)做簡單修改,即可用于其它課程。
參考文獻(xiàn):
[1]王嘉寧,朱雋.Photoshop7.0中文版新概念百例[M].中國水利水電出版社,2004,4.
[2]龔祥國.主編.Photoshop圖像處理實用教程[M].科學(xué)出版社,2002,2.
[3]王龍,金海.主編.Flash MX實戰(zhàn)入門新概念[M].中國水利水電出版社,2005,5.
[4]李恒.Authorware 6.0多媒體實例大制作》[M] 冶金工業(yè)出版社,2002,4.
[5]袁海東.Authorware 7.0教程[M].電子工業(yè)出版社,2004,9.
關(guān)鍵詞:C語言;程序設(shè)計;學(xué)習(xí)方法;學(xué)習(xí)興趣
中圖分類號:TP312.1-4
《C語言程序設(shè)計》是計算機(jī)專業(yè)的一門核心專業(yè)基礎(chǔ)課程,是專升本、考研和等級水平考試的必考科目,也是學(xué)生學(xué)習(xí)中感到比較吃力的一門課。那么,如何學(xué)習(xí)《C語言程序設(shè)計》這門課程呢?現(xiàn)根據(jù)自己多年在教學(xué)中的體會,談一些粗淺的認(rèn)識。
1 為什么要學(xué)習(xí)《C語言程序設(shè)計》
《C語言程序設(shè)計》是用C語言來編寫程序的,每個程序員在他們的編程生涯中都應(yīng)該學(xué)習(xí)C語言,因為它有太多難以忽視的好處了。除了它會給你提供更多的工作機(jī)會之外,C語言還會教給你更多的關(guān)于計算機(jī)的知識。它的好處如下:
1.1 C語言是一種計算機(jī)程序設(shè)計語言
它既具有高級語言的特點,又具有匯編語言的特點,既可以用來編寫系統(tǒng)軟件,又可以用來編寫應(yīng)用軟件。它不僅具有繪圖能力強(qiáng),還具備很強(qiáng)的數(shù)據(jù)處理能力,因此也適于編寫三維,二維圖形和動畫。
1.2 C語言具有功能強(qiáng)大、使用靈活、豐富的數(shù)據(jù)類型和運(yùn)算符、結(jié)構(gòu)化的控制語句、目標(biāo)代碼運(yùn)行效率高、適用范圍大、可移植性好等優(yōu)點。
1.3 C語言是各大操作系統(tǒng)的基礎(chǔ),Unix、Linux、Windows其內(nèi)核都清一色是C語言開發(fā)的,(某些地方是和匯編語言混合開發(fā)的),還有各種語言的編譯器,包括java虛擬機(jī),各種嵌入式設(shè)備,如手機(jī)、PDA等都是C語言開發(fā)的。
1.4 C語言是基礎(chǔ),如果你學(xué)習(xí)過C語言,你就能學(xué)習(xí)現(xiàn)在任何的高級編程語言
因為所有的高級語言都是以C語言為基礎(chǔ)的(像JAVA,C++,C#等等)。C語言學(xué)好了,將來想學(xué)其他的語言,就比較好入門了。
2 如何學(xué)習(xí)《C語言程序設(shè)計》
2.1 克服畏難心理,充滿自信的學(xué)習(xí)《C語言程序設(shè)計》
大多數(shù)學(xué)生一看到《C語言程序設(shè)計》課程的教材,就有畏難的情緒,覺得C語言難學(xué),學(xué)不會,因為他們對計算機(jī)語言不了解,另外有些英語差的同學(xué),看到計算機(jī)編程是用英語編寫的,就未學(xué)先棄了。其實學(xué)習(xí)語言并沒有他們想象的那么難,英語差也對學(xué)習(xí)計算機(jī)語言影響不大,比如學(xué)C語言,真正要記的關(guān)鍵字不多,語法也不復(fù)雜,只要大家不帶著畏難的心理,充滿自信,一定能學(xué)好的。
2.2 要明確《C語言程序設(shè)計》的學(xué)習(xí)目的
通過《C語言程序設(shè)計》課程的學(xué)習(xí),掌握C語言基本知識,掌握程序設(shè)計的基本方法并逐步形成正確的程序設(shè)計思想,能夠熟練運(yùn)用基本程序結(jié)構(gòu)解決簡單問題,理解模塊化程序設(shè)計原則并能熟練使用C語言進(jìn)行程序設(shè)計,具備調(diào)試程序的能力,為后繼課程及其他程序設(shè)計課程的學(xué)習(xí)和應(yīng)用打下基礎(chǔ)。
2.3 要明白《C語言程序設(shè)計》與一般的計算機(jī)操作課程有所不同
《C語言程序設(shè)計》是計算機(jī)的一門軟件編程課程,是用C語言來編寫程序的,它具有難度性、抽象性、連續(xù)性和邏輯嚴(yán)密性。如果你第一次課來聽了,第二次課沒來,第三次課很可能就聽不懂了。比如,第一次課講的是數(shù)字1,2,3,4……,第二次課講的是運(yùn)算符號+,-,*,/,第三次課老師讓你算1+2=?,如果你前兩次課都來聽了,那么你就能算出它的結(jié)果,否則你就算不出它的結(jié)果。因此,如果要想學(xué)好《C語言程序設(shè)計》,必須堅持每次課都來,如果那天確實不能來,就應(yīng)在家自學(xué),不懂的地方應(yīng)及時向老師請教,一定不能落課。
2.4 要整體把握《C語言程序設(shè)計》
C語言是一種通用的程序設(shè)計語言,在開發(fā)系統(tǒng)軟件和應(yīng)用軟件中得到廣泛的應(yīng)用,已成為當(dāng)今計算機(jī)世界最流行的語言之一。C語言是一個整體,各個方面是有機(jī)聯(lián)系的,要從總體上把握它,不要把它割裂成互不關(guān)聯(lián)的部件。它包括C語言概述、數(shù)據(jù)類型(整型、實型、字符型、數(shù)組類型、指針類型、結(jié)構(gòu)體類型、共用體類型等)、運(yùn)算符和表達(dá)式、流程控制語句、函數(shù)、數(shù)組、字符與字符串、指針、結(jié)構(gòu)體、文件等。通過《C語言程序設(shè)計》的學(xué)習(xí),掌握程序設(shè)計的基本概念、基本思想、基本方法和基本技能,進(jìn)而學(xué)會利用C語言解決實際問題,培養(yǎng)計算機(jī)程序設(shè)計的能力和素質(zhì),以及思維方法,為以后學(xué)習(xí)其它計算機(jī)程序語言和后續(xù)的專業(yè)課程打下基礎(chǔ)。
簡單的C程序是由主函數(shù)和函數(shù)體兩大部分組成。它的基本框架如下:
main()
{
}
其中main表示“主函數(shù)”。每一個C程序都必須有一個main函數(shù),而且只能有一個main函數(shù),它表示程序從這里開始執(zhí)行。由花括號“{ }”括起的部分是函數(shù)體。其中函數(shù)體又包括定義變量、變量賦值、函數(shù)調(diào)用、輸出打印等。
例:一個簡單的求和程序
main() /*主函數(shù)*/
{
int a,b,sum; /*定義變量*/
a=123;b=456; /*變量賦值*/
sum=a+b; /*求兩數(shù)之和*/
printf(“sum is %d\n”,sum); /*輸出和值*/
}
這是一個簡單的求和程序。/*...*/表示注釋部分,只給人看的,對編譯和運(yùn)行不起作用。第3行是聲明部分,定義變量a、b、sum,指定a、b、sum為整型(int)變量。第4行是兩個賦值語句,使a和b的值分別為123和456。第5行使sum的值為a+b,第6行中“%d”是輸入輸出的“格式字符串”,用來指定輸入輸出時的數(shù)據(jù)類型和格式,“%d”表示“以十進(jìn)制整數(shù)形式輸出”。Printf函數(shù)中括弧內(nèi)最右端sum是要輸出的變量,現(xiàn)在它的值為579(即123+456之值)。因此輸出一行信息為:
sum is 579
從這個例子可以看出,想要把《C語言程序設(shè)計》這門課學(xué)好,不僅要知道《C語言程序設(shè)計》的基本框架,還要學(xué)好函數(shù)體中的內(nèi)容(變量類型、定義變量、變量賦值、輸入輸出格式字符串、輸入輸出函數(shù)格式、調(diào)用函數(shù)等)。另外還要學(xué)好C語言的運(yùn)算符、運(yùn)算順序 、四種程序結(jié)構(gòu)(順序結(jié)構(gòu)、分支結(jié)構(gòu)、循環(huán)結(jié)構(gòu)、模塊化程序結(jié)構(gòu) )、掌握一些簡單的算法等。
2.5 熟練C程序的上機(jī)步驟
在編好一個C源程序后,如何上機(jī)運(yùn)行呢?要經(jīng)過編輯、編譯、連接和運(yùn)行四個步驟。
(1)編輯源文件。在編輯(Edit)狀態(tài)下輸入或修改源程序。
(2)編譯源程序。選擇“C編譯”菜單并選擇“編譯到OBJ”,進(jìn)行編譯,得到一個后綴為.obj的目標(biāo)程序。
(3)然后再選擇菜單“L連接EXE文件”,進(jìn)行連接操作,可得到一個后綴為.exe的可執(zhí)行文件。
(4) 運(yùn)行程序。在“RUN”菜單中選擇“R運(yùn)行程序”項,或直接按Ctr+F9鍵,系統(tǒng)就會運(yùn)行已編譯好的可執(zhí)行目標(biāo)文件。此時,TC集成環(huán)境窗口消失,屏幕上顯示出程序運(yùn)行的結(jié)果。如果程序需要輸入數(shù)據(jù),則應(yīng)在此時,從鍵盤輸入所需數(shù)據(jù),然后程序會接著執(zhí)行,輸出結(jié)果。
2.6 要加強(qiáng)編程訓(xùn)練
《C語言程序設(shè)計》是實踐性非常強(qiáng)的課程,要求學(xué)員要理論聯(lián)系實際,在掌握C語言的基本語法和基本知識后,重點應(yīng)放在提高編程能力的訓(xùn)練上。根據(jù)學(xué)生學(xué)習(xí)的認(rèn)知特點,我認(rèn)為主要應(yīng)從以下幾個方面進(jìn)行強(qiáng)化訓(xùn)練:
(1)吃透課本例子。每學(xué)完一次新課,讓學(xué)生對課本例子先分析任務(wù)、再仔細(xì)閱讀程序,然后按書上的源代碼敲出來,編譯執(zhí)行輸出結(jié)果,如果結(jié)果跟書上一致就算完成,如果不一致,就要仔細(xì)找原因。再后不看書自己編寫代碼與課本對照,找出自己的不足,然后改進(jìn)。最后在此例的基礎(chǔ)上自己加以改造,舉一反三,變?yōu)槠渌睦?,如此反?fù)練習(xí),不僅培養(yǎng)了學(xué)生動腦思考的習(xí)慣,而且養(yǎng)成了遇事三思、認(rèn)真、周密的作風(fēng)。
(2)精選上機(jī)題目,要求調(diào)試通過。每章找出一個或兩個綜合性的具有代表性的應(yīng)用題目,如編寫一個程序,計算一個整數(shù)的名位數(shù)字之和;用選擇法對數(shù)組中10個整數(shù),按由小到大的順序進(jìn)行排序等,要求用C語言編寫可執(zhí)行的源程序,上機(jī)調(diào)試。這樣不僅鍛煉了學(xué)生解決實際問題的能力,更重要的是激發(fā)了學(xué)生學(xué)習(xí)課程的興趣,抽象變具體 ,理論變實踐,對這門課有了更深的認(rèn)識。
(3)閱讀填空法。找一些經(jīng)典程序,配上必要的說明,適當(dāng)去掉語句或表達(dá)式,讓學(xué)生通過閱讀填補(bǔ)空白,訓(xùn)練學(xué)生的程序設(shè)計能力。例編寫一個程序,輸入月份號,輸出月的英文月名,還有求和、排序、報號等。
(4)準(zhǔn)備一個經(jīng)驗本,記下C語言重要的語法和知識點,還有自己出錯的解決方法及老師講解的其他同學(xué)出現(xiàn)的常見錯誤,抽空常翻看,逐步積累經(jīng)驗,加深印象,使以后避免。
(5)帶著作業(yè)去上機(jī)。每次理論課結(jié)束后,老師都會給學(xué)生布置一些作業(yè)(如習(xí)題)讓學(xué)生做,那么學(xué)生一定要認(rèn)認(rèn)真真的把作業(yè)完成好,先把程序編寫在作業(yè)本上,上機(jī)時再把這些程序敲到計算機(jī)上,進(jìn)行修改、調(diào)試、運(yùn)行,最后輸出結(jié)果。如果學(xué)生不帶作業(yè)去上機(jī),第一次老師警告下次一定帶作業(yè)上機(jī),如果第二次還沒帶作業(yè),不準(zhǔn)學(xué)生進(jìn)機(jī)房,讓學(xué)生到教室把作業(yè)做完后再到機(jī)房上機(jī)調(diào)試。有人說學(xué)生可以直接在機(jī)器上編寫程序,固然沒錯,但對于初學(xué)者來說,如果在機(jī)器上邊思考邊編寫,也就是說想一句編一句,再想一句再編一句,這樣太浪費時間,一節(jié)課說不定連一個程序都編不好,所以老師一定要求學(xué)生在課下把程序編好,上機(jī)只需把程序敲出來進(jìn)行修改、調(diào)試、運(yùn)行,這樣能節(jié)約大量的時間,學(xué)生上機(jī)時間本身都是有限的。
上述方法在教學(xué)實踐中證明是行之有效的,學(xué)生對問題分析、程序設(shè)計的自覺性和能動性得到提高,動手能力加強(qiáng),對后繼課如《C++》、《面向?qū)ο蟪绦蛟O(shè)計》等,學(xué)習(xí)起來倍感輕松,較好地完成了該門課程的學(xué)習(xí)目標(biāo)。總之,實踐出真知,多學(xué)、多練、多思、多交流,勤奮好學(xué)才能學(xué)成。
參考文獻(xiàn):
[1]嚴(yán)桂蘭.C語言程序設(shè)計與應(yīng)用教程[M].福建:廈門大學(xué)出版社,2001.
[2]譚浩強(qiáng).C程序設(shè)計(第三版)[M].北京:清華大學(xué)出版社,2005.
[3]陳東.計算機(jī)多媒體教學(xué)改革的一些嘗試[J].福建師范大學(xué)學(xué)報(自然版),2004,20(3):98.
[4]王蘭.學(xué)好《C程序設(shè)計》的幾點建議[J].科技信息,2007(9).
程序設(shè)計對于各個計算機(jī)類高校而言,都是非常重要的一類課程,尤其是理工類院校的必修課。而要進(jìn)行程序設(shè)計,必須掌握一門計算機(jī)語言來做為編程工具。目前,很多計算機(jī)類高校都把C語言作為程序設(shè)計的入門課程來教學(xué)。我們知道可供選擇的計算機(jī)語言是非常多的,如C++,C#,java等等,之所以選擇C語言是由于C語言功能豐富,表達(dá)能力強(qiáng),使用靈活方便,應(yīng)用面廣,目標(biāo)程序效率高,可移植性好,它既有高級語言的優(yōu)點,又有低級語言的許多特點??梢哉f,學(xué)好C語言對打好程序設(shè) 計基礎(chǔ)起到至關(guān)重要的作用。
由于很多高校在學(xué)生進(jìn)入大學(xué)學(xué)習(xí)的第一學(xué)期就開設(shè)C語言課程,大多數(shù)學(xué)生在高中時因為高考的壓力而沒有接觸過計算機(jī),對計算機(jī)的基本操作并不了解。這就導(dǎo)致了學(xué)生在學(xué)習(xí)C語言的過程中,感覺C語言語法枯燥,難以掌握;對基本概念能夠理解,但是當(dāng)實際應(yīng)用到程序編寫的時候又感覺無從下手;學(xué)生沒有養(yǎng)成良好的程序編寫習(xí)慣,使寫出來的程序漏洞百出……等等這些問題都跟教師的教學(xué)方法、學(xué)生的學(xué)習(xí)方法有很大的關(guān)系。針對學(xué)習(xí)C語言中的種種問題,根據(jù)筆者多年的C語言教學(xué)經(jīng)驗,下面提出C語言教學(xué)中的一些新思路供大家共同探討。
1 掌握基本要求,打好學(xué)習(xí)基礎(chǔ)
在學(xué)生階段,C語言的學(xué)習(xí)主要是學(xué)習(xí)程序設(shè)計的方法,訓(xùn)練程序設(shè)計的思維,為以后進(jìn)一步的學(xué)習(xí)和應(yīng)用打下良好的基礎(chǔ)。但在實際教學(xué)當(dāng)中,很多學(xué)生改變不了高中時期的學(xué)習(xí)方法,對課本上的概念和程序死記硬背,總以為把書背熟了就能夠?qū)W好C語言,而沒有把精力放在最基礎(chǔ)、最常用的內(nèi)容上,以至于基礎(chǔ)薄弱,在程序的編寫時經(jīng)常會出現(xiàn)一些不應(yīng)有的錯誤。筆者在教學(xué)中發(fā)現(xiàn)學(xué)生經(jīng)常會出現(xiàn)以下一些問題。
(1)編寫程序時不區(qū)分標(biāo)示符的大小寫。例如,int myname和int MyName就是完全不同的兩個變量。在C語言里面,對標(biāo)示符大小寫敏感,但是很多同學(xué)就是會忽略這最基本的要求,造成程序出錯。
(2)對“=”和“==”混淆使用?!?”是C語言里的賦值符號,把右邊的值賦給左邊的變量;而“==”是關(guān)系運(yùn)算符,它的作用是判斷“==”兩邊的值是否相等,返回的結(jié)果是一個邏輯值,即“真”或“假”。例如:a=1,是把1這個數(shù)據(jù)放在變量a里面,而a==1,表示a變量的值是否跟1相等,如果相等返回“真”,如果不相等就返回“假”。
(3)顛倒printf()函數(shù)值的輸出順序。直接看個例子:
輸出的正確值應(yīng)該分別為10,11,10,10。
很多學(xué)生出現(xiàn)錯誤是因為不理解printf()函數(shù)執(zhí)行的順序,printf()函數(shù)在執(zhí)行時是從右到左,而輸出時是從左到右。
從以上3個學(xué)生容易出錯的例子我們可以看出,正是由于學(xué)生對基礎(chǔ)知識掌握的不理想,導(dǎo)致這些極其簡單錯誤的出現(xiàn)。在我們的教學(xué)當(dāng)中,教師也必須把最基礎(chǔ)的知識跟學(xué)生講透,讓學(xué)生改變學(xué)習(xí)觀念,對學(xué)生加以引導(dǎo),懂得學(xué)習(xí)C語言并不是一朝一夕就能夠一下子變成編程高手,而應(yīng)該腳踏實地,實事求是地打好基礎(chǔ)。
2 重視算法的學(xué)習(xí)
算法是程序的靈魂,沒有好的算法,就編寫不出好的計算機(jī)程序。在C語言教學(xué)中,教師在很多時候都不注重算法的教學(xué),導(dǎo)致學(xué)生上課時候能聽得懂,看得懂課本上的程序例題,但是當(dāng)布置作業(yè)讓學(xué)生自己去完成程序編寫的時候,學(xué)生又感覺無從下手。這些都是由于學(xué)生只注重去背課本上的程序例題,而不注重程序的算法思想照成的。教師在教學(xué)中要注意對學(xué)生算法邏輯思維的培養(yǎng),在講解程序時,應(yīng)該首先分析程序中所需要用到的算法,要把重點放在例題的解題思路上,一步一步地引導(dǎo)學(xué)生,讓學(xué)生知道程序為什么要這樣編寫。在授課階段初期,我們也可以給學(xué)生舉一些簡單的、有生活氣息的例題來引發(fā)學(xué)生對算法的興趣。例如,我們可以舉這樣的一些例子。
(1)家里有個微波爐可以同時燒烤2份牛排,每份牛排有兩面,每面需要燒烤2分鐘才可以食用,問用微波爐燒烤3份可以食用的牛排需要多少時間?這個問題用算法來解答的話,我們可以有2種方案。第1種,先把第1份牛排和第2份牛排放進(jìn)去燒烤2分鐘,然后再把這2份牛排翻一面過來再燒烤2分鐘,接下來把第3份牛排放進(jìn)去,燒烤兩面共花去4分鐘,由此可知整個過程一共要用掉8分鐘。第2種,同樣的把第1份牛排和第2份牛排放進(jìn)去燒烤2分鐘,然后把第2份牛排先取出來,把第1份牛排翻一面過來跟第3份牛排一起放進(jìn)去燒烤2分鐘,最后把第3份牛排翻一面過來跟第2份牛排的另一面一起燒烤2分鐘,這樣3份牛排就都烤好了,這種方法,我們只需要6分鐘。很顯然,用這樣一個簡單的例子,可以讓學(xué)生知道算法的重要性,好的算法可以節(jié)省程序大量的執(zhí)行時間。
(2)有甲乙兩人,甲現(xiàn)在26歲,乙現(xiàn)在8歲,求多少年之后甲的年齡是乙年齡的兩倍?對于這個問題,我們可以引導(dǎo)學(xué)生使用循環(huán)體來解答。我們知道年齡是逐年增長的,假設(shè)甲為變量m,乙為變量n,則循環(huán)體就是m++、n++的一個過程,當(dāng)甲和乙的年齡相差兩倍時,循環(huán)結(jié)束。所以我們設(shè)定循環(huán)體的執(zhí)行條件應(yīng)該是m!=2*n。最后當(dāng)循環(huán)體結(jié)束時輸出m和n的值。通過這樣的一個分析過程,相信學(xué)生很快就能夠?qū)懗鲞@個問題的程序。
由此可見,通過一些例子的算法講解,一方面能夠讓學(xué)生理解解題的過程,一方面還可以鍛煉學(xué)生的算法思維,讓學(xué)生感受到算法的重要性。
3 上好實驗課
上機(jī)實驗也是C語言教學(xué)中的一個重要環(huán)節(jié),學(xué)生僅僅聽課是學(xué)不好C語言的。學(xué)生不僅要能夠掌握基礎(chǔ)的概念,還要自己動手編寫程序,最后要親自上機(jī)調(diào)試程序的運(yùn)行并對程序進(jìn)行修改。所以,如何上好C語言課程的實驗課,也是教師要思考的一個問題。在筆者平時的教學(xué)中遇到這樣的一些問題,如很多學(xué)生在上實驗課時,沒有把精力放在學(xué)習(xí)上,而是在玩游戲看小說;還有些學(xué)生上實驗課前沒有很好的預(yù)習(xí),浪費了大量時間在知識的復(fù)習(xí)上;在實驗過程中,學(xué)生一遇到問題就會向老師提問,以至于老師疲于解答甚至由于問的人數(shù)過多而無法一一進(jìn)行解答。這些問題都影響到實驗課的效果,甚至?xí)绊懙讲糠謱W(xué)生的學(xué)習(xí)積極性。如何改變這種狀況,筆者采用以下幾種方法。
(1)在上實驗課之前就把實驗題目布置給學(xué)生,學(xué)生在上課之前就需要提交給教師一份預(yù)習(xí)報告,這份報告里面應(yīng)該包含學(xué)生對實驗題目的解題思路及初步的解題程序。然后讓學(xué)生帶著這份報告上機(jī)調(diào)試程序。這樣就可以避免學(xué)生在上實驗課時無所事事的情況。
(2)對于有條件的學(xué)校可以配置多名實驗指導(dǎo)教師。學(xué)生在實驗中經(jīng)常會遇到一些問題需要教師幫助解決,當(dāng)問的人比較多的時候,教師就沒有辦法一一解答,而部分學(xué)生由于得不到解答而會停止程序的調(diào)試轉(zhuǎn)做其他事情,如果一直得不到幫助的話,就會影響他們的積極性,所以配置一到多名指導(dǎo)教師是很有必要的。如果沒有足夠教師的話,我們可以讓班級里面學(xué)習(xí)比較好的同學(xué),組成一個學(xué)習(xí)興趣小組。讓這些學(xué)生在實驗課時對一些有問題的同學(xué)進(jìn)行幫助,這樣既能夠增進(jìn)學(xué)生之間的友誼,又能夠完成教師布置的實驗任務(wù)。
(3)改變實驗的考核方式。很多教師一般都是在下課的時候讓學(xué)生提交作業(yè),這樣可能會讓一些學(xué)生鉆空子,拷貝別人的作業(yè)提交。所以建議在課堂上當(dāng)場對學(xué)生的作業(yè)進(jìn)行評分,遇到有雷同的作業(yè),要求學(xué)生重做。在期末的時候,也必須要強(qiáng)調(diào)平時的成績,不能把期末成績作為衡量學(xué)生成績的唯一指標(biāo)。
通過以上的一些措施,可以有效地促進(jìn)學(xué)生對C語言的學(xué)習(xí)效果,對鞏固C語言的課堂教學(xué)起到了巨大的作用。
關(guān)鍵詞關(guān)鍵詞:C++;程序設(shè)計; 教學(xué)方法;教學(xué)改革
中圖分類號:G433
文獻(xiàn)標(biāo)識碼:A 文章編號:16727800(2014)002018902
0引言
C++語言廣泛應(yīng)用于基礎(chǔ)軟件、桌面系統(tǒng)、網(wǎng)絡(luò)通信、音頻視頻、游戲娛樂等諸多領(lǐng)域,是世界上使用最廣泛的編程語言之一。隨著物聯(lián)網(wǎng)技術(shù)的發(fā)展,C/C++技術(shù)在3G網(wǎng)絡(luò)通信、多媒體處理、智能識別等領(lǐng)域得到了進(jìn)一步的推動和發(fā)展。但人才短缺依然制約著行業(yè)的發(fā)展,很多高校都認(rèn)識到這一點,相繼開設(shè)《C++語言程序設(shè)計》課程,目的在于讓計算機(jī)專業(yè)的學(xué)生多學(xué)會一門編程語言,進(jìn)一步培養(yǎng)學(xué)生獨立思考、分析和解決問題的能力,增加就業(yè)砝碼。然而《C++語言程序設(shè)計》這門課程學(xué)起來并不容易,不僅有很強(qiáng)的理論性,更具有實用性,課堂理論教學(xué)和代碼編寫缺一不可。在傳統(tǒng)教學(xué)過程中,由于教學(xué)目標(biāo)不清晰,部分學(xué)生會質(zhì)疑開設(shè)這門課程的必要性,并且教學(xué)內(nèi)容或教學(xué)方法上的不足,也使得學(xué)生學(xué)起來枯燥,逐漸產(chǎn)生畏難心理。因此,高?!禖++語言程序設(shè)計課程》的教學(xué)改革勢在必行。本文根據(jù)多年來的實際教學(xué)情況和C++培訓(xùn)市場調(diào)研分析,從該課程的教學(xué)目標(biāo)、教學(xué)內(nèi)容以及教學(xué)實施方法等方面進(jìn)行探索性的改革。
1教學(xué)中存在的普遍問題
1.1學(xué)生無法明確教學(xué)目標(biāo)
以武漢東湖學(xué)院的《計算機(jī)語言程序設(shè)計》課程為例,4年的時間依次開設(shè)了《高級語言程序設(shè)計——C》、《面向?qū)ο蟪绦蛟O(shè)計——Java》、《C++語言程序設(shè)計》《.net 程序設(shè)計》4門課程。學(xué)校的出發(fā)點是全面培養(yǎng)學(xué)生的軟件開發(fā)編程能力,不斷提高學(xué)生獨立思考、分析和解決問題的能力,從而增加學(xué)生就業(yè)砝碼。4門課程跨越不同的教學(xué)學(xué)期,由不同的教師授課,教師如果只關(guān)注自己所授課程,沒能從全局比較分析,學(xué)生很可能無法明確教學(xué)目標(biāo)。
C++語言比較難學(xué),課程教學(xué)中牽涉到的概念比較復(fù)雜、規(guī)則繁多;C++使用靈活、容易出錯,不少學(xué)生感到學(xué)習(xí)困難;同時C++是面向?qū)ο蟪绦蛟O(shè)計語言,但又不是純面向?qū)ο笳Z言,它在過程語言中增加了面向?qū)ο蟮慕Y(jié)構(gòu)。這種特性使得C++語言能夠保持與C語言的兼容。在教學(xué)初期,學(xué)生會覺得C++很親切,許多C語言代碼不經(jīng)修改就可以為C++語言使用[1]。此時如果不讓學(xué)生明確學(xué)習(xí)的目標(biāo)和意義,學(xué)生很容易誤解甚至?xí)靡桑簩W(xué)了C為什么還要學(xué)C++,既然不是純面向?qū)ο笳Z言,用Java替代C++不就可以了嗎?這樣,C++語言教學(xué)自然不會有良好的教學(xué)效果。
1.2教學(xué)內(nèi)容注重語法,課后延伸不多
教學(xué)內(nèi)容更多關(guān)注語法。C++語言同所有算法語言一樣都由自己特定語句組成,每條語句又有自己的一些特定使用規(guī)則[2]。在傳統(tǒng)的《C++語言程序設(shè)計》課程教學(xué)中,無論是教材還是教師授課,都是先介紹概念,再介紹規(guī)則,最后講解例子。有關(guān)概念規(guī)則的內(nèi)容相對來說較為枯燥難記,在講授過程中,難以引起學(xué)生的興趣。雖然最后有例子講解,但通常都是彼此孤立的、按章節(jié)對應(yīng)教學(xué)內(nèi)容的一些小數(shù)學(xué)問題[2],學(xué)生還是很難從中感受到實際應(yīng)用價值。
受課程學(xué)時所限,課程教學(xué)內(nèi)容大多也只能以基本的語法、規(guī)則、小案例形式來呈現(xiàn)。如果課后不加以延伸或適當(dāng)學(xué)習(xí),學(xué)生對C++的學(xué)習(xí)就只能停留在皮毛。
1.3教學(xué)方法與企業(yè)實際脫節(jié)
學(xué)生在學(xué)習(xí)《C++語言程序設(shè)計》課程時,往往有種“只見樹木,不見森林”的感覺。因為傳統(tǒng)教學(xué)往往都是簡單地按照教材順序循序漸進(jìn)地進(jìn)行,每節(jié)課都會讓學(xué)生學(xué)習(xí)并記住許多概念和規(guī)則,但他們并不知如何綜合起來解決問題[3]。即使安排大量實驗課,也多是圍繞每個章節(jié)分散地進(jìn)行相關(guān)概念或者規(guī)則的實踐。一段時間后學(xué)生往往對這門課感到厭倦,學(xué)到的知識也不足以駕馭實際項目開發(fā)。
2教學(xué)改革策略
針對上述現(xiàn)象,本文從以下幾方面探討了對課程的教學(xué)改革,實際運(yùn)用中也取得了良好的教學(xué)效果。
2.1明確學(xué)習(xí)目的,激發(fā)學(xué)生的內(nèi)在動力
教育心理學(xué)指出,學(xué)習(xí)動機(jī)是學(xué)習(xí)活動得以發(fā)生、維持進(jìn)行,直到完成的內(nèi)在動力?,F(xiàn)代大學(xué)生對自己的學(xué)習(xí)活動、學(xué)習(xí)內(nèi)容以及其對未來的就業(yè)和發(fā)展十分關(guān)注,如能在課堂教學(xué)初期講清課程的開設(shè)目標(biāo)以及相關(guān)就業(yè)前景,充分重視學(xué)生的這種學(xué)習(xí)動機(jī),學(xué)習(xí)效果自然會提高。例如,在講授《C++語言程序設(shè)計》課程前,可以收集一些招聘C++語言編程人員的就業(yè)信息及畢業(yè)生從事C++語言編程工作的收入、工作崗位發(fā)展趨勢等學(xué)生十分關(guān)注的重要信息。到了教學(xué)初期,在講授“什么是C++”時,可穿插著介紹這些信息,并讓學(xué)生知道“C++語言廣泛應(yīng)用于基礎(chǔ)軟件、桌面系統(tǒng)、網(wǎng)絡(luò)通信、音頻視頻、游戲娛樂等諸多領(lǐng)域。目前,企業(yè)招牌C++軟件開發(fā)工程的數(shù)量占軟件開發(fā)工程師總量的1/3左右,薪水居高不下。要盡快使每個學(xué)生明確即將學(xué)習(xí)的知識與社會的關(guān)系,因人而異地幫助學(xué)生找到各自的學(xué)習(xí)目標(biāo),激發(fā)學(xué)生的內(nèi)在動力。
2.2教學(xué)內(nèi)容注重從整體到具體,再從具體到整體
雖然教材的編排大都按照先概念、再規(guī)則、最后舉例這一順序,但由于其間知識的分散性,彼此缺乏聯(lián)系,使學(xué)生不能體會一個完整的編程過程。在教學(xué)中,應(yīng)注重教學(xué)內(nèi)容從整體到具體,再從具體到整體,使學(xué)生通過一個完整案例先快速了解C++語言程序設(shè)計的全過程,然后增添程序設(shè)計的教學(xué)內(nèi)容,具體分析實現(xiàn)步驟中的各個知識點,學(xué)習(xí)更高標(biāo)準(zhǔn)和要求的程序,最后學(xué)生在學(xué)完所有知識點后完成一個完整的設(shè)計。這種思路特別適合程序設(shè)計類的其它課程。
2.3教學(xué)方法注重同中求異、異中求同
這樣可使學(xué)生學(xué)會抓住事物的本質(zhì)特點,加深對事物的理解,有利于培養(yǎng)學(xué)生的創(chuàng)造性思維。為了能使學(xué)生的學(xué)習(xí)更深入,采用對比的方法進(jìn)行教學(xué),可以達(dá)到很好的教學(xué)效果。例如,學(xué)生在學(xué)習(xí)C++語言時可以拿它與C語言作比較,C++程序語言與C語言在程序設(shè)計思路上存在著不同:一個是面向?qū)ο蟮某绦蛟O(shè)計語言,將數(shù)據(jù)與數(shù)據(jù)方法捆綁在一起;一個是面向過程的程序設(shè)計語言,由上至下,采用分模塊方式。但兩者之間的共同之處也比較多,C++語言是對C語言的改進(jìn)與擴(kuò)充,是C語言的一個超集,它保持了對C語言的兼容,也即在C語言中使用的命令,可以直接在C++中使用。通過比較,學(xué)生更能體會到教學(xué)的目的性。
2.4校企聯(lián)合,模擬職前培訓(xùn)
計算機(jī)專業(yè)的畢業(yè)生為了快速就業(yè),有時會選擇到培訓(xùn)機(jī)構(gòu)進(jìn)行職前培訓(xùn)。培訓(xùn)并不意味著一定就業(yè)或高薪,關(guān)鍵還是看學(xué)生。高校進(jìn)行《C++語言程序設(shè)計》課程教學(xué)時,如能實現(xiàn)校企聯(lián)合,在后期的實踐環(huán)節(jié)注入培訓(xùn)機(jī)構(gòu)的授課法,即通過多個項目讓學(xué)生掌握C++的軟件開發(fā)技能,將大量的開發(fā)經(jīng)驗融入教學(xué);并且,每學(xué)完一個專題就配一個項目實戰(zhàn),最后完成一個即時通信或多媒體音/視頻項目,積累開發(fā)經(jīng)驗,模擬職前培訓(xùn),對學(xué)生能力的提高大有益處。
3結(jié)語
本文提出了《C++語言程序設(shè)計》課程的教學(xué)改革思路,即通過改善教學(xué)方法,調(diào)整教學(xué)內(nèi)容,真正以激發(fā)學(xué)生學(xué)習(xí)興趣為導(dǎo)向,校企聯(lián)合或者注入培訓(xùn)機(jī)構(gòu)的授課法模擬職前培訓(xùn),讓學(xué)生積累開發(fā)經(jīng)驗。教學(xué)實踐證明,這些教學(xué)改革舉措在一定程度上能夠提高教學(xué)效果,同時其非常適用于其它編程語言課程的學(xué)習(xí)。
參考文獻(xiàn):
[1]楊庚.面向?qū)ο蟪绦蛟O(shè)計與C++語言[M].北京:人民郵電出版社,2006.
關(guān)鍵詞:c語言程序設(shè)計;研究型教學(xué);評價體系;協(xié)同學(xué)習(xí)
文章編號:1672-5913(2010)08-0115-03
中圖分類號:G642
文獻(xiàn)標(biāo)識碼:B
c語言程序設(shè)計是計算機(jī)科學(xué)與技術(shù)以及相關(guān)專業(yè)的重要專業(yè)基礎(chǔ)課程。c語言程序設(shè)計課程的開設(shè)對提高學(xué)生分析問題和解決問題的能力,提高邏輯思維的嚴(yán)謹(jǐn)性,培養(yǎng)學(xué)生從問題空間到計算機(jī)程序空間的轉(zhuǎn)變起到了重要的作用。但長期以來,教師感到c語言難教,學(xué)生反映c語言難學(xué),教和學(xué)的效果都不盡人意。具體地說,C語言教學(xué)中存在以下問題:一是在教學(xué)中沒有發(fā)揮學(xué)生的主體地位,一直以教師講學(xué)生聽的模式進(jìn)行教學(xué)。二是強(qiáng)調(diào)語言語法知識的傳授,忽視學(xué)生思維能力的培養(yǎng)。三是對學(xué)生成績的評價不合理,以一張試卷決定學(xué)生的成績。四是忽視了對學(xué)生工程觀念的培養(yǎng),學(xué)生只會編寫一些簡單的程序,而缺少綜合開發(fā)能力。
為解決這些問題,我們學(xué)院對c語言程序設(shè)計的教學(xué)模式進(jìn)行探索,在以“學(xué)生中心,教師主導(dǎo),因材施教,案例教學(xué),團(tuán)隊協(xié)作,評價合理”的教學(xué)思想指導(dǎo)下,從教學(xué)觀念、教學(xué)內(nèi)容、實驗方法、輔導(dǎo)方式、評價手段和教學(xué)手段等方面進(jìn)行了探索性研究,著力推進(jìn)研究性教學(xué)。主要體現(xiàn)在以下幾個方面。
1 以研究促進(jìn)教學(xué),通過高水平的研究帶動高質(zhì)量的教學(xué)
以教研室為單位,建立學(xué)術(shù)研究群體,緊密結(jié)合專業(yè)建設(shè)與課程建設(shè),成立c語言課程研究小組,了解課程知識體系的發(fā)展動態(tài),把研究成果融入課堂教學(xué)中。在教學(xué)中實施創(chuàng)新型教學(xué),創(chuàng)新型教學(xué)是創(chuàng)新人才培養(yǎng)的基礎(chǔ),不同于傳統(tǒng)教學(xué)模式,它具有目標(biāo)性原則、因材施教原則、教學(xué)相長原則、合作競爭原則、綜合評價原則等特征。創(chuàng)新型教學(xué)以學(xué)生為主體,以學(xué)生的能力培養(yǎng)為教學(xué)核心,強(qiáng)調(diào)師師、師生、生生全方位交流,以師生共同參與的多元化增量式評價為基準(zhǔn),培養(yǎng)出知識、能力、素質(zhì)協(xié)調(diào)發(fā)展的、與社會需求接軌的應(yīng)用型人才。
2 轉(zhuǎn)變教學(xué)觀念和教學(xué)模式,著力提高教學(xué)效果
在“教”的方面,要由傳統(tǒng)的只重視知識和技能的淺層教學(xué),轉(zhuǎn)變?yōu)榫C合培養(yǎng)學(xué)生的興趣、動機(jī)、態(tài)度、信念、思維判斷能力和表達(dá)能力的深層教學(xué)。在“學(xué)”的方面,要由應(yīng)試教育下的被動接受、考試投機(jī)取巧的被動學(xué)習(xí),轉(zhuǎn)變?yōu)樽灾魈骄?、合作學(xué)習(xí)、善于思考、積極進(jìn)取的主動學(xué)習(xí)。要重新界定教師的教學(xué)活動中的地位,教師在教學(xué)中的地位表現(xiàn)在:①課程的設(shè)計者。要求老師構(gòu)建出理論教學(xué)中要搭建的知識框架,設(shè)計出課程討論題目或?qū)嶋H操作項目,由學(xué)生通過合作學(xué)習(xí)來填充,從而完成知識體系的構(gòu)建。在c語言教學(xué)中,教師合理構(gòu)建案例,通過案例教學(xué),培養(yǎng)學(xué)生的邏輯思維能力和解決實際問題的能力,為學(xué)生架構(gòu)完整的知識體系結(jié)構(gòu)。②合作學(xué)習(xí)的組織者。要求教師在教學(xué)中應(yīng)扮演合作學(xué)習(xí)情景的創(chuàng)設(shè)者、良好人際關(guān)系氛圍的協(xié)調(diào)者的角色,積極地對合作學(xué)習(xí)過程進(jìn)行有效的組織和調(diào)控。在c言語教學(xué)中,通過異質(zhì)學(xué)習(xí)小組的建立,給他們創(chuàng)建實際的應(yīng)用場景,使學(xué)生了解C的學(xué)習(xí)的作用和意思。目標(biāo)性原則是學(xué)習(xí)動力產(chǎn)生的動因。如果學(xué)生根本不知道這門課程的作用,就會感到迷茫,這是大部分高校學(xué)習(xí)的學(xué)習(xí)計算機(jī)相關(guān)專業(yè)中遇到的問題。在這種情況下,學(xué)生不可能產(chǎn)生強(qiáng)烈的學(xué)生興趣。③合作學(xué)習(xí)的伙伴。教師是學(xué)生合作學(xué)習(xí)的同伴,解決問題,因材施教,由于不同學(xué)生在思維方式上的差異,他們的興趣點和興奮點是不同的,因此,在c語言的教學(xué)中要充分發(fā)揮學(xué)生的特長,不可一刀切,給不同群體設(shè)計不同的學(xué)習(xí)目標(biāo)。以“跳一下能觸摸”為原則,不能過分超出學(xué)生的承受能力,否則會扼殺學(xué)生的學(xué)生興趣。④教學(xué)反思的實踐者。教師要對自己的教育觀、學(xué)生觀、學(xué)習(xí)觀進(jìn)行反思,對教學(xué)知識、教學(xué)實踐中的不足進(jìn)行反思,總結(jié)經(jīng)驗,不斷進(jìn)步,以提升自己的教學(xué)能力與素質(zhì)。c語言教學(xué)經(jīng)歷了許多年,不同學(xué)校、不同教師也經(jīng)歷了各種改革,應(yīng)該對改革的內(nèi)容進(jìn)行不斷反饋,保留成功的,改革不足的,去除不適的。
3 構(gòu)建異質(zhì)學(xué)生小組,實施協(xié)同學(xué)習(xí)與合作研究方式。發(fā)揮群體力量
信息技術(shù)發(fā)展迅速,而個人獲取知識的能力有限。在課程教學(xué)開始,讓學(xué)生明確課程學(xué)習(xí)的目標(biāo)與考核要求,建立目標(biāo)式學(xué)習(xí)方式。在課程教學(xué)過程中,推行小組式學(xué)習(xí)方式,充分發(fā)揮群體智慧,互相學(xué)習(xí),互相啟發(fā),達(dá)到共同提高的學(xué)習(xí)目的。根據(jù)學(xué)生的學(xué)業(yè)水平、能力傾向、個性特征、性別等的差異合理構(gòu)建異質(zhì)學(xué)生小組。創(chuàng)設(shè)一種只有當(dāng)小組成功時小組成員才能達(dá)到個人目標(biāo)的情境,即小組成員不僅要努力爭取個人目標(biāo)的實現(xiàn),更要幫助小組同伴實現(xiàn)目標(biāo)。他們?yōu)榱死斫夂驼莆找粋€知識點以及最后完成全組的學(xué)習(xí)任務(wù)相互幫助、相互學(xué)習(xí)、共同討論問題、傾聽他人意見、從他人那里學(xué)習(xí)到自己不懂的內(nèi)容、向他人闡述自己的觀點、同他人辯論填補(bǔ)相互間在理解方面的不足。在c語言教學(xué)中,通過教師對實訓(xùn)項目的合理設(shè)計,由組長實施對項目的分工,在分工過程中要根據(jù)學(xué)生的能力水平和個性差異,合理分配模塊,同時注意對學(xué)生編程過程的引導(dǎo),從而達(dá)到總體目標(biāo)。
4 改變傳統(tǒng)教學(xué)內(nèi)容,編寫符合學(xué)生思維規(guī)律的講義
以往的c語言教學(xué)一直偏重語法,教材的知識組織是根據(jù)其語法的難易程度來編排的,不適合培養(yǎng)學(xué)生的程序設(shè)計能力和邏輯思維能力。從而導(dǎo)致學(xué)生能聽懂,但不能解決實際應(yīng)用問題。我們將c語言課程分為兩學(xué)期開設(shè),第一學(xué)期通過若干案例使學(xué)生熟悉c語言的基本語法、積累基本算法、培養(yǎng)邏輯思維能力。第二學(xué)期為C語言項目實訓(xùn)。實訓(xùn)項目為數(shù)據(jù)文件的增、刪、改、查。內(nèi)容涉及排序算法、遞歸算法、指針運(yùn)用、結(jié)構(gòu)體運(yùn)用、文件讀寫、鏈表操作等。訓(xùn)練的能力有需求說明書撰寫能力、溝通能力、自主學(xué)習(xí)能力和編碼測試能力等。同時培養(yǎng)學(xué)生的綜合開發(fā)能力和團(tuán)隊協(xié)作意識,培養(yǎng)學(xué)生的程序員職業(yè)素養(yǎng)。講義的編寫由四個教研室主任牽頭,精心選擇案例,從以傳統(tǒng)的語法講解為主的教學(xué)模式轉(zhuǎn)變?yōu)榘咐虒W(xué)模式,讓學(xué)生通過案例的學(xué)習(xí)自然加深對語法的理解。這種教學(xué)模式符合學(xué)生的思維習(xí)慣和認(rèn)知規(guī)律,從而激發(fā)了學(xué)生的學(xué)習(xí)興趣,也使學(xué)生真正理解學(xué)習(xí)語言的作用是用來解決實際問題的。
5 建立多元評價體系,培養(yǎng)學(xué)生綜合素質(zhì)與創(chuàng)新能力
擯棄一張試卷與一次考試的學(xué)生評價模式,注重對學(xué)生平時表現(xiàn)的記載和在最終成績中所占的比例。學(xué)生的成績由作業(yè)成績、課堂表現(xiàn)、小組答辯成績、創(chuàng)新程度和期末考試成績綜合評定。第一學(xué)期的考核方式為考試,考試形式為開卷,分理論考試和上 機(jī)考試兩部分,成績評定方式為:平時占30%,理論占20%,機(jī)考占50%。突出對學(xué)生實踐能力的考核。采用開卷考試有利于學(xué)生從純粹的語法認(rèn)知,轉(zhuǎn)變?yōu)閷λ惴ǖ姆e累和理解,有利于邏輯編程能力的培養(yǎng)。第二學(xué)期的考核方式為考查,成績評定方式為:平時占30%,期末占70%。期末考核采用小組答辯的形式。根據(jù)小組答辯情況給出組的總體成績,再根據(jù)每位學(xué)生的自身表現(xiàn)和在項目中的貢獻(xiàn),最終給出每位同學(xué)的成績。這樣的考核方式有利于培養(yǎng)學(xué)生的團(tuán)隊協(xié)作能力和溝通能力,貫徹公平性原則。有助于學(xué)生改變學(xué)習(xí)方式和學(xué)習(xí)側(cè)重點,將更多的精力集中于實踐能力的培養(yǎng)。
6 豐富教學(xué)方法和教學(xué)手段,提高教學(xué)效果
聯(lián)系課程實際和學(xué)生現(xiàn)狀,采用多種教學(xué)方法進(jìn)行教學(xué),改變教師講、學(xué)生聽的老模式,組織觀摩,推廣教學(xué)名師的成功經(jīng)驗。在教學(xué)過程中依托多媒體和網(wǎng)絡(luò)技術(shù),運(yùn)用現(xiàn)代化教學(xué)手段,提高授課質(zhì)量。特別是對于難于理解的知識點通過Flas進(jìn)行展示,主要涉及函數(shù)調(diào)用、遞歸方法、指針概念、鏈表建立等。特別注重教師教學(xué)的邏輯性和嚴(yán)密性。將項目實訓(xùn)完全移至實驗室,通過教師的分模塊提示,引導(dǎo)學(xué)生逐步完成程序的編寫。請軟件協(xié)會的優(yōu)秀學(xué)生參與c語言實踐教學(xué)的輔導(dǎo)。一方面提高了實踐教學(xué)的效果,另一方面也培養(yǎng)了軟件協(xié)會學(xué)生的實踐能力和表達(dá)能力。
7 加強(qiáng)校企合作,進(jìn)一步明確學(xué)習(xí)目的
不少學(xué)生反映,c語言已經(jīng)過時,現(xiàn)在已進(jìn)入面向?qū)ο髸r代,C語言的作用己不大,對學(xué)習(xí)本門語言的目的不夠明確。為此,我們邀請企業(yè)資深的工程師,為學(xué)生做講座,探討c語言的相關(guān)領(lǐng)域的應(yīng)用背景,以及企業(yè)對c語言人才的需求與學(xué)校C語言教學(xué)之間的差異,為學(xué)生對c語言的進(jìn)一步學(xué)習(xí)指明了目標(biāo)。如我院與昆山中創(chuàng)集團(tuán)和花橋安博集團(tuán)建立良好的合作關(guān)系,就程序代碼編寫規(guī)范以及C言語實訓(xùn)等內(nèi)容進(jìn)行了廣泛的交流合作。我院引進(jìn)了企業(yè)項目的基本流程,使學(xué)生所學(xué)知識更符合社會的需求。
8 構(gòu)建協(xié)同學(xué)習(xí)情境,建立C語言研究型教學(xué)實驗區(qū)
我院對兩個專業(yè)機(jī)房進(jìn)行了改造,建立c語言研究型教學(xué)實驗區(qū)。將整個機(jī)房分成六個小組,每組兩臺計算機(jī),每組六名同學(xué),為每位同學(xué)設(shè)立了桌卡,選舉組長一名,每組配備黑板一塊,并為整個實驗室配備了資料柜,存放c語言的相關(guān)學(xué)習(xí)材料。從而為同學(xué)之間的協(xié)同學(xué)習(xí)構(gòu)建了良好的環(huán)境。